我想计算电子的波函数。因此,我编写了以下代码:
import cmath
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(- np.pi, np.pi, 100, endpoint=True)
t = 0
def Wavefunction(x,t):
return np.abs(cmath.exp(-1j*t)*cmath.cos(x)+cmath.exp(1j*t)*cmath.sin(x))**2
Amplitude = np.vectorize(Wavefunction(x,t))
plt.plot(x, Wahrscheinlichkeit(x,t))
plt.show
启动程序时,显示以下错误:TypeError:只有Size-1数组可以转换为Python Scalars。我已经看到np.vectorize()应该可以解决问题,但是对我来说,它没有用。
感谢您的帮助。PS:请不要害怕这种奇怪的Wavefunction
您接近了:np.vectorize
将一个函数作为参数。因此正确的代码是:
import cmath
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(- np.pi, np.pi, 100, endpoint=True)
t = 0
def Wavefunction(x,t):
return np.abs(cmath.exp(-1j*t)*cmath.cos(x)+cmath.exp(1j*t)*cmath.sin(x))**2
Amplitude = np.vectorize(Wavefunction)
plt.plot(x, Wahrscheinlichkeit(x,t))
plt.show()
通常,np.vectorize
它等效地用作装饰器:
import cmath
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(- np.pi, np.pi, 100, endpoint=True)
t = 0
@np.vectorize
def Wavefunction(x,t):
return np.abs(cmath.exp(-1j*t)*cmath.cos(x)+cmath.exp(1j*t)*cmath.sin(x))**2
plt.plot(x, Wahrscheinlichkeit(x,t))
plt.show()
由于您尝试拨打电话Wavefunction(x,t)
,因此它尝试先将其传递给np.vectorize
。这就是为什么您会遇到相同的错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句