第二节 龙格-库塔方法

合集下载

龙格-库塔方法

龙格-库塔方法
§6.2.2 龙格-库塔方法
一、Taylor展开法

y′ = f ( x, y)
y( x0 ) =
y0
(1)
在[a,b]上有解 y( x),将y( xn+1 )在xn处泰勒展开
y( xn+1 )
=
y( xn ) +
hy′( xn ) +
h2 2!
y′′( xn ) +
h3 3!
y′′′( xn ) +
k4 = f ( xn + h, yn + hk1 − hk2 + hk3 )
为了分析经典R-K公式的计算量和计算精度, 将四阶经典R-K公式与一阶显式Euler公式及二阶改 进的Euler公式相比较。一般说来,公式的级数越 大,计算右端项 f 的次数越多,计算量越大。在 同样步长的情况下,Euler方法每步只计算一个函 数值,而经典方法要计算4个函数值。四阶R-K法的
0.5 0.397312
改进Euler法 h=0.05
0.095123 0.181193 0.259085 0.329563 0.393337
经典R-K法 h=0.1 0.09516250 0.18126910 0.25918158 0.32967971 0.39346906
准确解
y(xn )
0.09516258 0.18126925 0.25918178 0.32967995 0.39346934
h 2 k1 )
k3
=
f (xn
+
3 4
h,
yn
+
3 4 hk2 )
四阶龙格—库塔公式有:
古典公式:
yn+1 = k1 = f k2 = f

龙格库塔法

龙格库塔法
§9-3
一、高阶泰勒法
假设初值问题
龙格—库塔法 龙格 库塔法
dy = f (t , y ) dt y (a) = α 的解y (t)及f (t , y )足够光滑.
将y (ti +1 )在ti处作n阶泰勒展开, 得
a≤t ≤b
(1)
y′′(ti ) 2 y ( n ) (ti ) n y ( n +1) (ξ i ) n +1 y (ti +1 ) = y (ti ) + y′(ti )h + h +L+ h + h n! 2! (n + 1)! 其中, ti < ξ i < ti +1.
2
i
i
1
3
i
i
2
4
i
i
3
i +1
i
6123 Nhomakorabea4
作业 教材P198 习题3
(2)
(3)
首先将y (ti +1 )在ti处展成幂级数 h2 y (ti +1 ) = y (ti ) + hy′(ti ) + y′′(ti ) + O(h 3 ) 2 将 y′(t ) = f (t , y (t )) y′′(t ) = f t′(t , y (t )) + f y (t , y (t )) f (t , y (t )) 代入上式, 得 h2 y (ti +1 ) = y (ti ) + hf + ( f t + ff y ) + O(h 3 ) (3) 2 其中f , f t , f y′分别表示相应函数在点(ti , y (ti ))处的函数值.

82第二节 龙格—库塔法

82第二节 龙格—库塔法
h k y x n O hk 1 k! 2
k
(1)
h h k 若令 yn1 y xn hy xn y xn y xn (2) 2! k! 则 y xn1 yn1 O hk 1
y0 k1 2 k2 hf x0 h 2, y0 k1 2
y0 k3
k4 hf x0 h, y0 k3
y0 k2 2 k3 hf x0 h 2, y0 k2 2
k
x1 x0 h y1 y0 k
数学学院 信息与计算科学系
0.1832292
0.1584376
数学学院 信息与计算科学系
接上图
0.4 0.5 0.5 0.6 0.6 1.341667 1.416026 1.412676 1.482627 1.483281 0.0745394 0.0710094 0.0708400 0.0673253
0.1416245
数学学院 信息与计算科学系
数学学院 信息与计算科学系
由表8-4可见,虽然四阶龙格-库塔方法每步要 计算四次 f 的值,但以h=0.2为步长ቤተ መጻሕፍቲ ባይዱ计算结果就
有5 位有效数字,而欧拉法与预估计-校正方法以
h=0.1为步长的计算结果才具有2 位与3 位有效数字.
如果步长 h 也取0.2,则结果的精度会更低.

即公式(2)为k 阶方法.
数学学院 信息与计算科学系
二、龙格-库塔方法(R-K方法)
R-K方法不是通过求导数的方法构造近似公式, 而是通过计算不同点上的函数值, 并对这些函数值作 线性组合, 构造近似公式, 再把近似公式与解的泰勒 展开式进行比较, 使前面的若干项相同 , 从而使近似 公式达到一定的阶数.

二阶微分方程龙格库塔法

二阶微分方程龙格库塔法

二阶微分方程龙格库塔法
1.什么是二阶微分方程?
二阶微分方程是指二阶导数出现的方程,其通用形式为
y''+P(x)y'+Q(x)y=F(x),其中P(x)、Q(x)、F(x)均为已知函数,y是所求函数。

2.为什么要用龙格库塔法?
求解二阶微分方程是数学、物理等领域中常见的问题,然而大多数情况下无法直接解题,所以需要使用数值方法。

龙格库塔法是一种数值方法,被广泛应用于求解微分方程,其优点是精度高、计算速度快。

