Я пытаюсь изменить строки массива новыми значениями в 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.
Я просто получаю сообщение об ошибке «Не удалось передать входной массив из формы (400) в форму (1000)», когда я добираюсь до Boxfunc в цикле for.