时间依赖性未知时的龙格-库塔

计算科学 龙格库塔
2021-11-27 23:17:26

作为物理计算方法类的一个简单练习,我们学习了如何实现 RK4(Runge-Kutta 4 阶)算法以实现非常简单的指数衰减。例如,函数 y(t) 由

y 和 y 点定义

基于来自大多数来源的 RK4 定义,特别是在这种情况下 Wikipedia,

维基百科 rk4 值

对于 t的不同增量,确定 4 个值k 1、k 2、k 3 和k 4 都取决于函数f( t ,y)

y 点 = f(t, y)

但是,由于我不知道任意时间的y(t)(这就是 RK4 近似值试图计算的),所以我不能k 2的维基百科符号。

我的问题是:当f(t, y)的时间依赖性不知道确切的形式时,是否可以只所有k n值使用欧拉的近似f(t, y)方法而不是只是k₁

1个回答

这正是 Runge-Kutta 所做的:您有一个微分方程 y' = f (y, t),然后您计算这些值并将它们代入 Runge-Kutta 公式。当然,您并不确切知道 y (t),这就是公式为您生成的。

你说“我不能像维基百科的 k2 符号那样轻易地得到 f(t+h/2, y+k1/2)”。当然可以。您计算 t + h/2, y + k1/2 并使用结果。这就是公式所说的。它没有说“使用 y(t)”。它说“使用 y + k1/2”。你完全想多了。

PS。让你的手指远离欧拉近似。Runge-Kutta 公式中的系数经过非常非常巧妙的计算,可以为您提供最佳结果。如果您试图以某种方式将欧拉近似值放在那里而弄乱了它,那么您只会弄乱它并完全破坏您的精度。