用改进的欧拉方法和四阶龙格-库塔方法解初值问题

合集下载

MATLAB改进欧拉法与四阶龙格-库塔求解一阶常微分方程

MATLAB改进欧拉法与四阶龙格-库塔求解一阶常微分方程

姓名:樊元君学号:02 日期:一、实验目的掌握MATLAB语言、C/C++语言编写计算程序的方法、掌握改进欧拉法与四阶龙格-库塔求解一阶常微分方程的初值问题。

掌握使用MATLAB程序求解常微分方程问题的方法。

:二、实验内容1、分别写出改进欧拉法与四阶龙格-库塔求解的算法,编写程序上机调试出结果,要求所编程序适用于任何一阶常微分方程的数值解问题,即能解决这一类问题,而不是某一个问题。

实验中以下列数据验证程序的正确性。

求,步长h=。

*2、实验注意事项的精确解为,通过调整步长,观察结果的精度的变化^)三、程序流程图:●改进欧拉格式流程图:~|●四阶龙格库塔流程图:]四、源程序:●改进后欧拉格式程序源代码:function [] = GJOL(h,x0,y0,X,Y)format longh=input('h=');…x0=input('x0=');y0=input('y0=');disp('输入的范围是:');X=input('X=');Y=input('Y=');n=round((Y-X)/h);\i=1;x1=0;yp=0;yc=0;for i=1:1:nx1=x0+h;yp=y0+h*(-x0*(y0)^2);%yp=y0+h*(y0-2*x0/y0);%·yc=y0+h*(-x1*(yp)^2);%yc=y0+h*(yp-2*x1/yp);%y1=(yp+yc)/2;x0=x1;y0=y1;y=2/(1+x0^2);%y=sqrt(1+2*x0);%fprintf('结果=%.3f,%.8f,%.8f\n',x1,y1,y);:endend●四阶龙格库塔程序源代码:function [] = LGKT(h,x0,y0,X,Y)。

format longh=input('h=');x0=input('x0=');y0=input('y0=');disp('输入的范围是:');"X=input('X=');Y=input('Y=');n=round((Y-X)/h);i=1;x1=0;k1=0;k2=0;k3=0;k4=0;for i=1:1:n~x1=x0+h;k1=-x0*y0^2;%k1=y0-2*x0/y0;%k2=(-(x0+h/2)*(y0+h/2*k1)^2);%k2=(y0+h/2*k1)-2*(x0+h/2)/(y0+h/2*k1);% k3=(-(x0+h/2)*(y0+h/2*k2)^2);%k3=(y0+h/2*k2)-2*(x0+h/2)/(y0+h/2*k2);% k4=(-(x1)*(y0+h*k3)^2);%k4=(y0+h*k3)-2*(x1)/(y0+h*k3);%…y1=y0+h/6*(k1+2*k2+2*k3+k4);%y1=y0+h/6*(k1+2*k2+2*k3+k4);%x0=x1;y0=y1;y=2/(1+x0^2);%y=sqrt(1+2*x0);%fprintf('结果=%.3f,%.7f,%.7f\n',x1,y1,y);end·end*五、运行结果:改进欧拉格式结果:;}四阶龙格库塔结果:步长分别为:和时,不同结果显示验证了步长减少,对于精度的提高起到很大作用,有效数字位数明显增加。

初值问题——精选推荐

初值问题——精选推荐

初值问题《计算机数学基础(2)》辅导六第14章常微分⽅程的数值解法⼀、重点内容1.欧拉公式:(k=0,1,2,…,n-1)局部截断误差是O(h2)。

2. 改进欧拉公式:或表⽰成:平均形式:局部截断误差是O(h3)。

3. 四阶龙格――库塔法公式:其中κ1=f(x k,y k);κ2=f(x k+0.5h,y k+0.5hκ1);κ3=f(x k+0.5h,y k+0.5hκ2);κ4=f(x k+h,y k+hκ3)局部截断误差是O(h5)。

