并行算法3-4阶龙格库塔法
四阶龙格—库塔法的原理及其应用

《四阶龙格—库塔法的原理及其应用》
龙格—库塔法(又称龙格库塔法)是由一系列有限的、独立的可能解组成的无穷序列,这些解中每个都与原来的数列相差一个常数。
它是20世纪30年代由匈牙利著名数学家龙格和库塔提出的,故得此名。
1.它的基本思想是:在n 阶方阵M 上定义一个函数,使得当n 趋于无穷时,它在m 中所表示的数值为M 的某种特征值,从而构造出一族具有某种特性的可计算函数f (x)= Mx+ C (其中C 为任意正整数)。
例如,若f (x)=(a-1) x+ C,则称之为(a-1) x 的龙格—库塔法。
2.它的应用很广泛,可以求解各类问题,且能将大量的未知数变换成少数几个已知数,因此它是近似计算的一种重要工具。
3.
它的优点主要有:(1)可以将多项式或不等式化成比较简单的形式;(2)对于同一问题可以用不同的方法来解决,并取得同样的结果;(3)适合处理高次多项式或者不等式,尤其适合处理多元函数的二次型。
matlab经典的4级4阶runge kutta法

MATLAB是一种用于算法开发、数据分析、可视化和数值计算的高级技术计算语言和交互式环境。
作为一个强大的工具,MATLAB提供了许多数值计算方法,其中4级4阶Runge-Kutta方法就是其中之一。
1. Runge-Kutta方法简介Runge-Kutta方法是求解常微分方程(ODE)的数值方法之一。
在MATLAB中,用户可以使用内置的ode45函数来调用4级4阶Runge-Kutta方法。
具体来说,4级4阶Runge-Kutta方法是一种单步迭代方法,通过在每个步骤中计算斜率来逐步逼近解析解。
它的优点是数值稳定性好,适用于多种类型的微分方程。
2. Runge-Kutta方法的公式4级4阶Runge-Kutta方法的一般形式如下:$$k_1 = hf(t_n, y_n)$$$$k_2 = hf(t_n + \frac{1}{2}h, y_n + \frac{1}{2}k_1)$$$$k_3 = hf(t_n + \frac{1}{2}h, y_n + \frac{1}{2}k_2)$$$$k_4 = hf(t_n + h, y_n + k_3)$$$$y_{n+1} = y_n + \frac{1}{6}(k_1 + 2k_2 + 2k_3 + k_4)$$其中,$t_n$是当前的独立变量值,$y_n$是当前的解向量,h是步长,$f(t_n, y_n)$是给定点$(t_n, y_n)$处的斜率。
通过不断迭代上述公式,可以逐步求解微分方程的数值解。
3. MATLAB中的4级4阶Runge-Kutta方法的应用在MATLAB中,用户可以使用ode45函数调用4级4阶Runge-Kutta方法来求解常微分方程。
使用ode45函数的基本语法如下:```matlab[t, y] = ode45(odefun, tspan, y0)```其中,odefun是用户定义的ODE函数句柄,tspan指定了求解的时间范围,y0是初始条件。
四阶龙格库塔法(Runge-Kutta)求解微分方程

