Я пытаюсь решить систему дифференциальных уравнений с scipy.integrate.solve_ivp
. Система зависит от реальной независимой переменной t и зависимых переменных, c n (t) -и в целом сложные. Загвоздка в том, что решатель всегда застревает, независимо от размера системы (определяется n_max
). Вот установка:
# Constants
from scipy.constants import hbar as h_
n_max = 2
t_max = 1
# The derivative function
def dcdt(t, c):
return (-1.0j/h_)*((V_mat*np.exp(1.0j*w_mat*t)) @ c)
# Initial conditions
c_0 = np.zeros(n_max, dtype = complex)
c_0[0] = 1.0
# Solving the deal
t = np.linspace(0, t_max, 10)
c = solve_ivp(dcdt, [0, t_max], c_0, t_eval = t)
И вот оно, не перестает работать.
Вот примеры матриц V_mat
и w_mat
:
>>> V_mat
array([[1.0000000e-09, 1.8008153e-56],
[1.8008153e-56, 1.0000000e-09]])
>>> w_mat
array([[ 0. , -156123.07053024],
[ 156123.07053024, 0. ]])
Как вы заметите, V_mat
и w_mat
- это двумерные квадратные матрицы размерности n_max
.
Проблема связана с большими / очень маленькими значениями в матрицах? Или это как-то связано со сложными ценностями?