⼆、实例例1⽤欧拉法解初值问题取步长h=0.2。

计算过程保留4位⼩数。

解h=0.2,f(x,y)=-y-xy2。

⾸先建⽴欧拉迭代格式=0.2y k(4-x k y k) (k=0,1,2)当k=0,x1=0.2时,已知x0=0,y0=1,有y(0.2)≈y1=0.2×1(4-0×1)=0.8当k=1,x2=0.4时,已知x1=0.2,y1=0.8,有y(0.4)≈y2=0.2×0.8×(4-0.2×0.8)=0.6144当k=2,x3=0.6时,已知x2=0.4,y2=0.6144,有y(0.6)≈y3=0.2×0.6144×(4-0.4×0.6144)=0.4613 例2 ⽤欧拉预报-校正公式求解初值问题取步长h=0.2,计算y(1.2),y(1.4)的近似值,⼩数点后⾄少保留5位。

解步长h=0.2,此时f(x,y)=-y-y2sin x欧拉预报-校正公式为:有迭代格式:当k=0,x0=1,y0=1时,x1=1.2,有=y0(0.8-0.2y0sin x0)=1×(0.8-0.2×1sin1)=0.63171y(1.2)≈y1=1×(0.9-0.1×1×sin1)-0.1(0.63171+0.631712sin1.2)=0.71549 当k=1,x1=1.2,y1=0.71549时,x2=1.4,有=y1(0.8-0.2y1sin x1)=0.71549×(0.8-0.2×0.71549sin1.2)=0.47697y(1.4)≈y2=0.71549×(0.9-0.1×0.71549×sin1.2)-0.1(0.47697+0.476972sin1.4)=0.52611例3写出⽤四阶龙格――库塔法求解初值问题的计算公式,取步长h=0.2计算y(0.4)的近似值。

初值问题的解

初值问题的解

初值问题的解初值问题的解是微分方程中的一个特解,它是通过给定的初始条件来求解该微分方程得到的解。

在数学和物理学中,初值问题广泛应用于描述各种现象和过程,如弹簧振子、电路、自由落体等等。

本文将介绍初值问题的定义、解的存在唯一性以及一些常见的求解方法。

首先,我们来定义初值问题。

设有一个形如$y'=f(x, y)$的一阶微分方程,其中$f(x, y)$是一个已知函数。

给定一个点$(x_0, y_0)$作为初始条件,求解在该点上的解$y(x)$即为初值问题的解。

数学上可以表示为以下初值问题:$$\begin{cases}y'(x) = f(x, y) \\y(x_0) = y_0\end{cases}$$接下来,我们来探讨初值问题解的存在唯一性。

对于一阶微分方程来说,当函数$f(x, y)$满足一定的条件时,初值问题的解是存在且唯一的。

这个条件就是函数$f(x, y)$对于变量$y$满足Lipschitz条件。

Lipschitz条件是指存在一个正常数$L$,使得对于所有满足初值条件的$(x, y_1)$和$(x, y_2)$,有以下不等式成立:$$|f(x, y_1) - f(x, y_2)| \leq L|y_1 - y_2|$$当函数$f(x, y)$满足Lipschitz条件时,由皮卡-林德津定理可知初值问题存在且唯一解。

这个定理指出,在满足Lipschitz条件的情况下,通过初始条件和微分方程可以确定一个确定的解,这个解在某个区间上是唯一的。

现在我们来介绍一些常见的求解初值问题的方法。

最常用的方法是欧拉法和改进欧拉法。

欧拉法是一种数值解法,它利用微分方程的定义进行逐步逼近。

通过将区间分割成若干小段,欧拉法根据微分方程的导数来计算每个小段的斜率,并以此为依据进行逼近计算。

改进欧拉法是对欧拉法的一种改进,它利用欧拉法中的两步逼近来提高精度。

改进欧拉法先计算出下一个点的初始斜率,然后再利用这个初始斜率进行逼近计算,从而得到更准确的结果。