四阶龙格库塔法(Runge-Kutta )求解微分方程张晓颖(天津大学 材料学院 学号:1012208027)1 引言计算传热学中通常需要求解常微分方程。
这类问题的简单形式如下:{),(')(00y x f y y x y == (1)虽然求解常微分方程有各种各样的解析方法,但解析方法只能用来求解一些特殊类型的方程,实际问题中的多数微分方程需要采用数值解法求解。
初值问题(1)的数值解法有个基本特点,它们采取“步进式”,即求解过程顺着节点排序一步一步向前推进。
这类算法是要给出用已知信息y n 、 y n −i ……计算y n +1的递推公式即可。
2 龙格库塔法(Runge-Kutta )介绍假设对于初值问题(1)有解 y = y (x ) ,用 Taylor 展开有:......)(!3)(!2)()()(321+'''+''+'+=+n n n n n x y h x y h x y h x y x y (2) 龙格库塔法(Runge-Kutta )实质上是间接的使用 Taylor 级数法的一种方法。
对于差商hx y x y n n )()(1-+,根据微分中值定理,存在 0 < θ < 1 ,使得:)()()(1h x y hx y x y n n θ+'=-+ (3)于是对于 y = y (x ) ,可得到:))(,()()(1h x y h x hf x y x y n n n n θθ+++=+ (4)设))(,(*h x y h x f K n n θθ++=,为区间 [x n , x n +1 ] 上的平均斜率。
四阶龙格库塔格式中的*K 由下式计算得到:⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧++=++=++==++++=+),()2,2()2,2(),()22(6342312143211hK y h x f K K h y h x f K K h y h x f K y x f K K K K K h y y n n n n nn n n n n (5) 四阶龙格库塔法(Runge-Kutta )的每一步需要四次计算函数值f ,其截断误差更低,计算的精度更高。
《龙格-库塔方法》课件

适用于求解一般和刚性常微分方程,并且具有较好的稳定性和收敛性。
龙格-库塔方法的原理
1
基本思路
通过将微分方程转化为差分方程,使用逼近公式计算数值解。
2
推导过程
使用泰勒级数展开和积分逼近,推导出不同阶次的龙格-库塔方法公式。
龙格-库塔方法的算法流程
1
步骤分解
包括选择步长、计算斜率、更新数值、迭代等一系列操作。
《龙格-库塔方法》PPT课 件
欢迎大家来到本次的PPT课件《龙格-库塔方法》。在本课程中,我们将一起 探索这一数值计算方法的原理、算法流程、应用领域以及注意事项。
什么是龙格-库塔方法?法。
特点
通过多步骤迭代计算,可以得到精确性较高的数值解。
2
具体实现过程
将算法流程转化为编程语言中的相应代码实现。
图解龙格-库塔方法
龙格-库塔方法示意图
图中展示了使用龙格-库塔方法进行迭代计算的示意 图。
对比其他数值方法的表现
通过与其他数值方法的比较,可以更好地理解龙格库塔方法的优势。
龙格-库塔方法的应用领域
常见应用范围
广泛应用于科学研究、工程计算、物理模拟等领域。
实际计算案例
通过实际案例,展示龙格-库塔方法在解决实际问题中的应用。
注意事项
1 龙格-库塔方法的收敛性和稳定性
在使用龙格-库塔方法时,需要注意数值解的收敛性和算法的稳定性。
2 常见误差和偏差的处理方法
介绍常见的误差和偏差来源,并提供相应的处理方法。
总结
龙格-库塔方法的优势和不足
总结龙格-库塔方法的优点和局限性,指出其适 用性和改进空间。
对未来数值计算的展望
展望未来龙格-库塔方法在数值计算领域的发展 和应用前景。
龙格库塔方法

• 可以通过检查步长折半前后两次计
算结果的偏差
=
(h)
y2 n1
y(h) n1
变步长方
来判断所选取的步长是否合法适
(1)对于给定的精度,如果 ,则反复将步长折半 进行计算直至 为止,这时取折半以后的“ 新值” 作为结果;
四阶RungeKutta方法
这样,下一个值(yn+1)由现在的值(yn)加上时间间隔 (h)和一个估算的斜率的乘积 决定。该斜率是以下斜率的加权平均:
k1是时间段开始时的斜率; k2是时间段中点的斜率,通过欧拉法采用斜率 k1 来 决定 y在点 tn + h/2的值; k3也是中点的斜率,但是这次采用斜率 k2决定 y值; k4是时间段终点的斜率,其 y值用 k3 决定。 当四个斜率取平均时,中点的斜率有更大的权值:
75
0.0033
误差 0.45e-4 0.17e-4 0.15e-4 0.48e-4 0.25e-4 0.55e-4 0.14e-4
y(xn) 1.0954 1.1832 1.2649 1.3416 1.4142 1.4832 1.5492
改进Euler法一步需要计算两个函数值 (h=0.1) 四阶Runge-Kutta方法一步需要计算四 个函数值(h=0.2) 总计算量大致相当,但四阶RungeKutta方法精度更高
设从节点xn出发,先以h为步长求出一个近似值,记为yn(h)1 因为经典格式的局部截断误差为O(h5),因此有
y(xn+1)-y(nh)1 Ch5 其中C与y(5)(x)在[xn, xn1]内的值有关
将步长折半,即取
h 2
为步长从xn跨两步到xn+1,求得一个近似值yn( h21)
龙格-库塔方法-文档资料

c3a 2b32
c3a3 1
6
; 2
O (h4)
常见的2种三阶方法:
库塔三阶方法
h yn1yn6(k14k2k3)
k1
f(xn,yn);
k2
hh f(xn2,yn2k1)
k 3 f(x n h ,y n h k 1 2 h k 2 ) •5
四级方法:N = 4
局部截断误差 O ( h 5 )
可见误差随着 x n 的增加呈指数函数递减
当 f y 0 时,微分方程是不稳定的; 而 f y 0 时,微分方程是稳定的。
上面讨论的稳定性,与数值方法和方程中 f 有关
•21
实验方程: y y C ,R e () 0
D e f 3 对单步法 yn 1ynh(xn,yn,h )应用实验方程,
e n 1 e n h [ ( x n ,y ( x n ) , h ) ( x n ,y n , h ) ] T n 1
•15
因为单步法是 p 阶的:h0,0hh0满足|Tn1|Chp1
|e n 1| |e n| h L |e n| C h p 1|en |
其中 1hL,C hp1
•18
三、绝对稳定性 /*Absolute Stibility*/ 计算过程中产生的舍入误差对计算结果的影响
首先以Euler公式为例,来讨论一下舍入误差的传播:
yn1ynhf(xn,yn)
设实际计算得到的点 x n 的近似函数值为 yn yn n,
其中 y n 为精确值, n 为误差
yn1ynhf(xn,yn)
通过适当选取参数 1,2和 p 的值,使得公式具有 2阶精度!!
•3
由泰勒公式展开,要使公式具有 2 阶精度,只需
龙格库塔法介绍

h 0.005稳定.
2) 改进欧拉法(预测 — 校正,即二阶R K法):
yn
1
yn
h
k1 2
k2 2
,
k1
f (xn, yn ) yn,
k2 f (xn h, yn hk1) ( yn hyn ),
即yn1 故
yn
当初值准确即e0 0时,整体误差为en O(h p ).
证明
考察单步法的收敛性归结为验证增量函数(x, y,h)是否
满足Lipschitz条件.
欧拉法 : (x, y,h) f (x, y),L L.
改进的欧拉法:
yn1
yn
h[ 2
f
(xn, yn )
f
( xn 1,
xn
f
( x,
y ( x))dx
r
h ci
i 1
f
( xn
ih,
y ( xn
ih)).
yn1 yn h(xn, yn, h),
(3.4)
其中
r
(xn, yn, h) ciki ,
(3.5)
i 1
k1 f (xn, yn ),
欧拉法r 1, p 1.改进 欧拉法r 2, p 2.
k1)
k3)
k3 f (xn h, yn hk1 2hk2 )
称为库塔三阶方法.
阶数p和段数r(计算函数值次数)的关系
r12 p1 2
3 4 5 6 7 r≥8 3 4 4 5 6 r-2
常用的经典四阶龙格 库塔方法:
四阶龙格-库塔方法的程序设计与应用

—科教导刊(电子版)·2019年第24期/8月(下)—259四阶龙格-库塔方法的程序设计与应用罗丽珍吴庆军(玉林师范学院数学与统计学院广西·玉林537000)摘要本文通过介绍四阶龙格-库塔方法,通过预报斜率和泰勒展开式推导出龙格—库塔格式。
了解它的基本思想与算法步骤、MATLAB 语言编写的程序。
列举一些例子,运用四阶龙格-库塔方法的MATLAB 程序在软件中运行,求解出常微分方程的数值解,同时将求解出的数值解与精确解进行比较。
关键词龙格-库塔方法常微分方程数值解中图分类号:TP337文献标识码:A 0引言从17世纪以来国内外数学家对常微分方程的研究取得了很多的成果.欧拉在研究中指出常微分方程存在唯一解和无数解,他用近似值求解微分方程,发现用积分因子求解微积分方程的特殊算法。
拉格朗日建立了一阶微分方程理论,他将参数变法应用到四阶非齐次方程的求解。
我们生活中许多问题的解决都运用到常微分方程,常微分方程的数值解法中经常使用的方法是四阶龙格-库塔方法。
各个领域和工程问题中的原理和演变规律都是用常微分方程来描述的,如在物理方面的电路中电流变化的规律、航天航空方面卫星运转问题、经济方面物品供给以及需求与物价的之间的关系、军事方面研究深水炸弹在水下的运动等。
对这些事物、现象变化规律的描述、认知和分析,需要运用常微分方程来解决。
人们使用常微分方程数值解法的四阶龙格-库塔方法去研究这些问题很实用,而且具有很重要的应用价值。
目前,常微分方程在解决我们生活中的问题很实用,许多问题都运用常微分方程来求解。
中国科学技术大学学者倪兴在常微分方程的研究中写了关于欧拉法、方法等几种方法,他运用常微分计算卫星运动的初轨,把方法运用到卫星轨道改进的例子中;扬州大学学者冯建强和孙诗一研究四阶方法的推导,他写出了如何推导的过程。
在高校数值分析、数值计算方法与实验等教材中,许多作者都出版关于常微分方程初值问题数值解法的教材书,欧拉方法、改进欧拉法和方法等,同时在教材书中写入各种实际问题的例子,运用这些方法去解决常微分方程的初值问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6、教师评语及评分
%Çú¸ñ-¿âËþ·½·¨½øÐÐÇó½â
legend('ÓÃËĽ×Áú¸ç¿âËþ·½·¨¼ÆËãµÄÊýÖµ½â','¾«È·½ây(x)');%ͼÐÎ˵Ã÷ plot(X,Y,'*',X,Y1,'o') ; wcha=abs(Y-Y1), plot(X,wcha,'mh') %»æÍ¼ grid %»æÍ¼
表 1. R-K 格式的数值结果
xn
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 3、详细设计
三阶 R-K 格式 1.0954 1.1832 1.2649 1.3416 1.4142 1.4833 1.5492 1.6125 1.6734 1.7321
四阶 R-K 格式 1.0954 1.1832 1.2649 1.3416 1.4142 1.4832 1.5492 1.6125 1.6733 1.7321
将其命名为:t3_Rungek.m
在编辑窗口输入下列程序段,然后执行该程序 x0=0,b=1.1;y0=1;h=0.1;[X,Y]=t3_Rungek(@funfcn,x0,b,y0,h) 四阶龙格—库塔公式的Matlab程序代码:
function x=x0; y=y0;
[X,Y]=Rungek(funfcn,x0,b,y0,h)
K1 f ( xn , yn ) K 2 f ( xn h , yn h K1 ) 2 2 h h K 3 f ( xn , yn K 2 ) 2 2 K 4 f ( xn h, yn hK 3 ) yn 1 yn h ( K1 2 K 2 2 K 3 K 4 ) 6
K1 f ( xn , yn ) K 2 f ( xn h , yn h K1 ) 2 2 K 3 f ( xn h, yn hK1 2hK 2 ) h yn 1 yn ( K1 4 K 2 K 3 ) 6
和四阶 Rugge-Kutta 格式
程序代码,取步长 h 0.1 ,分别计算下列常微分方程从 x 0 到 x 1 的数值解,将计算结 果列于表 1,并绘制误差对比图,给出相应的结论。
y ' y 2x / y y (0) 1
(0 x 1)
准确解 y 1 2 x ,步长取 h 0.1 。
微分方程数值解实验报告
实验序号:2 班级 实验名称 实验所用软件及版本 xxxxx 姓名 Maltab2008 xxxxxx Rugge-Kutta 格式 日期:xxx 年 xx 月 xxx 日 学号 xxxxxxxx
1、实验目的 进一步理解 Rugge-Kutta 格式的设计思路和算法流程,培养动手实践能力和分析能力。 2、实验内容 编写三阶 Rugge-Kutta 格式
准确解 y ( xn ) 1.0954 1.1832 1.2649 1.3416 1.4142 1.4832 1.5492 1.6125 1.6733 1.7321
函数运行时需要调用下列函数:
建立 M 文件 funfcn.m function z=fun(x,y) z=y-2*x/y;
三阶龙格—库塔公式的Matlab程序代码:
在编辑窗口输入下列程序段,然后执行该程序
x0=0,b=1.1;y0=1;h=0.1;[X,Y]=Rungek(@funfcn,x0,b,y0,h)
4、实验结果与分析
三阶龙哥库塔法和精确解对比
四阶龙哥库塔法和精确解对比
三阶龙哥库塔法和精确解对比
wcha =1.0e-004 * wcha X wc ha
n=fix((b-x0)/h); i=1;X=zeros(n,1);Y=zeros(n,1); X(i)=x0;Y(i)=y0; for i=2:n k1=feval(funfcn,x,y); k2=feval(funfcn,x+h/2,y+h*k1/2); k3=feval(funfcn,x+h/2,y+h*k2/2); k4=feval(funfcn,x+h,y+h*k3); y=y+h/6*(k1+2*k2+2*k3+k4); Y(i)=y; x=x+h; X(i)=x; end X, Y1=sqrt(1+2.*X) grid %¾«È·½â
0.1 0.0055 0.2 0.0105 0.3 0.0373 0.4 0.0712 0.5 0.1111 0.6 0.1573 0.7 0.2105 0.8 0.2721 0.9 0.3439 1 0.4279
四阶龙哥库塔法和精确解对比
wcha =1.0e-005 * wcha X wcha
0.0417 0.0789 0.1164 0.1567 0.2016 0.2525 0.3114 0.3800 0.4606 0.5558 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
5、实验总结 1、本次实验实现了常微分方程初值问题数值解法中的三阶、四阶龙哥库塔法 2、 通过实验发现龙哥库塔法比欧拉方法、 后退的欧拉方法及其改进的算法精确度更高。 3、比较了其数值解与精确解之间的误差。可以发现无论是三阶还是四阶龙哥库塔法 都非常接近精确解,但四阶龙哥库塔法比三阶龙哥库塔法更精确。