¿Qué causa este error (AttributeError: el objeto ‘Mul’ no tiene atributo ‘cos’) en Python?

Recibo el siguiente código de error cuando bash evaluar una integral definida en Python.

AttributeError Traceback (most recent call last)  in () 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' 

He copiado mi código de entrada a continuación. Gracias por cualquier ayuda.

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

Tu problema es con el choque de espacio de nombres, aquí.

 from sympy import * from numpy import * 

Dado que tanto numpy como sympy tienen su propia definición de cos . El error le indica que el objeto Mul (que es n*x ) no tiene un método de coseno, ya que el intérprete ahora está confundido entre los métodos sympy y numpy . Haz esto en vez

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

También tenga en cuenta que he cambiado ^ a ** ya que ^ es el operador Not en sympy . Aquí, sympy.core.numbers.Pi que necesita el Pi simbólico de sympy.core.numbers.Pi y no el numérico de numpy . Si quieres lo último, haz esto.

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