Невозможно изменить значение определенных частей массива - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь изменить строки массива новыми значениями в 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.

1 Ответ

1 голос
/ 29 марта 2019

Есть проблема с массивом x, должно быть x = np.linspace(x0, L, Nx), тогда ваш код работает.Или вы можете определить Boxfunc = np.zeros(shape = (Nx, N)).Проблема от формы между x и Boxfunc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...