在尝试评估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))
答案 0 :(得分:9)
您的问题在于命名空间冲突,此处
from sympy import *
from numpy import *
由于numpy
和sympy
都有自己的cos
定义。该错误告诉您Mul
对象(n*x
)没有余弦方法,因为解释器现在在sympy
和numpy
方法之间混淆了。这样做
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))