【问题标题】:What causes this error (AttributeError: 'Mul' object has no attribute 'cos') in Python?是什么导致 Python 中出现此错误(AttributeError: 'Mul' object has no attribute 'cos')?
【发布时间】:2015-12-14 22:31:19
【问题描述】:

尝试在 Python 中计算定积分时,我收到以下错误代码。

AttributeError                            Traceback (most recent call last)
<ipython-input-7-2be8718c68ec> in <module>()
      7 x, n = symbols('x n')
      8 
----> 9 f = (cos(n*x))*(x**2-pi**2)^2
     10 integrate(f,(x,-n*pi,n*pi))
     11 

AttributeError: 'Mul' object has no attribute 'cos' 

我在下面复制了我的输入代码。感谢您的帮助。

from pylab import *
from sympy import *
from numpy import *

init_printing(use_unicode=False, wrap_line=False, no_global=True)

x, n = symbols('x n')

f = (cos(n*x))*(x**2-pi**2)^2
integrate(f,(x,-n*pi,n*pi))

【问题讨论】:

  • 你正在用from module import *污染你的命名空间

标签: python sympy integral


【解决方案1】:

你的问题是命名空间冲突,在这里

from sympy import *
from numpy import *

因为numpysympy 都有自己的cos 定义。该错误告诉您Mul 对象(即n*x)没有余弦方法,因为解释器现在混淆了sympynumpy 方法。改为这样做

import pylab as pl
import numpy as np
import sympy as sp

x, n = sp.symbols('x n')
f = (sp.cos(n*x))*(x**2-sp.pi**2)**2
sp.integrate(f,(x,-n*sp.pi,n*sp.pi))

另外请注意,我已将 ^ 更改为 **,因为 ^sympy 中的 Not 运算符。在这里,我假设您需要来自sympy.core.numbers.Pi 的符号Pi,而不是来自numpy 的数字。如果你想要后者,那就这样做

f = (sp.cos(n*x))*(x**2-np.pi**2)**2
sp.integrate(f,(x,-n*np.pi,n*np.pi))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 2022-06-14
    • 2023-02-18
    • 2020-04-02
    • 2019-02-09
    • 2021-03-13
    • 2023-01-16
    相关资源
    最近更新 更多