前面我们从数值积分的角度推导出龙格库塔法 数值积分公式的推广:龙格库塔法(一)。
这次详细讨论各类龙格库塔法。
4. 龙格库塔法
标准教科书里通常会直接给出如下数值格式:
称 为在节点 处的级值,由于共有 s 个级值,故称之为 s 级的龙格库塔 (Runge-Kutta) 法,其系数可以写成下面布切尔表的形式
如果系数满足条件 ,即表格主对角线及其右上角的元素全为 0 时,称相应的方法为显式的龙格库塔法,否则称为隐式龙格库塔法。
现在看来,龙格库塔法其实就是对前面我们用数值积分公式推导的单步法的一种自然推广而已!只是将系数作了进一步的抽象化罢了。科学研究经常干这种抽象假设归纳总结的事情,不是么?
这里顺便插一句,龙格库塔生活的那个年代,由于没有计算机,人们基本靠手算,对于提出像前面那样的隐式格式是无法想象甚至是从内心感到害怕的(注:布切尔在其综述论文【1】中使用了``frightening"这个词)。
实际上,前面提到的显式欧拉法就是最简单的龙格库塔法。历史上,大数学家欧拉构造显欧拉法的想法其实非常简单,就是用分片的直线段来逼近真解(细究起来,个人感觉有限元法的最原始思想其实应归功于老祖宗欧拉,哈哈)。可惜精度只有一阶,因此人们希望构造新的精度更高的数值方法。
继欧拉之后,龙格和库塔,分别于1895年及1901年构造了精度更高(2阶到5阶)的显式数值格式,采用了对不同节点处切线斜率的某种加权平均作为下一步“前进方向”(“切线斜率”本质上刻划了方向)的逼近思想。这种精度更高的格式可以看成是对显式欧拉法的升级推广,“龙格库塔法”的名字也由此而来。龙格和库塔给人们提供了构造高精度数值格式的新思路,这个意义是相当重大的。
从欧拉1768年提出折线法到这一想法出现,竟然用了127年!如今看来,从数值积分公式推广和应用的角度,结合对系数的抽象化理解, 岂不是显得更自然、更易于接受么?
阶条件
通常为了便于分析数值方法的阶(特指局部截断误差的阶),我们还需假定: 对
注意,上述假定条件并非