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

BMi*_*Mid 5 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' 
Run Code Online (Sandbox Code Playgroud)

我已经复制了下面的输入代码.谢谢你的帮助.

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))
Run Code Online (Sandbox Code Playgroud)

小智 10

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

from sympy import *
from numpy import *
Run Code Online (Sandbox Code Playgroud)

由于两者都有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))
Run Code Online (Sandbox Code Playgroud)

另外请注意,我已经改变^,以**作为^是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))
Run Code Online (Sandbox Code Playgroud)