2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Численное решение уравнения Шредингера, H=H(t)
Сообщение20.12.2014, 16:09 
Аватара пользователя
Добрый день!

Возникла такая задача. Гамильтониан для системы с конечным числом степеней свободы (2 и больше) зависит от времени.
$\hat H = \hat H(t)$
Это означает, что и собственные функции и собственные значения также зависят от времени:
$\hat H(t) \varphi_n(t) = E_n(t)\varphi_n(t)$ (1)

Нужно численно найти решение нестационарного уравнения Шредингера:

$i\dot\psi(t) = \hat H(t)\psi(t)$ (2)

Очевидно, что это решение может быть, как обычно, представлено в виде суперпозиции собственных функций (1) для кажого момента времени:

$\psi(t) = \sum_n c_n(t)\varphi_n(t)$

Численное решение (1) трудности не представляет - время тут просто параметр, одна строчка в Python и мы получаем набор собственных векторов и собственных значений для заданного $t$. И таким образом в итоге имеем систему дифференциальных уравнений для величин $ c_n(t)$.

Я это все вручную программирую на Python, но формулы получаются большие, если использовать не наивный метод Эйлера, а модифицированный или Рунге-Кутта. И к тому же, я не контролирую этап решения задачи на собственные значения (1), а здесь важен тот порядок, в котором собственные значения и вектора выдаются встроенной функцией. Дабы не было на каких то шагах перескоков и перепутывания.

Вопрос такой: а есть ли уже готовые пакеты для Python, которые решают поставленную задачу?

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group