输入
def Gaussan_wave_packet():
quantum_number = 500
x = np.linspace(0,100,1000).astype(complex).reshape(1000,1)
n = np.arange(1,quantum_number+1).reshape(1,500)
x0 = 50, a = 5, l = 1, m = 0.511*10**6, L = x[-1], hbar = 6.58211951*10**(-16)
A = (1/(4*a**2))**(1/4.0)
psi_x0 = (np.exp((-(x - x0)**2)/(4*a**2))*np.exp(1j*l*x)).reshape(len(x),1)
A = ( 1/(np.sqrt(np.trapz((np.conj(psi_x0[:,0])*psi_x0[:,0]), x[:,0]))))
psi_x0_normalized = A*psi_x0[:,0].reshape(1000,1) #(1000,1)
phi = ( np.sqrt( 2/L ) * np.sin( (n*x*np.pi) /L ) ) #(1000,500)
En = ( ( np.power(n,2))*(np.pi**2)*(hbar**2))/(2*m*L**2) #(1,500)
Cn = np.trapz( ( np.conj(phi)*psi_x0_normalized[:,0] ), x[:,0] )
输出
Scalar A: (0.28246850458110645+0j)
Psi0 Normalized: (1000, 1)
Phi: (1000, 500)
En: (1, 500)
/Gaussan_wave_packet", line 48, in Gaussan_wave_packet
Cn = np.trapz( ( np.conj(phi)*psi_x0_normalized[:,0] ), x[:,0] )# Needs to be (1,500)
ValueError: operands could not be broadcast together with shapes (1000,500) (1000,)
我不确定这里出了什么问题。我所有的变量似乎都有正确的维度和适当的值。如输出所示,形状正确,值也正确。我将从MATLAB中的编程问题转移到python中,我不确定这个值(1000,)是从哪里来的,因为它与MATLAB非常不同。我是不是索引不对,按元素乘法,还是我需要一个for循环。我不知道该怎么办。我需要保持身材(1500)。你知道吗
必须在phi和psi\u x0\u归一化值相乘之后应用数组索引。我还使用for循环将Cn转换为正确的形状,并根据需要将其重塑为具有多个列的向量。你知道吗
相关问题 更多 >
编程相关推荐