资源描述:
《龙格库塔积分算法.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、龙格库塔法龙格库塔法是常用于模拟常微分方程的解的重要的一类隐式或显式迭代法。这些技术由数学家C.Runge和M.W.Kutta于1900年左右发明。由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。龙格库塔法是一种在工程上应用广泛的高精度单步算法,可以应用在物理、工程、控制、动力学中,如模糊控制、弹道分析以及分析光纤特性等,在系统仿真中得到广泛应用。龙格库塔法源自于相应的泰勒级数方法,在每一插值节点用泰勒级数展开,其截断误差阶数也是O(hn),根据O(hn)可省略更高阶的导数计算,
2、这种方法可构造任意阶数的龙格库塔法。其中4阶龙格库塔法是最常用的一种方法。因为它相当精确、稳定、容易编程。在计算中一般不必使用高阶方法,因为附加的计算误差可由增加精度来弥补。如果需要较高的精度,可采取减小步长的方法即可。4阶龙格库塔法的精度类似4阶泰勒级数法的精度。1、初值问题对于一阶常微分方程的初值问题y'(x)=f(x,y(x))a≤x≤bya=y0根据常微分方程的理论可知,此初值问题的解在区间[a,b]上存在,且唯一。2、离散化取步长h=(b-a)/n,将区间[a,b]分成n个子区间:a=x
3、04、1)的近似值yn+1。3、Euler法欧拉法虽然精度低,但它是最简单的一种显式单步法,也是龙格库塔法的基础。首先,令yn、yn+1为y(xn)及y(xn+1)的近似值,并且令平均斜率K=f(xn,yn),即以xn点的斜率作为平均斜率K,便得到欧拉公式yn+1=yn+h*f(xn,yn)(3.1)4、改进的欧拉法此种方法是取xn、xn+1两点的斜率的平均值作为平均斜率K,即K=(fxn,yn+fxn+1,yn+1)/2,其中yn、yn+1均为y(xn)以及y(xn+1)的近似值,就得到改进后的欧拉公
5、式yn+1=yn+h2*k1+k2(4.1) 其中k1、k2分别为xn、xn+1两点的斜率值,即k1=f(xn,yn),k2=f(xn+1,yn+1)在上面的(4.1)式中,k2是未知的,采用一种叫预报法的方法来求解。即先用欧拉法求得一个初步的近似值,记作yn+1,称为预报值,预报值yn+1的精度不高,但是可以用它代替k2中的yn+1再直接计算,便可得到校正后的yn+1。欧拉法求得预报值yn+1=yn+h*f(xn,yn),校正yn+1=yn+h2*(fxn,yn+f(xn+1,yn+1))将yn
6、+1带入校正公式可得改进后的欧拉公式yn+1=yn+h2*(fxn,yn+f(xn+1,yn+h*fxn,yn)(4.2)通常写作yn+1=yn+h2*(k1+k2)k1=f(xn,yn)k2=f(xn+1,yn+h*k1)由此可见,为了提高精度,可以多取几点的斜率值作加权平均来得到平均斜率K,这就是龙格库塔法的基本思想。5、局部截断误差初值问题y'(x)=f(x,y(x))a≤x≤bya=y0的单步法可用一般形式表示:yn+1=yn+h*φ(xn,yn,yn+1,h)其中,多元函数φ与f(x,y
7、(x))有关,如果φ中含有yn+1,那么方法是隐式的,若不含yn+1则为显式单步法,所以,显式单步法可以表示为yn+1=yn+h*φ(x,y,h)其中称φ(x,y,h)为增量函数,对欧拉公式有φ(x,y,h)=f(x,y)从x0开始计算,如果考虑每一步产生的误差,直到xn,则误差en=y(xn)-yn,称该方法为在xn点的整体截断误差,分析求解整体截断误差en是复杂的,为此,仅考虑从xn到xn+1的局部情况,并假设之前的计算没有误差,即yxn=yn,则一般显式单步法的局部截断误差可以定义为Tn+1
8、=yxn+1-yn+1=yxn+1-y(xn)-h*φ(xn,y(xn),h)一般,为了求解局部截断误差Tn+1,我们会将yxn+1对在x=xn点做泰勒展开,进行化简。6、龙格库塔法龙格库塔法的基本思想就是用区间上的若干个点的导数y'(x)=f(x,y(x)),将它们做加权平均得到平均斜率K,以提高方法的阶数,即提高方法的精度。一般的显式龙格库塔法可以写成yn+1=yn+h*i=1Lλi*ki其中,k1=fxn,ynk2=fxn+C2*h,yn+C2*h*k1……kn=f(xn+C