Что вызывает эту ошибку (AttributeError: объект 'Mul' не имеет атрибута 'cos') в Python?

Я получаю следующий код ошибки при попытке оценить определенный интеграл в 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 ответ

Ваша проблема с конфликтом пространства имен, здесь

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))
Другие вопросы по тегам