Вычисление градиента с использованием np.gradient для квантово-механической задачи - PullRequest
2 голосов
/ 06 марта 2020

Я пытаюсь вычислить энергию основного состояния, связанную с нелинейным уравнением Шредингера, без члена взаимодействия и с внешним потенциалом, заданным потенциалом 1-D гармоники c. Выражение для энергии включает в себя квадрат абсолютного значения градиента волновой функции, и вот где я застрял.

Проведя некоторое исследование по inte rnet, я обнаружил (по крайней мере, я полагаю), что np.gradient может выполнить эту работу. Тем не менее, для моей текущей проблемы, она не показала ничего в том смысле, что когда я планирую свой вклад, он возвращает мне постоянную функцию, равную нулю. Таким образом, я думаю, что я делаю что-то не так.

Мой код выглядит следующим образом:

import matplotlib.pyplot as plt        
import numpy as np   
import h5py as h5    
from scipy import integrate

data = h5.File('groundstate.h5', 'r')   
phireal = data['3']['phireal']   
phiimag = data['3']['phiimag']   
lattice = data['3']['y']   
time    = data['3']['t']     

distr = np.power(phireal[:,:],2) + np.power(phiimag[:,:],2)

egradi = np.gradient(phiimag, axis = 0)   
egradr = np.gradient(phireal, axis = 0)   
V = (1/2) * np.power(lattice,2)

intergy = (1/2) * np.power(egradr,2) + V * distr   
energy = integrate.simps(intergy, lattice, 0.1171875)   

fig = plt.figure()   
ax  = fig.add_subplot(111)   
ax.plot(time, energy)   
plt.ylabel('E')   
plt.xlabel('t')   

ax.set_ylim(0, 3)   
ax.set_xlim(0, 10)    

plt.show()

Данные, хранящиеся в файле groundstate.h5, в основном относятся к сложной и реальной части Полученная волновая функция развивается в воображаемом времени.

Здесь я предоставляю ссылку для входного файла h5: https://drive.google.com/open?id=1FPM_sdpfQSOxeEikGuQyO4kfwH88wpcZ

В графике энергии, я ожидаю найти для более высоких значений t (время) значение 1/2, которое является энергией основного состояния 1-D генератора квантовых гармоник c. Тем не менее, я получаю другое значение, 1/4, и поэтому я считаю, что это из-за члена kineti c, в данном случае, заданного градиентом волновой функции.

введите описание изображения здесь

Может кто-нибудь сказать мне, если это правильный способ вычисления градиента? Заранее спасибо.

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