龙格-库塔(Runge-Kutta)方法数学原理及实现

Posted SuPhoebe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了龙格-库塔(Runge-Kutta)方法数学原理及实现相关的知识,希望对你有一定的参考价值。

龙格-库塔(Runge-Kutta)方法

龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。该算法是构建在数学支持的基础之上的。


对于一阶精度的欧拉公式有:

yi+1=yi+hki
其中 h 为步长,则yi+1的表达式与 y(xi+1) 的Taylor展开式的前两项完全相同,即 局部截断误差 O(h2)
当用点 xi 处的斜率近似值 k1 与右端点 xi+1 处的斜率 k2 的算术平均值作为平均斜率 k 的近似值,那么就会得到二阶精度的改进欧拉公式:
yi+1=yi+h(k1+k2)
其中 k1=f(xi,yi) k2=f(xi+h,yi+hk1)
依次类推,如果在区间 [xi,xi+1] 内多预估几个店上的斜率值 k1,k2,,km ,并用他们的加权平均数作为平均斜率 k 的近似值,显然能够构造出具有很高精度的高阶计数公式。
上述两组公式在形式删过的共同点:都是用 f(x,y) 在某些点上值得线性组合得出 y(xi+1) 的近似值 yi+1 ,且增加计算的次数,可以提高截断误差的阶,他们的误差估计可以用 f(x,y) xi 处的Taylor展开来估计。


于是可考虑用函数 f(x,y) 在若干点上的函数值的线性组合老构造金斯公式,构造时要求近似公式在 f(xi,yi) 处的Taylor展开式与解 y(x) xi 处的Taylor展开式的前面几项重合,从而使金斯公式达到所需要的阶数。既避免求高阶导数,又提高了计算方法精度的阶数。或者说,在 [xi,xi+1] 这一步内计算多个点的斜率值,若够将其进行加权平均作为平均斜率,则可构造出更高精度的计算格式,这就是龙格-库塔(Runge-Kutta)方法。
一般的龙格-库塔法的形式为


称为P阶龙格-库塔方法。
其中 ai,bij,cj 为待定参数,要求上式 yi+1 在点 (xi,yi)龙格库塔(Runge-Kutta)法求四元数微分方程

四阶龙格库塔(Runge-Kutta)求解微分方程-多种编程语言

Runge-Kutta龙格-库塔法求解微分方程matlab仿真

基于龙格-库塔法Runge-Kutta的常微分方程的求解matlab仿真

四阶龙格库塔(Runge-Kutta)求解微分方程-多种编程语言

matlab代码实现四阶龙格库塔求解微分方程