У меня возникла проблема с решением системы дифференциальных уравнений с использованием алгоритма Рунге-Кутта. До сих пор я переписал УЧП второго порядка в систему двух связанных уравнений, где
f(L1,L2) = L2
g(L1,L2) = A*(B*L1-C*L2-D)
- два уравнения, а A, B, C и D - константы. Чтобы получить значение для следующего шага, я проделал следующее для каждого временного шага dt:
k1 = f(L1,L2)
l1 = g(L1,L2)
k2 = f(L1 + 0.5 * dt * k1,L2 + 0.5 * dt * l1 )
l2 = g(L1 + 0.5 * dt * k1,L2 + 0.5 * dt * l1 )
k3 = f(L1 + 0.5 * dt * k2,L2 + 0.5 * dt * l2 )
l3 = g(L1 + 0.5 * dt * k2, L2 + 0.5 * dt * l2 )
k4 = f(L1 + dt * k1,L2 + dt * l1 )
l4 = g(L1 + dt * k1,L2 + dt * l1 )
Где я использую значения для L1 и L2 текущего временного шага и итеративно вычисляю коэффициенты.
В результате я получаю L1 и L2, суммируя и взвешивая коэффициенты в конце. Моя проблема в том, что весь алгоритм становится нестабильным после 4 временных шагов.
Кто-нибудь знает, правильна ли реализация технически? Спасибо!