Python 2.7 属性错误:';Mul&x27;对象没有属性';评估';
在下面的代码中,计算量子谐振子的本征态,mr和gaussq的乘积等于基态,我试图得到本征态,并绘制一个包含每个子图的图 但是,运行代码会返回: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 *
*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,但它不起作用