导致此错误的原因(AttributeError:' Mul'对象在Python中没有属性' cos')?

时间:2015-09-17 22:10:53

标签: python sympy integral

在尝试评估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))

1 个答案:

答案 0 :(得分:9)

您的问题在于命名空间冲突,此处

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))

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

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