我正在尝试用for loop
中的新值更改数组的行,但无法使其正常工作。
问题与量子物理学中波包的传播有关。
我曾经尝试使用numpy.dot()
函数,但是那没用,我尝试了一个更简单的for loop
,可以起作用。
import numpy as np
sig = 10**(-8)
x0 = 50*10**(-9)
L = 200*10**(-9)
N = 400
Nx = 1000
x = np.linspace(x0, L, N)
expsig = np.exp(-((1/2)*(x-x0)**2)/(sig**2))
expimg = np.exp(1j*(x-x0))
Phi = (1/(np.pi**(1/4)*np.sqrt(sig))*expsig*expimg)
Boxfunc = np.zeros(shape = (N, Nx))
for i in range(0, N):
SINnpi = np.sin(((i*np.pi)/L)*x)
Boxfunc[i,:] = np.sqrt(2/L)*SINnpi
Y = Boxfunc[i,:]*Phi
我希望输出是一个400x1000的数组,其中包含通过Phi和Boxfunc的乘法运算得到的新值。
当我进入for循环中的Boxfunc时,我只收到错误消息“无法将输入数组从形状(400)广播到形状(1000)”。
答案 0 :(得分:1)
数组x
存在问题,应该为x = np.linspace(x0, L, Nx)
,然后您的代码才能正常工作。
或者,您可以定义Boxfunc = np.zeros(shape = (Nx, N))
。问题出在x
和Boxfunc
之间。