3.龙格库塔法的原理
龙格库塔法是一种迭代方法,将微分方程看作初值问题,从初始点出发,采用一定的步长h,在每个点上用插值公式逼近y(x+h),以此求得y(x+h)的近似值,一步步逼近所要求的精度。

4.龙格库塔法的步骤
(1)确定步长h和积分区间[a,b]。

(2)用初值y(x0)=y0,y'(x0)=y'0求出y(x0+h)的近似值。

(3)根据龙格库塔公式求得y(x0+2h)的近似值。

(4)对于连续求解的情况,重复以上步骤,直到求得所需的精度或者达到指定的终点。

5.龙格库塔公式
龙格库塔法的精度与所采用的公式有关,一般采用二阶或四阶的龙格库塔公式。

二阶龙格库塔公式为:
y0=y(x0)
k1=h*f(x0,y0)
k2=h*f(x0+h,y0+k1)
y(x0+2h)=y0+1/2(k1+k2)
其中,f(x,y)是待求函数。

6.总结
龙格库塔法是求解微分方程的一种常用数值方法,可以高精度、高效地解决二阶微分方程的问题。

该方法所需的计算量较小,易于编写程序实现,在实际应用中具有广泛的用途。

二阶龙格库塔方法

二阶龙格库塔方法

2012-2013(1)专业课程实践论文二阶Runge-Kutta方法董文峰,0818180123,R数学08-1班由改进的Euler 方法得到:()),(),(21121211K y h x hf K y x hf K K K y y i i i i i i ++==++=⎪⎩⎪⎨⎧+凡满足条件式有一簇形如上式的计算格式,这些格式统称为二阶龙格—库塔格式。

因此改进的欧拉格式是众多的二阶龙格—库塔法中的一种特殊格式。

若取1,0,2121212====c c b a ,就是另一种形式的二阶龙格 - 库塔公式。

⎪⎪⎩⎪⎪⎨⎧++==+=+)2,2(),(12121K hy h x f K y x f K hK y y n n n n n n (1)此计算公式称为变形的二阶龙格—库塔法。

二级龙格-库塔方法是显式单步式,每前进一步需要计算两个函数值。

由上面的讨论可知,适当选择四个参数y0,a,b,n ,可使每步计算两次函数值的二阶龙格-库塔方法达到二阶精度。

下面以式子(1)为依据利用VC++6.0编译程序进行问题的求解。

#include<stdlib.h>#include<stdio.h>/*n表示几等分,n+1表示他输出的个数*/int RungeKutta(double y0,double a,double b,int n,double *x,double *y,double (*function)(double,double)){double h=(b-a)/n,k1,k2;int i;x[0]=a;y[0]=y0;for(i=0;i<n;i++){x[i+1]=x[i]+h;k1=function(x[i],y[i]);k2=function(x[i]+h/2,y[i]+h*k1/2);y[i+1]=y[i]+h*k2;}return 1;}double function(double x,double y){return y-2*x/y;}int main(){ int i;double x[6],y[6];printf("用二阶龙格-库塔方法\n");RungeKutta(1,0,1,5,x,y,function);for( i=0;i<6;i++)printf("x[%d]=%f,y[%d]=%f\n",i,x[i],i,y[i]);return 1;}例1. 取h=0.2,用二阶Runge-Kutta 公式求解⎩⎨⎧=<<+='1)0(10,y x y x y解:1.将程序中的return y-2*x/y 改成 return x+y2.输入y0,a,b,n 分别为 1,0,1,53.结果为例2. 取h=0.2,用二阶Runge-Kutta 公式求解⎩⎨⎧=<<+='1)0(10),1/(3y x x y y解:1. 将程序中的return y-2*x/y 改成 return 3*y/(1+x)2.输入y0,a,b,n 分别为1,0,1,53.结果为。

龙格-库塔方法基本原理

龙格-库塔方法基本原理
应项的系数相等,得到系数方程组:
c1 c2 c3 1
a2c2
a3c3
1 2
,
a22c2 a32c31 3,b221c2
(b31
b32 )2 c3
1 3
a 2 b32 c 2
1 6
,
b21c2
(b31
b32 )c3
1 2
a2b21c2
a3c3 (b31
b32 )
1 3
1 b21b32c3 6
2021/5/25
6
同理,改进Euler公式可改写成
y
i
1
yi
1 2
K1
1 2
K2
K
1
hf
( xi ,
yi )
K
2
hf
( xi
h, yi
K1)
局部截断误差为O(h3)
上述两组公式在形式上共同点:都是用f(x,y)在某些 点上值的线性组合得出y(xi+1)的近似值yi+1, 且增加计 算的次数f(x,y)的次数,可提高截断误差的阶。如欧拉 法:每步计算一次f(x,y)的值,为一阶方法。改进欧拉法 需计算两次f(x,y)的值,为二阶方法。
17
若取 a2b2 塔公式。
11 2,
c1,就0,是c2另一1种形式的二阶龙格
-

yi1 yi K2
K1 hf(xi, yi)
K2
hf(xi
1h, 2
yi
12K1)
此计算公式称为变形的二阶龙格—库塔法。式中
xi
1为h区间
2
x的i , x中i1点。也称中点公式。
Q:为获得更高的精度,应该如何进一步推广?

《龙格-库塔方法》课件

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

数值分析9-3 龙格-库塔方法

数值分析9-3 龙格-库塔方法

最常用为四级4阶经典龙格-库塔法 /* Classical Runge-Kutta Method */ :
y i 1 y i h ( K1 2K 2 2K 3 K 4 ) 6 K1 K2 K3 K4 f ( xi , yi )
h f ( xi h , y K1 ) i 2 2 h f ( xi h , y K2 ) i 2 2
一、再看Taylor方法
h y ( x h) y ( x) hy' ( x) y" ( x) 2 h3 h 4 ( 4) y ( x) y ( x) 6 24 一般可取公式为如下形式
2
y n 1
h h ( p) y n hy' n y"n yn 2! p!
yi 1 K1 K2 yi h [1 K 1 2 K 2 ] f ( x i , yi ) f ( xi ph, yi phK 1 )
d f ( x, y) dx 首先希望能确定系数 1、2、p,使得到的算法格式有 2阶 dy 精度,即在 yi y( xi ) 的前提假设下,使得 f x ( x, y) f y ( x, y) dx Ri y( xi 1 ) yi 1 O( h3 ) f x ( x, y) f y ( x, y) f ( x, y) y( x )
考察改进的欧拉法,可以将其改写为: 斜率 一定取K1 K2 的平均值吗?
y i 1 K1 K2

1 1 yi h K 1 K 2 2 2 f ( xi , yi ) f ( x i h, y i hK 1 )
步长一定是一个h 吗?
将改进欧拉法推广为:

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

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

龙格-库塔方法〔Runge-Kutta〕3.2 Runge-Kutta法3.2.1 显式Runge-Kutta法的一般形式上节已给出与初值问题(1.2.1)等价的积分形式(3.2.1)只要对右端积分用不同的数值求积公式近似就可得到不同的求解初值问题(1.2.1)的数值方法,若用显式单步法(3.2.2)当,即数值求积用左矩形公式,它就是Euler法(3.1.2),方法只有一阶精度,若取(3.2.3)就是改进Euler法,这时数值求积公式是梯形公式的一种近似,计算时要用二个右端函数f的值,但方法是二阶精度的.若要得到更高阶的公式,则求积分时必须用更多的f值,根据数值积分公式,可将(3.2.1)右端积分表示为注意,右端f中还不能直接得到,需要像改进Euler法(3.1.11)一样,用前面已算得的f值表示为(3.2.3),一般情况可将(3.2.2)的 表示为(3.2.4)其中这里均为待定常数,公式(3.2.2),(3.2.4)称为r级的显式Runge-Kutta法,简称R-K方法.它每步计算r个f值(即由前面(i-1)个已算出的表示,故公式是显式的.例),而ki如当r=2时,公式可表示为(3.2.5)其中.改进Euler 法(3.1.11)就是一个二级显式R-K 方法.参数取不同的值,可得到不同公式.3.2.2 二、三级显式R-K 方法对r=2的显式R-K 方法(3.2.5),要求选择参数,使公式的精度阶p 尽量高,由局部截断误差定义11122211()()[(,())(,)]n n n n n n n T y x y x h c f x y x c f x a h y b hk ++=--+++ (3.2.6)令,对(3.2.6)式在处按Taylor 公式展开,由于将上述结果代入(3.2.6)得要使公式(3.2.5)具有的阶p=2,即,必须(3.2.7)即由此三式求的解不唯一.因r=2,由〔3.2.5〕式可知,于是有解(3.2.8)它表明使(3.2.5)具有二阶的方法很多,只要都可得到二阶精度R-K方法.若取,则,则得改进Euler法(3.1.11),若取,则得,此时(3.2.5)为(3.2.9)其中称为中点公式.改进的Euler法(3.1.11)与中点公式(3.2.9)是两个常用的二级R-K方法,注意二级R-K方法只能达到二阶,而不可能达到三阶.因为r=2只有4个参数,要达到p=3则在(3.2.6)的展开式中要增加3项,即增加三个方程,加上(3.2.7)的三个方程,共计六个方程求4个待定参数,验证得出是无解的.当然r=2,p=2的R-K方法(3.2.5)当取其他数时,也可得到其他公式,但系数较复杂,一般不再给出.对r=3的情形,要计算三个k值,即其中将按二元函数在处按Taylor公式展开,然后代入局部截断误差表达式,可得可得三阶方法,其系数共有8个,所应满足的方程为(3.2.10)这是8个未知数6个方程的方程组,解也是不唯一的,通常.一种常见的三级三阶R-K方法是下面的三级Kutta方法:(3.2.11)附:R-K 的三级Kutta 方法程序如下function y = DELGKT3_kuta(f, h,a,b,y0,varvec) format long; N = (b-a)/h;y = zeros(N+1,1); y(1) = y0; x = a:h:b;var = findsym(f); for i=2:N+1K1 = Funval(f,varvec,[x(i-1) y(i-1)]);K2 = Funval(f,varvec,[x(i-1)+h/2 y(i-1)+K1*h/2]); K3 = Funval(f,varvec,[x(i-1)+h y(i-1)-h*K1+K2*2*h]);y(i) = y(i-1)+h*(K1+4*K2+K3)/6; %满足c1+c2+c3=1,(1/6 4/6 1/6)endformat short; 3.2.3 四阶R-K 方法与步长的自动选择利用二元函数Taylor 展开式可以确定(3.2.4)中r=4,p=4的R-K 方法,其迭代公式为111223344()n n y y h c k c k c k c k +=++++其中1(,)n n k f x y =,2221(,(,))n n n n k f x a h y b hf x y =++,而33311322(,)n n k f x a h y b hk b hk =+++ 44411422433(,)n n k f x a h y b hk b hk b hk =++++共计13个参数待定,Taylor 展开分析局部截断误差,使得精度达到四阶,即误差为5()O h 。

龙格库塔方法ppt课件

龙格库塔方法ppt课件

z(i1,1)=x;z(i1,2)=k1;z(i1,3)=k2;z(i1,4)=k3;z(i1,5)=k4;z(
i1,6)=y;
i1=i1+1;
end
11
end
例题4
例4 求(3阶、4阶R ห้องสมุดไป่ตู้公式)解初值问题(步长h 0.1)

y


y
2x y
y(0) 1
(0 x 1)
将步长折半,即取
h 2
为步长从xn跨两步到xn+1,求得一个近似值yn( h21)
每跨一步截断误差是C
(
h 2
)5
,
有y(xn+1
)-y(
h 2
)
n1

2C(
h )5 2
16
步长折半后,误差大约减少为原来的 1 ,即有 16
(h)
y( xn1) y( xn1)
y2 n1
y(h) n1
误差 0.45e-4 0.17e-4 0.15e-4 0.48e-4 0.25e-4 0.55e-4 0.14e-4 0.21e-4 0.54e-4 0.06e-4
y(xn) 1.0954 1.1832 1.2649 1.3416 1.4142 1.4832 1.5492 1.6125 1.6733 1.7321
y=y0;z=zeros(c,6);
%z生成c行,6列的零矩阵存放结果;
%每行存放c次迭代结果,每列分别存放
k1~k4及y的结果
10
不断迭代运算: for x=a:h:b
if i1<=c k1=feval(yy,x,y); k2=feval(yy,x+h/2,y+(h*k1)/2); k3=feval(yy,x+h/2,y+(h*k2)/2); k4=feval(yy,x+h,y+h*k3); y=y+(h/6)*(k1+2*k2+2*k3+k4);

(完整版)第二节龙格-库塔方法

(完整版)第二节龙格-库塔方法
en1 en h[( xn , y( xn ), h) ( xn , yn , h)] Tn1
因为单步法是 p阶的:h0 , 0 h h0 满足| Tn1 | Chp1
| en1 || en | hL | en | Ch p1 | en |
其中 1 hL, Ch p1
en O(hp )
即取
K * 1K1 2 K2 yi1 yi h(1K1 2 K2 )
其中1 和 2 是待定常数。若取 K1 f ( xi , yi ) ,则
问题在于如何确定 xi p 处的斜率 K2 和常数 1 和 2 。
仿照改进的欧拉方法,用欧拉方法预测 y( xi p ) 的值,
yi p yi phK1
k2
f ( xn
h 2
,
yn
h 2 k1)
hh k3 f ( xn 2 , yn 2 k2 )
k4 f ( xn h, yn hk3 )
例2:用经典的龙格-库塔方法
求解下列初值问题 h 0.1
dy 。 dx
y
2x y
x (0,1)
解:经典的四阶龙格-库塔公式: y(0) 1
E(h) 1 h
绝对稳定域: 1 h 1
当 R 时, 1 h 1 2 h 0
绝对稳定区间:(2, 0)
❖经典的R-K公式:yn1
yn
h 6
(k1
2k2
2k3
k4 )
k1 f ( xn , yn ) yn
k2
f
(
yn1 yn hf ( xn , yn )
n1 yn1 yn1
n1 n h[ f ( xn , yn ) f ( xn , yn )] [1 hf y ( xn , )]n

龙格-库塔方法微积分教学

龙格-库塔方法微积分教学

龙格-库塔方法8.2.1 二阶龙格-库塔方法常微分方程初值问题:做在点的泰勒展开:这里。

取,就有(8.11)截断可得到近似值的计算公式,即欧拉公式:若取,式(8.11)可写成:或(8.12)截断可得到近似值的计算公式:或上式为二阶方法,一般优于一阶的欧拉公式(8.2),但是在计算时,需要计算在点的值,因此,此法不可取。

龙格-库塔设想用在点和值的线性组合逼近式(8.12)的主体,即用(8.13)逼近得到数值公式:(8.14)或更一般地写成对式(8.13)在点泰勒展开得到:将上式与式(8.12)比较,知当满足时有最好的逼近效果,此时式(8.13)-式(8.14)。

这是4个未知数的3个方程,显然方程组有无数组解。

若取,则有二阶龙格-库塔公式,也称为改进欧拉公式:(8.15)若取,则得另一种形式的二阶龙格-库塔公式,也称中点公式:(8.16)从公式建立过程中可看到,二阶龙格-库塔公式的局部截断误差仍为,是二阶精度的计算公式。

类似地,可建立高阶的龙格-库塔公式,同时可知四阶龙格-库塔公式的局部截断误差为,是四阶精度的计算公式。

欧拉法是低精度的方法,适合于方程的解或其导数有间断的情况以及精度要求不高的情况,当解需要高精度时,必须用高阶的龙格-库塔等方法。

四阶龙格-库塔方法应用面较广,具有自动起步和便于改变步长的优点,但计算量比一般方法略大。

为了保证方法的收敛性,有时需要步长取得较小,因此,不适于解病态方程。

8.2.2 四阶龙格-库塔公式下面列出常用的三阶、四阶龙格-库塔计算公式。

三阶龙格-库塔公式(1)(8.17)(8.18)(3)(8.19)四阶龙格-库塔公式(1)(8.20)(8.21)例8.3用四阶龙格-库塔公式(8.20)解初值问题:解:取步长,计算公式为:计算结果列表8.3中。

表8.3 计算结果1 0.2 1.24789 1.24792 0.000032 3 4 0.40.60.81.637622.296183.533891.637782.296963.538020.000160.000780.004138.2.3 步长的自适应欧拉方法和龙格-库塔方法在计算时仅用到前一步的值,我们称这样的方法为单步法。

第二节_龙格_库塔方法

第二节_龙格_库塔方法

yn1 yn hf ( xn , yn )
n1 yn1 yn1
n1 n h[ f ( xn , yn ) f ( xn , yn )] [1 hf y ( xn , )]n
如果 |1 hf y | 1,则误差是不增的,故可认为是稳定的
例如:对于初值问题
y y
y(
x0
)
a
精确解为
k2
f ( xn
h 2
,
yn
h 2 k1)
hh k3 f ( xn 2 , yn 2 k2 )
k4 f ( xn h, yn hk3 )
例2:用经典的龙格-库塔方法
求解下列初值问题 h 0.1
dy 。 dx
y
2x y
x
(0,1)
解:经典的四阶龙格-库塔公式: y(0) 1
h
y
ae x x0
y y
而实际求解的初值问题为
y(
x0
)
a
a
精确解为 y (a a)e x x0在 xn 处的误差为ae xn x0
可见误差随着 xn的增加呈指数函数增长
y y
如果初值问题为
y( x0 ) a
精确解为 y ae x0 x
y y
实际求解的初值问题为
y( x0 )
2C( h)5 2
y( xn1)
y(h/ 2) n1
y( xn1)
y(h) n1
1 16

|
y(h/ 2) n1
y(h) n1
|
16( y( xn1)
y(h/ 2) n1
)
y( xn1)
y(h) n1
y( xn1)
y(h/ 2) n1

龙格库塔法

龙格库塔法

c1
c2
1
0,
1 2
c2
0
即常数c1, c2 , 满足条件
c1 c2 1
c2
1 2
方程组有三个未知数,但只有两个方程,因此可得到
局部截断误差为O(h3 )的计算公式.
如果取c1
c2
1 ,
2
1,递推公式为
y0
k1 f (ti , yi )
k2 f (ti h, yi hk1)
yi
代入上式, 得
yi1 yi h(c1 f c2 f ) c2h( ft ffy ) O(h2 )
在局部截断误差的前提假设yi y(ti )下,得
y(ti1)
yi1
h(c1
c2
1)
f
h2(1 2
c2 )( ft
ffy ) O(h3)
要使局部截断误差y(ti1) yi1 O(h3 ),当且仅当
§9-3 龙格—库塔法
一、高阶泰勒法
假设初值问题
dy f (t, y) a t b dt
(1)
y(a)
的解y(t)及f (t, y)足够光滑.
将y(ti1)在ti处作n阶泰勒展开 , 得
y(ti1)
y(ti )
y(ti )h
y(ti ) h2 2!
y(n) (ti ) hn n!
y(n1) (i ) hn1
f
(ti
1 2
h,
yi
1 2 hk1)
(10)
yi1 yi hk2 )
公式(8)、(9)、(10)三式是三种常见的二阶龙格—库塔公式
局部截断误差为 O(h3).
三、三、四阶龙格—库塔法
三阶龙格—库塔法

二阶龙格库塔法例题

二阶龙格库塔法例题

二阶龙格库塔法例题二阶龙格-库塔法(RK2)是一种数值求解常微分方程(ODE)的方法,它基于欧拉法的改进。

下面我将以一个例题来说明二阶龙格-库塔法的应用。

假设我们要求解如下的一阶常微分方程:dy/dx = x + y.初始条件为 y(0) = 1。

我们希望使用二阶龙格-库塔法来计算在 x = 0.1 处的函数值。

首先,我们需要将方程转化为标准形式,即将一阶微分方程表示为 dy/dx = f(x, y) 的形式。

在这个例子中,f(x, y) = x + y。

接下来,我们将计算步长 h,这是我们在每个步骤中前进的距离。

在二阶龙格-库塔法中,我们需要选择一个合适的步长。

通常情况下,我们可以通过试验不同的步长来选择一个合适的值。

在这个例子中,我们选择 h = 0.1。

然后,我们可以开始应用二阶龙格-库塔法的迭代公式。

迭代公式如下:k1 = h f(x, y)。

k2 = h f(x + h/2, y + k1/2)。

y_new = y + k2。

现在,我们可以开始迭代计算。

根据初始条件,我们有 x = 0,y = 1。

我们将进行以下计算步骤:1. 计算 k1 = h f(x, y) = 0.1 (0 + 1) = 0.1。

2. 计算 k2 = h f(x + h/2, y + k1/2) = 0.1 (0.05 + 1 + 0.1/2) = 0.105。

3. 计算 y_new = y + k2 = 1 + 0.105 = 1.105。

这样,我们得到了在 x = 0.1 处的函数值 y_new = 1.105。

通过不断重复上述步骤,我们可以计算出在其他点的函数值。

只需将当前的 x 和 y_new 作为下一步的初始条件,重复上述计算步骤即可。

需要注意的是,二阶龙格-库塔法是一种数值近似方法,其结果并不完全精确。

因此,在实际应用中,我们需要根据问题的要求和精度需求选择合适的步长和迭代次数。

以上就是使用二阶龙格-库塔法求解一阶常微分方程的例子。

第3讲(龙格-库塔方法)

第3讲(龙格-库塔方法)
h f yi [ f ( x i , yi ) f ( xi , yi ) ( x i , yi ) h 2 x f ( xi , yi ) h f ( xi , yi ) O( h2 )] y
易见,它与二阶泰勒级数方法仅相差 O( h3 )!
这一分析给我们提供了一个重要信息,那就是 我们所遇到的泰勒级数方法中求导数的困难是可以 克服的,改进的欧拉方法就没有用到导数,而是借 助于函数在某些点处的值 (复合函数的思想)。
又 y( x ) df ( x , y( x )) f x f y y f x f y f dx
故二阶泰勒级数方法为 h2 yi 1 yi h f ( xi , yi ) ( f x ( xi , yi ) f ( xi , yi ) f y ( xi , yi )) 2! 更高阶方法更复杂,主要是求导复杂!
yi 1
h2 hk ( k ) yi h y y yi i i 2! k!
这样的数值方法称为k 阶泰勒级数方法。
yi 1
h2 hk ( k ) yi h y y yi i i 2! k!
泰勒级数方法也是单步法,且其局部截断误差为
h2 hk ( k ) LTE y( xi 1 ) y( xi ) hy( xi ) y( xi ) y ( x i ) 2! k!
第二节 龙格-库塔方法
(Runge-Kutta)
根据局部截断误差与整体误差的关系可知, 局部截断误差的阶是衡量一个方法优劣的重要依据。 考虑用提高局部截断误差的阶来提高数值方法的 精度。 泰勒级数法 龙格―库塔方法
一、泰勒级数方法
d y f ( x, y ), x I 如果初值问题 d x 的精确解 y(x) 在 I y( x ) y 0 0

数值分析9-3(龙格-库塔方法)

数值分析9-3(龙格-库塔方法)
语言实现龙格-库塔方法
总结词
除了Python和MATLAB,还有许多其他编 程语言可以用于实现龙格-库塔方法。
详细描述
例如C、Java和R等编程语言也提供了相应 的数值计算库或框架,可以实现龙格-库塔 方法。使用这些语言实现龙格-库塔方法需 要一定的编程基础和对相应语言的数值计算 库的了解。
龙格-库塔方法可以用于求解偏微分方程的数值解,通过将偏微分方程转化为常微分方程组,利用龙格 -库塔方法进行迭代求解,能够得到较为精确的结果。
积分方程的数值解
积分方程是描述函数与积分之间的关 系的数学模型,常见于物理、工程等 领域。
VS
龙格-库塔方法也可以用于求解积分 方程的数值解,通过将积分方程转化 为常微分方程组,利用龙格-库塔方 法进行迭代求解,能够得到较为精确 的结果。
重要性及应用领域
龙格-库塔方法是数值分析中非常重要的内容, 它为解决常微分方程提供了一种有效的数值方 法。
在科学、工程和经济学等领域中,许多问题都 可以转化为求解常微分方程的问题,因此龙格库塔方法具有广泛的应用价值。
例如,在物理学、化学、生物学、金融学等领 域中,龙格-库塔方法被广泛应用于模拟和预测 各种动态系统的行为。
数值分析9-3:龙格-库塔方法
目录
• 引言 • 龙格-库塔方法概述 • 龙格-库塔方法在数值分析中的应用 • 龙格-库塔方法的实现与编程 • 龙格-库塔方法的改进与优化 • 结论与展望
01 引言
主题简介
龙格-库塔方法是一种用于求解常微 分方程的数值方法。
它通过构造一个离散化的时间序列来 逼近微分方程的解,并利用已知的离 散点来计算新的离散点,逐步逼近微 分方程的真实解。
02 龙格-库塔方法概述
定义与原理

第八章 第二节 龙格库塔法

第八章 第二节 龙格库塔法

a2
b21
a2a3b32R3 a4R4 (a2b42 a3b43 ) 1 8
a3
b31
b32
a4 b41 b42 b43
a2b32R3 R4(a2b42 a3b43 ) 1 6 a22b32R3 R4(a22b42 a32b43 ) 1 12
a2 R2
a3 R3
a4 R4
01
1
1
1
0.1 1.1
1.095909
1.095445
0.2 1.191818 1.184097
1.183229 1.183216
0.3 1.277438 1.266201
1.264911
0.4 1.358213 1.343360
1.341667 1.341641
0.5 1.435133 1.416402
yn
k2
hf
xn
h
2, yn k1
2
k3
hf
xn
h,
yn
k1
2k2
上页 下页 返回
第八章 第二节
截断误差 o(h5 ) 的四阶龙格—库塔公式是常用的公 式,每步都要计算四 次f 的值。
它的一般形式是
yn1 yn R1k1 R2k2 R3k3 R4k4
k1 k2
hf hf
两个不同点的函数值),截断误差都是 (h。3 )
满足条件(4)的一族公式(3)统称为二阶龙格—库 塔公式。
上页 下页 返回
第八章 第二节
如果每步计算三次f的值,可将公式写成下列形式:
yn1 yn R1k1 R2k2 R3k3
k1 hf ( xn , yn )
(5)
k2 hf ( xn a2h, yn b21k1 )
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

