我有一个使用 Runge Kutta 算法求解微分方程组的问题。到目前为止,我已经将二阶 PDE 重写为一组两个耦合方程,其中
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 个时间步后变得不稳定。
有人知道实现在技术上是否正确吗?谢谢!