本文主要是介绍龙格库塔法c语言,龙格——库塔(Rungekutta)法求解常微分方程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.龙格库塔法的基本原理
该算法是构建在数学支持的基础之上的。对于一阶精度的拉格朗日中值定理有:
对于微分方程
y'=f(x,y)
y(n+1)=y(n)+h*K1
K1=f(xn,yn)
当用点xn处的斜率近似值K1与右端点xn+1处的斜率K2的算术平均值作为平均斜率K*的近似值,那么就会得到二阶精度的改进拉格朗日中值定理:
y(n+1)=y(n)+[h*( K1+ K2)/2]
K1=f(xn,yn)
K2=f(x(n)+h,y(n)+h*K1)
依次类推,如果在区间[xn,xn+1]内多预估几个点上的斜率值K1、K2、……Km,并用他们的加权平均数作为平均斜率K*的近似值,显然能构造出具有很高精度的高阶计算公式。经数学推导、求解,可以得出四阶龙格-库塔公式,也就是在工程中应用广泛的经典龙格-库塔算法:
y(n+1)=y(n)+h*( K1+ 2*K2 +2*K3+ K4)/6
K1=f(x(n),y(n))
K2=f(x(n)+h/2,y(n)+h*K1/2)
K3=f(x(n)+h/2,y(n)+h*K2/2)
K4=f(x(n)+h,y(n)+h*K3)
注:
通常所说的龙格-库塔法是指四阶而言的,我们可以仿二阶、三阶的情形推导出常用的标准四阶龙格-库塔法公式
2.龙格-库塔(Runge-Kutta)方法
经典四阶法
在各种龙格-库塔法当中有一个方法十分常用,以至于经常被称为“RK4”或者就是“龙格-库塔法”。该方法主要是在已知方程导数和初值信息,利用计算机仿真时应用,省去求解微分方程的复杂过程。[1]
令初值问题表述如下。
image
则,对于该问题的RK4由如下方程给出:
image
其中
这篇关于龙格库塔法c语言,龙格——库塔(Rungekutta)法求解常微分方程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!