h( k1 + k2 ) yn +1 = yn + 2 hk1 1 1 3 3 k1 = f [ xn + ( + )h, yn + )hk2 ] +( + 2 6 4 4 6 hk2 1 3 1 3 k2 = f [ xn + ( − )h, yn + ( − )hk1 + ] 2 6 4 6 4
1 库塔三阶方法 库塔三阶方法
h h k1 = f ( xn , yn ); k2 = f ( xn + , yn + k1 ) 2 2
h yn +1 = yn + ( k1 + 4k2 + k3 ) 6
k3 = f ( xn + h, yn − hk1 + 2hk2 )
四级方法: 四级方法:N = 4 常见的2种四阶方法: 常见的 种四阶方法: 种四阶方法 经典龙格 库塔方法 龙格1经典龙格-库塔方法
1 中点法(修正的Euler法) 取 c1 = 0, c2 = 1, a2 = 1 中点法(修正的 法 2 h h
y n +1 = y n + hf ( x n +
常见的3种二级方法: 常见的 种二级方法: 种二级方法
二阶龙格库塔方法 2 二阶龙格库塔方法
h yn +1 = yn + [ f ( xn , yn ) + f ( xn + h, yn + hf ( xn , yn ))] 2
1 取 c1 = c2 = , a2 = 1 2
2
, yn +
2
f ( x n , y n ))
类似于N 的推导方法, 的推导方法 三级方法: 三级方法:N = 3 类似于 = 2的推导方法,可得到 1 c1 + c 2 + c 3 = 1; c 2 a 2 + c 3 a 3 = ; 2 O ( h4 ) 1 1 2 2 c 2 a 2 + c 3 a 3 = ; c 3 a 2 b32 = 6 3 常见的2种三阶方法: 常见的 种三阶方法: 种三阶方法
yi + p = yi + phK1
并用它来估计斜率 K 2 :
K 2 = f ( x i + p , yi + p )
于是得到如下形式的算法: 于是得到如下形式的算法:
yi +1 = yi + h(λ1 K1 + λ2 K 2 ), K1 = f ( xi , yi ), K = f ( x , y + phK ). i +1 i 1 2
K * = λ1 K1 + λ2 K 2
即取
yi +1 = yi + h(λ1 K1 + λ2 K 2 )
是待定常数。 其中 λ1 和 λ2 是待定常数。若取 K1 = f ( xi , yi ) ,则 问题在于如何确定 xi + p 处的斜率 K 2 和常数 λ1 和 λ2 。
仿照改进的欧拉方法, 的值, 仿照改进的欧拉方法,用欧拉方法预测 y( xi + p ) 的值,
en +1 = en + h[φ ( xn , y( xn ), h) − φ ( xn , yn , h)] + Tn +1
p阶的:∃h0 , 0 < h ≤ h0 满足| Tn+1 |≤ Ch p+1 因为单步法 单步法是 因为单步法是 阶的: p +1 | en +1 |≤| en | + hL | en | + Ch ≤α | en | +β
( h / 2) n +1 ( h) n +1
1 ≈ 16
记 ∆ =| y
(h / 2) n +1
−y
(h) n +1
|
16( y( xn +1 ) − y
(h / 2) n +1
) ≈ y( xn+1 ) − y
( h) n +1
y ( x n +1 ) − y
如果 ∆ 此时取 y
( h / 2) n +1
ki = f ( xn + ai h, yn + h∑ bij k j ); i = 1, ..., N
j =1
N
(1)一 二阶的隐式中点方法 的隐式中点方法: (1)一级二阶的隐式中点方法:
yn +1 = yn + hk1
hk1 h k1 = f ( xn + , yn + ) 2 2
(2)二 四阶的隐式 的隐式R-K方法: 方法: (2)二级四阶的隐式 方法
下面以2阶龙格-库塔方法为例来阐述这种思想 下面以 阶龙格-库塔方法为例来阐述这种思想 阶龙格 考察区间 [ xi , xi +1 ] 上的一点 xi + p = xi + ph, 0 < p ≤ 1 , 用 xi 和 xi + p 的斜率 K1 和 K 2 的加权平均作为平均
K * 的近似值: 斜率 的近似值:
p(N)
≤ N −2
若要得到N阶以上方法,则使用N级隐式 级隐式R-K方法 若要得到N阶以上方法,则使用N级隐式R-K方法 阶以上方法 N级隐式 级隐式R-K方法的一般形式: 方法的一般形式: 级隐式 方法的一般形式
y n +1 = y n + h ∑ c i k i
i =1
N
N级隐式 级隐式R-K法 级隐式 法 可以达到2N阶 可以达到 阶
2x dy 龙格例2:用经典的龙格-库塔方法 : 经典的龙格 库塔方法 = y− y x∈(0,1) ∈ 求解下列初值问题 h = 0.1 。 dx y (0) = 1 解:经典的四阶龙格-库塔公式: 经典的四阶龙格-库塔公式: 龙格 h yn+1 = yn + ( k1 + 2k2 + 2k3 + k4 ) 6 h 2( xn + ) 2x 2xn h 2 k1 = yn − ; k2 = yn + k1 − h yn 2 yn + k1 2 h 2( xn + ) h 2 ; k = y + hk − 2( xn + h) k3 = yn + k2 − 4 n 3 h 2 yn + hk3 yn + k2 2
可将改进的欧拉格式改写成
1 y i + 1 = 2 ( K 1 + K 2 ), K 1 = y i + h f ( x i , y i ), K = y + h f ( x , K ). i i +1 1 2
该公式可以看作是用 xi 和 xi +1 两个点处的斜率 K1 和 K 2 的算术平均值作为平均斜率。 的算术平均值作为平均斜率。 由改进型欧拉公式我们可以猜想, 由改进型欧拉公式我们可以猜想,如果在[ xi , xi +1 ] 内多预测几个点的斜率,再对他们进行加权平均, 内多预测几个点的斜率,再对他们进行加权平均, 可能得到精度更好的平均斜率! 可能得到精度更好的平均斜率!
其中 α
en = O ( h ) = 1 + hL, β = Ch 2 | en |≤ α | en −1 | + β ≤ α | en − 2 | +αβ + β
2xபைடு நூலகம்+1
xn yn xn yn
0.1 0.2 0.3 0.4 0.5 1.0954 1.1832 1.2649 1.3416 1.4142 0.6 0.7 0.8 0.9 1.0 1.4832 1.5492 1.6125 1.6733 1.7321
高阶和隐式 和隐式Runge-Kutta方法 二、高阶和隐式 方法 对于显式N级 方法, 级方法; 注: 对于显式 级R-K方法,最多只能得到 级方法; 方法 最多只能得到N级方法 已经证明N级 方法的阶 具有下列关系: 已经证明 级R-K方法的阶 p( N )具有下列关系: 方法的 N 1,2,3,4 N 5,6,7 N-1 8,9 N-2 10,11,…
局部截断误差 O ( h )
5
h yn+1 = yn + ( k1 + 2k2 + 2k3 + k4 ) 6 k1 = f ( xn , yn )
h h k2 = f ( xn + , yn + k1 ) 2 2 h h k3 = f ( x n + , y n + k 2 ) 2 2
k4 = f ( xn + h, yn + hk3 )
y ( x n +1 ) − y
( h) n +1
≈ Ch
5
h Step2:取 为步长,再从 xn 出发,经过两步计算得到 出发,经过两步 两步计算得到 取 为步长, 2
y( xn +1 ) − y
(h ) 2 n +1
h 5 ≈ 2C ( ) 2
y( xn+1 ) − y y( xn+1 ) − y
则将步长折半进行计算, 折半进行计算 > ε ,则将步长折半进行计算,直到 ∆ < ε 为止
(h / 2) 为最终结果; n +1 为最终结果;
1 (h / 2) ( h) ≈ [ yn +1 − yn +1 ] 15
则将步长加倍进行计算, 加倍进行计算 如果 ∆ < ε ,则将步长加倍进行计算,直到 ∆ > ε 为止 此时将步长折半一次计算,得到的为最终结果。 折半一次计算 此时将步长折半一次计算,得到的为最终结果。
相关文档
最新文档