数值分析简明教程课后习题答案(第二版)

数值分析简明教程课后习题答案(第二版)

算法1、 (,题1)用二分法求方程013=--x x 在[1,2]内的近似根,要求误差不超过10-3.【解】 由二分法的误差估计式311*10212||-++=≤=-≤-εk k k a b x x ,得到100021≥+k .两端取自然对数得96.812ln 10ln 3≈-≥k ,因此取9=k ,即至少需%2、(,题2) 证明方程210)(-+=x e x f x在区间[0,1]内有唯一个实根;使用二分法求这一实根,要求误差不超过21021-⨯。

【解】 由于210)(-+=x e x f x ,则)(x f 在区间[0,1]上连续,且012010)0(0<-=-⨯+=e f ,082110)1(1>+=-⨯+=e e f ,即0)1()0(<⋅f f ,由连续函数的介值定理知,)(x f 在区间[0,1]上至少有一个零点.又010)('>+=x e x f ,即)(x f 在区间[0,1]上是单调的,故)(x f 在区间[0,1]内有唯一实根.由二分法的误差估计式211*1021212||-++⨯=≤=-≤-εk k k a b x x ,得到1002≥k .两端取自然对数得6438.63219.322ln 10ln 2=⨯≈≥k ,因此取7=k ,即至少需二分【误差1.(,题8)已知e=…,试问其近似值7.21=x ,71.22=x ,x 2=,718.23=x 各有几位有效数字并给出它们的相对误差限。

【解】有效数字:因为11102105.001828.0||-⨯=<=- x e ,所以7.21=x 有两位有效数字; 因为12102105.000828.0||-⨯=<=- x e ,所以71.22=x 亦有两位有效数字;因为3310210005.000028.0||-⨯=<=- x e ,所以718.23=x 有四位有效数字;%85.17.205.0||111=<-=x x e r ε; %85.171.205.0||222=<-=x x e r ε; %0184.0718.20005.0||333=<-=x x e r ε。

计算机数值方法试题

计算机数值方法试题

一、填空(共20分,每题2分)1、设,取5位有效数字,则所得的近似值x=_____.2、设一阶差商,则二阶差商3、数值微分中,已知等距节点的函数值则由三点的求导公式,有4、求方程的近似根,用迭代公式,取初始值,那么5、解初始值问题近似解的梯形公式是6、,则A的谱半径=,A的=7、设,则=和=8、若线性代数方程组AX=b 的系数矩阵A为严格对角占优阵,则雅可比迭代和高斯-塞德尔迭代都_____9、解常微分方程初值问题的欧拉(Euler)方法的局部截断误差为_____10、设,当时,必有分解式,其中L为下三角阵,当其对角线元素足条件时,这种分解是唯一的。

二、计算题(共60 分,每题15分)1、设(1)试求在上的三次Hermite插值多项式H(x)使满足 H(x)以升幂形式给出。

(2)写出余项的表达式2、已知的满足,试问如何利用构造一个收敛的简单迭代函数,使0,1…收敛?3、试确定常数A,B,C和,使得数值积分公式有尽可能高的代数精度。

试问所得的数值积分公式代数精度是多少?它是否为Gauss型的?4、推导常微分方程的初值问题的数值解公式:三、证明题1、设(1)写出解的Newton迭代格式(2)证明此迭代格式是线性收敛的2、设R=I-CA,如果,证明:(1)A、C都是非奇异的矩阵(2)参考答案:一、填空题1、2、3、4、5、6、7、8、收敛9、O(h)10、二、计算题1、1、(1)(2)2、由,可得因故故,k=0,1,…收敛。

3、,该数值求积公式具有5次代数精确度,它是Gauss型的4、数值积分方法构造该数值解公式:对方程在区间上积分,得,记步长为h,对积分用Simpson求积公式得所以得数值解公式:三、证明题1、证明:(1)因,故,由Newton迭代公式:n=0,1,…得,n=0,1,…(2)因迭代函数,而,又,则故此迭代格式是线性收敛的。

2、证明:(1)因,所以I–R非奇异,因I–R=CA,所以C,A都是非奇异矩阵 (2) 故则有()因CA=I–R,所以C=(I–R)A-1,即A-1=(I–R)-1C又RA-1=A-1–C,故由(这里用到了教材98页引理的结论)移项得结合()、两式,得模拟试题一、填空题(每空2分,共20分)1、解非线性方程f(x)=0的牛顿迭代法具有_______收敛2、迭代过程(k=1,2,…)收敛的充要条件是___3、已知数 e=...,取近似值 x=,那麽x具有的有效数字是___4、高斯--塞尔德迭代法解线性方程组的迭代格式中求______________5、通过四个互异节点的插值多项式p(x),只要满足_______,则p(x)是不超过二次的多项式6、对于n+1个节点的插值求积公式至少具有___次代数精度.7、插值型求积公式的求积系数之和___8、 ,为使A可分解为A=LL T, 其中L为对角线元素为正的下三角形,a的取值范围_9、若则矩阵A的谱半径(A)=___10、解常微分方程初值问题的梯形格式是___阶方法二、计算题(每小题15分,共60分)1、用列主元消去法解线性方程组2、已知y=f(x)的数据如下求二次插值多项式及f()3、用牛顿法导出计算的公式,并计算,要求迭代误差不超过。

微分方程数值解使用数值方法求解微分方程

微分方程数值解使用数值方法求解微分方程

微分方程数值解使用数值方法求解微分方程微分方程是描述自然现象中变化的数学模型,它是数学和科学研究中的重要工具。

然而,许多微分方程并没有精确的解析解,因此需要使用数值方法来近似求解。

本文将介绍一些常用的数值方法来求解微分方程,包括欧拉方法、改进的欧拉方法和龙格-库塔方法。

一、欧拉方法欧拉方法是最简单、最基础的数值方法之一。

它基于微分方程解的定义,通过离散化自变量和因变量来逼近解析解。

假设我们要求解的微分方程为dy/dx = f(x, y),初始条件为y(x0) = y0。

将自变量x分割成若干个小区间,步长为h,得到x0, x1, x2, ..., xn。

根据微分方程的定义,我们可以得到递推公式 yn+1 = yn + h*f(xn, yn)。

用代码表示即为:```def euler_method(f, x0, y0, h, n):x = [x0]y = [y0]for i in range(n):xn = x[i]yn = y[i]fn = f(xn, yn)xn1 = xn + hyn1 = yn + h*fnx.append(xn1)y.append(yn1)return x, y```二、改进的欧拉方法欧拉方法存在着局部截断误差,即在每个小区间上的误差。

改进的欧拉方法是对欧拉方法的改进,可以减小截断误差。

它的递推公式为yn+1 = yn + h*(f(xn, yn) + f(xn+1, yn+1))/2。

用代码表示即为:```def improved_euler_method(f, x0, y0, h, n):x = [x0]y = [y0]for i in range(n):xn = x[i]yn = y[i]fn = f(xn, yn)xn1 = xn + hyn1 = yn + h*(fn + f(xn1, yn + h*fn))/2x.append(xn1)y.append(yn1)return x, y```三、龙格-库塔方法龙格-库塔方法是一种更加精确的数值方法,它通过计算多个递推式的加权平均值来逼近解析解。

MATLAB常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法

MATLAB常微分方程数值解——欧拉法、改进的欧拉法与四阶龙格库塔方法

MATLAB常微分⽅程数值解——欧拉法、改进的欧拉法与四阶龙格库塔⽅法MATLAB常微分⽅程数值解作者:凯鲁嘎吉 - 博客园1.⼀阶常微分⽅程初值问题2.欧拉法3.改进的欧拉法4.四阶龙格库塔⽅法5.例题⽤欧拉法,改进的欧拉法及4阶经典Runge-Kutta⽅法在不同步长下计算初值问题。

步长分别为0.2,0.4,1.0.matlab程序:function z=f(x,y)z=-y*(1+x*y);function R_K(h)%欧拉法y=1;fprintf('欧拉法:x=%f, y=%f\n',0,1);for i=1:1/hx=(i-1)*h;K=f(x,y);y=y+h*K;fprintf('欧拉法:x=%f, y=%f\n',x+h,y);endfprintf('\n');%改进的欧拉法y=1;fprintf('改进的欧拉法:x=%f, y=%f\n',0,1);for i=1:1/hx=(i-1)*h;K1=f(x,y);K2=f(x+h,y+h*K1);y=y+(h/2)*(K1+K2);fprintf('改进的欧拉法:x=%f, y=%f\n',x+h,y);endfprintf('\n');%龙格库塔⽅法y=1;fprintf('龙格库塔法:x=%f, y=%f\n',0,1);for i=1:1/hx=(i-1)*h;K1=f(x,y);K2=f(x+h/2,y+(h/2)*K1);K3=f(x+h/2,y+(h/2)*K2);K4=f(x+h,y+h*K3);y=y+(h/6)*(K1+2*K2+2*K3+K4);fprintf('龙格库塔法:x=%f, y=%f\n',x+h,y);end结果:>> R_K(0.2)欧拉法:x=0.000000, y=1.000000欧拉法:x=0.200000, y=0.800000欧拉法:x=0.400000, y=0.614400欧拉法:x=0.600000, y=0.461321欧拉法:x=0.800000, y=0.343519欧拉法:x=1.000000, y=0.255934改进的欧拉法:x=0.000000, y=1.000000改进的欧拉法:x=0.200000, y=0.807200改进的欧拉法:x=0.400000, y=0.636118改进的欧拉法:x=0.600000, y=0.495044改进的欧拉法:x=0.800000, y=0.383419改进的欧拉法:x=1.000000, y=0.296974龙格库塔法:x=0.000000, y=1.000000龙格库塔法:x=0.200000, y=0.804636龙格库塔法:x=0.400000, y=0.631465龙格库塔法:x=0.600000, y=0.489198龙格库塔法:x=0.800000, y=0.377225龙格库塔法:x=1.000000, y=0.291009>> R_K(0.4)欧拉法:x=0.000000, y=1.000000欧拉法:x=0.400000, y=0.600000欧拉法:x=0.800000, y=0.302400改进的欧拉法:x=0.000000, y=1.000000改进的欧拉法:x=0.400000, y=0.651200改进的欧拉法:x=0.800000, y=0.405782龙格库塔法:x=0.000000, y=1.000000龙格库塔法:x=0.400000, y=0.631625龙格库塔法:x=0.800000, y=0.377556>> R_K(1)欧拉法:x=0.000000, y=1.000000欧拉法:x=1.000000, y=0.000000改进的欧拉法:x=0.000000, y=1.000000改进的欧拉法:x=1.000000, y=0.500000龙格库塔法:x=0.000000, y=1.000000龙格库塔法:x=1.000000, y=0.303395注意:在步长h为0.4时,要将for i=1:1/h改为for i=1:0.8/h。

数值分析习题解答

数值分析习题解答

45习题八 习题解答1.取步长h = 0.2,用欧拉方法解初值问题)6.00(1)0(2≤≤⎩⎨⎧=−−=′x y xy y y 解:由f (x ,y ) = – y – x y 2,欧拉公式为y n+1 = y n + h [– y n – x n y n 2]即y n+1 = (1 – h )y n – h x n y n 2由y 0 = 1计算,得y 1= 0.8,y 2= 0.6144,y 3 = 0.46132.用梯形公式解初值问题)21(2)1(38≤≤⎩⎨⎧=−=′x y y y取步长h = 0.2,小数点后至少保留5位. 解:由f (x ,y ) = 8 – 3 y ,梯形公式为y n +1 = y n + 0.5h [(8 – 3 y n ) + (8 – 3 y n +1)]将h = 0.2代入并整理,得13161371+=+n n y y 由y 0 = 2计算,得y 1 = 2.30769,y 2 = 2.47337,y 3 = 22.56258,y 4 = .61062,y 5 = 2.636493.用改进的欧拉公式计算初值问题)5.11(5.0)1(112<<⎪⎩⎪⎨⎧=−=′x y yx y x y 取步长h = 0.1,并与精确解xxx y +=1)(比较. 解:改进的Euler 公式为nn nn n x y y h y y )1(~1−+=+ ])~1(~)1([5.011++−+−+=n n n n n n n n x y y x y y h y y 由y 0 = 0.5计算得1 1.1 1.2 1.3 1.4 1.5y n0.5000 0.5238 0.5455 0.5653 0.5834 0.6001 y (x n )0.5000 0.5238 0.5455 0.5652 0.5833 0.6000 y n – y (x n ) 0 0.2570×10-40.4503×10-40.5962×10-40.7066×10-4 0.7902×10-44.写出用梯形公式求解初值问题⎩⎨⎧==+′1)0(0y y y 的计算格式,取步长1.0=h ,并求)2.0(y 的近似值,要求迭代误差不超过510−.46解:由梯形公式为:][211+++−=n n n n y y hy y ,故计算格式为 n n y hh y +−=+221故,y 1 =0.9048,y 2 =0.8186。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用改进的欧拉方法和四阶龙格-库塔方法解初值问题
一、题目:
取步长2.0=h ,分别用改进的欧拉方法和四阶龙格—库塔方法解初值问题

⎨⎧=≤≤+=.1)0(;10,'y x y x y 并比较结果。

二、基本思想:
1.改进的欧拉方法
改进的欧拉方法用梯形公式计算()()()()+1+1-=,.n n x n n x y x y x f x y x dx ⎰中的积分,并以
n y 和+1n y 分别表示()n y x 和()+1n y x 的近似值,就得到
()()()+1+1+1=+,+,.2
n n n n n n h y y f x y f x y (梯形公式) 梯形公式也是一个一步法公式。

由于公式右端也含有未知的+1n y ,故被称作是隐式的。

隐式格式实际上是关于+1n y 的一个函数方程。

为了避免解方程,可以采用欧拉方法计算初始值,再由梯形公式计算。

这样建立起来的计算格式称为改进的欧拉格式:
()()()()+1+1+1=+,,=+,+,.2
p n n n n n n n n n y y hf x y h y y f x y f x y ⎧⎪⎨⎪⎩ 梯形公式也可以采用迭代法求解。

如果仍然采用欧拉方法计算迭代初值,那么计算格式就是
[]()[]()[]()()
0+1+1+1+1+1=+,,=+,+,.2n n
n n k k n n n n n n y y hf x y h y y f x y f x y ⎧⎪⎨⎪⎩ 由于已假定(),f x y 满足里普希兹条件,所以有
[][][]()[]()
[][]+1-1-1+1+1+1,+1+1+1+1+1-=-,-.22
k k k k k k n n n n n n n n h hL y y f x y f x y y y ≤ 从而,迭代的收敛条件是0<<1.2hL 2.四阶龙格-库塔方法
龙格—库塔方法不是用求导数的办法,而是用计算不同点上()y x f ,的函数值,然后对这些函数值作线性拟合,构造近似公式。

组合的原则是使得近似公式与泰勒展开式有尽可能多的项吻合,以达到较高的精度。

改进的欧拉格式
()()()()+1+1+1=+,,=+,+,.2
p n n n n n n n n n y y hf x y h y y f x y f x y ⎧⎪⎨⎪⎩ 可以改写为
()2112
1K K y y n n ++
=+, 其中 ()().,,
,1121K y x hf K y x hf K n n n n +==+
可见改进的欧拉格式可这样理解:首先计算()n n y x ,和()11,K y x n n ++两点的函数值()n n y x f ,和()11,K y x f n n ++,然后以它们的算术平均值作为()y x f ,的近似值,而点()+11,+n n x y K 中的1K 则是通过已知值n y 来预报的。

这个处理过程告诉我们:如果设法多计算几个点处的函数值,然后以这些值得某种加权平均值作为(),f x y 的近似值,则有可能构造出更精确的计算格式。

一般地龙格—库塔格式可以写成
+1=1=+,N
n n i i i y y C K ∑
其中
()1-1=1,,
=+,+, =2,3,
,.n n i i n i n ij j j K hf x y K hf x a h y b K i N =⎛⎫ ⎪⎝⎭∑
选择参数,,i i ij C a b 的原则是:要求+1=1
=+
,N n n i i i y y C K ∑的右端在(),n n x y 处的泰勒展开式按h 的幂重新排列后得到的 23+1123=++++
n n y y d h d h d
h
与微分方程的解()+1n y x 在点n x 的展开式 ()()()()()'2''3'''+111=++++2!3!n n n n n y x y x hy x h y x h y
x
又尽可能多的项重合。

经典的四阶龙格—库塔方法的计算公式是:
()()()+11234121324
31=+22,6,,11+,+,2211+,+,22+,+.n n n n n n n n n n y y K K K K K hf x y K hf x h y K K hf x h y K K hf x h y K ⎧+++⎪⎪⎪=⎪⎪⎛⎫=⎨ ⎪⎝⎭⎪⎪⎛⎫=⎪ ⎪⎝⎭⎪⎪=⎩ 三、程序设计:
1.改进的欧拉方法
eulerpro.m 文件
function [x,y]=eulerpro(h,x0,y0);
x(1)=x0;y(1)=y0;
for i=1:10;
x(i+1)=x(i)+h;
y1=y(i)+h*(x(i)+y(i));
y2=y(i)+h*(x(i+1)+y1);
y(i+1)=(y1+y2)/2;
end
计算:[x,y]=eulerpro(0.1,0,1)
2.四阶龙格-库塔方法
lgkt4j.m 文件
function [x,y]=lgkt4j(x0,y0,h)
x(1)=x0;y(1)=y0;
for i=1:10
x(i+1)=x(i)+h;
K1=h*(x(i)+y(i));
K2=h*(x(i)+1/2*h+y(i)+1/2*K1);
K3=h*(x(i)+1/2*h+y(i)+1/2*K2);
K4=h*(x(i)+h+y(i)+K3); y(i+1)=y(i)+1/6*(K1+2*K2+2*K3+K4);
end
计算:[x,y]=lgkt4j(0,1,0.1)
四、结果分析:
改进的欧拉方法运行结果:
x = 0 0.1000 0.2000 0.3000
0.4000 0.5000 0.6000 0.7000
0.8000 0.9000 1.0000
y = 1.0000 1.1100 1.2421 1.3985
1.5818 1.7949
2.0409 2.3231
2.6456
3.0124 3.4282
四阶龙格-库塔方法运行结果:
x = 0 0.1000 0.2000 0.3000
0.4000 0.5000 0.6000 0.7000
0.8000 0.9000 1.0000
y =1.0000 1.1103 1.2428 1.3997
1.5836 1.7974
2.0442 2.3275
2.6511
3.0192 3.4366
准确解:
x = 0 0.1000 0.2000 0.3000
0.4000 0.5000 0.6000 0.7000
0.8000 0.9000 1.0000
y= 1.0000 1.1103 1.2428 1.3997
1.5836 1.7974
2.0442 2.3275
2.6511
3.0192 3.4366
比较计算结果可得四阶龙格-库塔方法更接近准确解。

改进的欧拉方法的局部误差为()3hο,整体截断误差为()2hο,而四阶龙格-库塔方法的局部截断误差为()5hο,整体截断误差为()4hο,误差明显小于改进的欧拉方法的误差,所以龙格库塔方法更接近于准确值。

相关文档
最新文档