1 引言
龙格-库塔法(Runge-Kutta)是一种工程上应用广泛的、求解常微分方程数值解的单步算法,此算法基本思想为利用求解区间内一些特殊点的一阶导数值的线性组合来代替某点处的n阶导数值,这样便可以仅通过一系列一阶导数值来得到某点幂级数展开的预测效果[1]。显而易见,龙格-库塔法精度相比于欧拉法更高,因此其实现原理也较为复杂。
2 龙格-库塔法的提出与发展
继大数学家欧拉于1768年提出用离散方法求解连续微分方程后,德国科学家卡尔·龙格和马丁·威尔海姆·库塔分别于1895年和1901年构造了精度更高(二阶到五阶)的显式数值格式,采用了对不同节点处切线斜率的某种加权平均作为下一步“前进方向”的逼近思想,“龙格-库塔法”的名称也由此而来[2][3]。这种精度更高的格式可以看作是对显式欧拉法的升级推广。虽然龙格和库塔没有超越欧拉思想的理论范畴,但给后人提供了构造高精度数值格式的新思路[4-6],因此,从这一点上来讲其具有相当重大的历史意义。
3 龙格-库塔法的原理及算法推导过程
(1) 第一阶
考虑这样一个数学问题:
(1)
使用欧拉法求解上式(1),可得下式:
(2)
如上图所示,f(x,y)从变为xn+1时增加量为k1,公式如下:
(3)
(2) 第二阶
在第一阶的基础上,利用k1的值求从点x=xn+h/2,y=k1/2开始的斜率,如下所示:
(4)
若从初始值点(xn,yn)以此斜率画线时,f(x,y)的增量k2为:
(5)
(3) 第三阶
接下来,在第二阶的基础上,利用k2的值求从点x=xn+h/2,y=k2/2开始的斜率,如下所示:
(6)
从初始值点(xn,yn)以此斜率画线时,f(x,y)的增量k3为:
(7)
(4) 第四阶
最后,利用k3的值,令k4为从初始值点(xn,yn)画线时f(x,y)的增量:
(8)
(5) 四阶精度龙格-库塔法
经过上述一系列推导,最终的增量k是通过取k4至k4的加权平均值来确定,如下所示:
(9)
之所以要对k2和k3进行两次加权,是因为一般情况下认为k2和k3的值更接近真实值。由此得到四阶龙格-库塔法的表达式:
(10)
4 龙格-库塔法在航空航天领域的应用
(1)固体发动机绝热层烧蚀计算:在固体发动机内绝热材料烧蚀计算中,可以使用龙格库塔方法求解绝热层表面层流边界层内无因次温度分布的数值解。
(2)飞行器姿态参数计算:在航天器姿态控制系统中,龙格库塔法可以用来计算航天器的姿态角、角速度和控制力矩的变化,实现对航天器姿态的精确控制。
(3)卫星扰动运动模拟:龙格库塔算法可以用来求解卫星在扰动环境中的位置和速度,从而更准确地预测卫星的轨道和姿态,并为其控制和导航提供重要的参考。
(4)无人机对抗动力学模型构建:基于龙格库塔算法实现的2v2无人机对抗动力学模型能够模拟两架无人机之间的追逐和拦截过程,并可以用于研究无人机编队控制、路径规划和决策等问题。
为对龙格-库塔法求解精度进行验证,以某一水平圆管(管径为0.2m)内充分发展的定常层流过程为例,不可压缩流体在管内沿轴向流动,其黏性系数为Pa·S,假设流动处于充分发展区域,沿轴向的压降=1.0MPa,分别采用解析法、欧拉法和龙格-库塔法计算得到管内流体的速度分布。
管内流速分布
层流状态下管内流体速度分布曲线为抛物线形式,公式如下:
(11)
将黏性系数和压降代入后化简如下:
(12)
对上式分别采用直接解法、欧拉法和龙格-库塔法进行求解,流速结果对比如下:
从上表可以看到,相比于欧拉法,龙格-库塔方法的计算误差明显更小。
5 结论
本文首先介绍了龙格-库塔方法的发展历史和公式构造过程,在此基础上通过具体算例验证了四阶龙格-库塔法的求解精度。但是,由于龙格-库塔方法的推导基于泰勒展开方法,因此它要求所求的解具有较好的光滑性,如果解的光滑性差,那么,使用四阶龙格一库塔方法求得的数值解,其精度可能反而不如改进的欧拉法。在实际计算时,应当针对问题的具体特点选择合适的算法。
参考文献
[1] 李荣华,刘播.微分方程数值解法[M].北京:高等教育出版社,2009:11-14.
[2] 李云飞.几类求解分数阶微分方程的Runge-Kutta方法[D].湘潭:湘潭大学,2010.
[3] 田献珍,孙立强,覃柏英,等.非线性分数阶常微分方程Euler方法的收敛性与稳定性[J].高等学校计算数学学报,2019,41(1):15-26.
[4] 何汉林,李薇,王炜.数值计算方法[M].北京:科学出版社,2016:2.
[5] 朱瑞,张根根,肖飞雁,等.求解分数阶延迟微分方程的卷积Runge-Kutta方法[J].应用数学,2019,32(3):643-650.
[6] 张应洪,刘雪林,施芳,等.非线性耦合分数阶常微分方程组的Runge-Kutta法[J].贵州师范大学学报,2024,04:1-8.