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