Python 2.7 属性错误:';Mul&x27;对象没有属性';评估';

Python 2.7 属性错误:';Mul&x27;对象没有属性';评估';,python-2.7,object,attributes,eval,sympy,Python 2.7,Object,Attributes,Eval,Sympy,在下面的代码中,计算量子谐振子的本征态,mr和gaussq的乘积等于基态,我试图得到本征态,并绘制一个包含每个子图的图 但是,运行代码会返回: *for i in xx: rePsi.eval(i) AttributeError: 'Mul' object has no attribute 'eval'* 代码示例: import numpy as np import matplotlib.pylab as plt import sympy as sym from math import *

在下面的代码中,计算量子谐振子的本征态,mr和gaussq的乘积等于基态,我试图得到本征态,并绘制一个包含每个子图的图

但是,运行代码会返回:

*for i in xx: rePsi.eval(i)
AttributeError: 'Mul' object has no attribute 'eval'*
代码示例:

import numpy as np
import matplotlib.pylab as plt
import sympy as sym
from math import *

w=1
m=1
hbar=1
x = sym.symbols ('x')
a=-1
b=1
phi_n=0
psi=0
plt.ylim(-1,1 )
plt.xlim(-3,3)

print('give me the number of states')
nn = int(input())
if (nn<0):
    print 'must be >=0\n'
if (nn>=0):
    print('time to evaluate')
    t = float(input())
    if (t<0):
        print 'Time must be >=0'

print '   '

mr = float((m*w/(hbar*pi))**0.25)
gaussq = sym.exp(-m*w*x**2/(2*hbar))

fig = [0 for i in range(nn)]
fig1 = plt.figure(1)

xx = np.arange(-3., 3.,0.1)
for n in range (0,nn,2):
    H_root = sym.sqrt(1/(2**n*float(sym.factorial(n))))
    Hermite = (-1)**n*sym.exp(m*w*x**2/hbar)*sym.diff(sym.exp(-m*w*x**2/hbar),x,n)
    Energy = hbar*w*(n+0.5)
    phi_n = sym.simplify(H_root*mr*gaussq*Hermite)
    arg_int = sym.simplify(phi_n*gaussq*mr)
    c_n = sym.simplify(sym.integrate(arg_int, (x,a,b)))
    psi_n = c_n*phi_n*sym.exp(-1j*w*t*(n+0.5))
    psi_n_re = sym.re(psi_n)
    psi_n_im = sym.im(psi_n)
    psi += sym.simplify(psi_n)
    rePsi = sym.re(psi) 
    imPsi = sym.im(psi)
    print type (rePsi)
    print type (imPsi)
    for i in xx: rePsi.eval(i)
    for i in xx: imPsi.eval(i)
    list_rePsi= rePsi
    list_imPsi= imPsi
    plt.subplot(nn, 1, (n+2)/2)
    plt.plot(xx,list_repsi)
    plt.plot(xx,list_impsi)

plt.show()
print '\n'+str(psi)
将numpy导入为np
将matplotlib.pylab作为plt导入
将sympy作为sym导入
从数学导入*
w=1
m=1
hbar=1
x=符号('x')
a=-1
b=1
φn=0
磅/平方英寸=0
plt.ylim(-1,1)
plt.xlim(-3,3)
打印('给我州数')
nn=int(输入())
如果(nn=0):
打印('评估时间')
t=浮点(输入()

如果(t您可能打算创建一个列表,其中用xx中的值替换符号x?您可以尝试
list_rePsi=[rePsi.subs(x,i)for i in xx]
但是Python是区分大小写的,所以一定要绘制
list_rePsi
而不是
list_rePsi

这样,一个对象没有属性
eval
。是什么让你认为它应该有这个属性。也许你在想
evalf
?我不是专家,因为我在寻求帮助,是的,我已经尝试过了evalf,但它不起作用