四阶龙格库塔实验报告

  • 格式:docx
  • 大小:64.14 KB
  • 文档页数:4

三、四阶Runge-Kutta 法求解常微分方程
一、龙格库塔法的思想
根据第九章的知识可知道,Euler 方法的局部截断误差是2()O h ,而当用Euler 方法估计出
1,()
(1)n n n n y y hf x y +=+ 再用梯形公式
111[(,)(,)](2)2n n n n n n h y y f x y f x y +++=++
进行校正,即采用改进Euler 方法得出数值解的截断误差为3()O h 。

由Lagrange 微分中值定理
'11()()()()()(,())(3)n n n n n y x y x y x x y x hf y ξξξ++=+-=+ 记*(,())k hf y ξξ=,得到
*1()()(4)n n y x y x k +=+
这样只要给出一种计算*k 的算法,就能得到相应的计算公式。

用这种观点的来分析Euler 方法和改进Euler 方法,Euler 方法的迭代公式可改写为
11
1(,)
n n n n y y k k hf x y +=+=
改进Euler 方法的预报-校正公式可改写为 1121211()2
(,),(,)
n n n n n n y y k k k hf x y k hf x h y k +=++==++ Euler 方法实际上是用一个点处的值1k 近似*k ,而改进Euler 方法是用两个点处的值1k ,和2k ,做算术平均值近似*k 自然改进Euler 方法要优于Euler 方法。

因此,可以想到假如在1[,]n n x x +内多预报几个点值i k ,并用他们的加权平均值作为*k 的近似值,则有可能构造出具有更高精度的计算公式,这就是Runge-Kutta 法的基本思想。

二、四阶龙格库塔法
由Runge-Kutta 的基本思想,构造四阶Runge-Kutta 法是利用1234,,k k k k 和的加权平均值来近似*k ,因此令
111223344121113
2211243312213(,)(,)(5)(,)(,)n n n n n n n n n n y y w K w K w K w K K hf x y K hf x h y K K hf x h y K K K hf x h y K K K αβαβγαβγη+=++++⎧⎪=⎪⎪=++⎨⎪=+++⎪⎪=++++⎩
使得
511()()n n y x y O h ++-=
即其总体截断误差为4()O h 。

采用泰勒公式展开,经过复杂的推导,得到一个具有13个参数,11个方程的线性方程组。

由于方程的个数少于未知量的个数,因此方程有无穷多个解。

可以根据情况得到几种常用的解,即得到相应的四阶公式。

最常见的四阶公式如式(6): ,112341213243(22)6(,)
1(,)(6)221(,)22(,)
n n n n n n n n n n h y y K K K K K hf x y h K hf x y K h K hf x y K K hf x h y K +⎧=++++⎪⎪=⎪⎪⎪=++⎨⎪⎪=++⎪⎪=++⎪⎩
也称为标准四阶Runge-Kutta 法。

三、四阶龙格库塔法程序说明及应用
龙格库塔的计算程序
function [x,y] =Runge(ydot_fun,x0,y0,h,N )
x=zeros(1,N+1);y=zeros(length(y0),N+1);
x(1)=x0;y(:,1)=y0;
for n=1:N
x(n+1)=x(n)+h;
k1=h*feval(ydot_fun,x(n),y(:,n));
k2=h*feval(ydot_fun,x(n)+1/2*h,y(:,n)+1/2*k1);
k3=h*feval(ydot_fun,x(n)+1/2*h,y(:,n)+1/2*k2);
k4=h*feval(ydot_fun,x(n)+h,y(:,n)+k3);
y(:,n+1)=y(:,n)+1/6*(k1+2*k2+2*k3+k4);
end
程序解释及使用
该算法可以对一阶微分方程,一阶微分方程组进行有效的求解。

ydot_fun 为一阶微分方程的函数,x0为初始点,y0为初始向量,h 为步长,N 为区间的等分数,x 为Xn 构成的向量,y 为Yn 构成的矩阵。

程序调用方法:
1,先编写要求解的一阶微分方程或方程组的函数文件文件,将该文件和Runge 文件放到同一个目录下。

2. 调用求解程序,[x,y]=Runge(@dot_fun,x0,y0,h,N),运行后即可得出结果。

或者用内部函数调用:
输入:ydot_fun=(x,y)[]
[x,y]= Runge(ydot_fun,x0,y0,h,N)
实例求解
课本304页题目:
用标准4级4阶R-K 法求解
,'''''''''23(0)1,(0)3,(0)2y y y y x y y y ⎧=+-+-⎪
⎨=-==⎪⎩
, 取步长h=,计算(1)y 的近似值,并与解析解()21x y x xe x =+-作比较。

解:首先将三阶方程改写成微分方程组的形式:
令'''''
12132,,y y y y y y y y =====得如下微分方程组 '12'23'''3211'''1
2323(0)1,(0)3,(0)2y y y y y y y y x y y y ⎧=⎪=⎪⎨=+-+-⎪⎪=-==⎩ 在文件中编写待求解微分方程组,调用计算程序,保留5位小数得:
表3-1 三阶微分方程求解结果
表3-1中第二行1y 为原三阶微分方程对应的数值解,第二行2y 为其一阶导数值,第三行3y 为其二阶导数值。

由结果可知,数值解y(1)=,其对应的精确解析解(1)1y e =+=3.的相对误差为,可知四阶龙格库塔法具有很高的代数精度。