数值分析上机实验报告 下载本文

内容发布更新时间 : 2024/5/11 5:32:35星期一 下面是文章的全部内容请认真阅读。

哈工大A16公寓1214室 院士之家团队之作品

(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同)

和隐式公式组成,其计算公式如式(3)所示。

预测 yn?1?yn?(55fn?59fn?1?37fn?2?9fn?3)h/24 (3a) 求导 fn?1?f(xn?1,yn?1) (3b) 校正 yn?1?yn?(9fn?1?19fn?5fn?1?fn?2)h/24 (3c) 求导 fn?1?f(xn?1,yn?1) (3d)

将局部截断误差用预测值和校正值来表示,在预测和校正的公式中分别以它们各自的阶段误差来进行弥补,可期望的到精度更高的修正的预测-校正公式为:

预测 pn?1?yn?(55fn?59fn?1?37fn?2?9fn?3)h/24 修正 mn?1?pn?1?(cn?pn)251/270 求导 fn?1?f(xn?1,mn?1)

校正 cn?1?yn?(9fn?1?19fn?5fn?1?fn?2)h/24 修正 yn?1?cn?1?(cn?1?pn?1)19/270 求导 fn?1?f(xn?1,yn?1)

由于开始时无预测值和校正值可以利用,故令p0=c0=0,以后按上面进行计算。此方法的优点是可以减少计算量;缺点是它不是自开始的,需要先知道前面的四个点的值

y0,y1,y2,y3,因此不能单独使用。另外,它也不便于改变步长。 程序设计:

本实验采用Matlab的M文件编写。其中待求的微分方程写成function的方式,如下

function yy=g(x,y); yy=-x*x-y*y;

写成如上形式即可,下面给出主程序。

经典四阶的R-K方法源程序

clear

%%%步长选取 h=0.1;

%%%初始条件,即x=0时,y=1。 y(1)=1; %%%求解区间 a=0; b=2;

%%%迭代公式 for x=a:h:b-h;

k1=g(x,y((x-a)/h+1));%%g(x)?y'(x),下同。 k2=g(x+h/2,y((x-a)/h+1)+h/2*k1); k3=g(x+h/2,y((x-a)/h+1)+h/2*k2);

.26.

哈工大A16公寓1214室 院士之家团队之作品

(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同)

k4=g(x+h,y((x-a)/h+1)+h*k3);

y((x-a)/h+2)=y((x-a)/h+1)+h*(k1+2*k2+2*k3+k4)/6; end

四阶Adams预测-校正方法源程序

%%%步长选取 h=0.1; %%%初始条件 y(1)=1; %%%求解区间 a=0; b=2;

%%%应用RK迭代公式计算初始值y0,y1,y2,y3 for x=a:h:a+2*h;

k1=g(x,y((x-a)/h+1));

k2=g(x+h/2,y((x-a)/h+1)+h/2*k1); k3=g(x+h/2,y((x-a)/h+1)+h/2*k2); k4=g(x+h,y((x-a)/h+1)+h*k3);

y((x-a)/h+2)=y((x-a)/h+1)+h*(k1+2*k2+2*k3+k4)/6; end

%%%应用预测校正法求解 c(4)=0;%%%校正初值 p(4)=0;%%%预测初值

f(1)=g(a+0*h,y(1)); g(x)?y'(x),且将该值存在数组f中。 f(2)=g(a+1*h,y(2)); f(3)=g(a+2*h,y(3)); f(4)=g(a+3*h,y(4)); for n=4:(b-a)/h; %%%P预测

p(n+1)=y(n)+h/24*(55*f(n)-59*f(n-1)+37*f(n-2)-9*f(n-3)); %%%M修正

m(n+1)=p(n+1)+251/270*(c(n)-p(n)); %%%E求导

f(n+1)=g(a+(n+1-1)*h,m(n+1)); %%%C校正

c(n+1)=y(n)+h/24*(9*f(n+1)+19*f(n)-5*f(n-1)+f(n-2));

.27.

哈工大A16公寓1214室 院士之家团队之作品

(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同)

%%%M修正

y(n+1)=c(n+1)-19/270*(c(n+1)-p(n+1)); %%%E求导

f(n+1)=g(a+(n+1-1)*h,y(n+1)); end

结果分析和讨论:

?y'?x2?y2计算实例一:对初值问题?取步长h=0.1;计算在[-1,0]上的数值解。

?y(?1)?0在计算机上,运用所编的程序进行了运算,结果如下,其中第一列为在区间上的等分点,第二列为运用R-K法的计算结果,第三列为Adams预测-校正法计算结果。由于本题的解析解很难求出,无法看出精度如何,为此进行第二实例计算。

第一实例计算结果

-1.00000000000000 0 0 -0.90000000000000 0.09004735746240 0.09004735746240 -0.80000000000000 0.16072688390128 0.16072688390128 -0.70000000000000 0.21348265038268 0.21348265038268 -0.60000000000000 0.25036836954459 0.25036768670937 -0.50000000000000 0.27377524760451 0.27377644362732 -0.40000000000000 0.28622191831814 0.28622489850956 -0.30000000000000 0.29021334157377 0.29021772444822 -0.20000000000000 0.28816017093689 0.28816545338237 -0.10000000000000 0.28234366396114 0.28234937949911 0 0.27491051923462 0.27491630159737

?y'?y?2x/y计算实例二:对初值问题?取步长h=0.1;计算在[0,1.5]上的数值解。本

?y(0)?1题的解析解为y?1?2x。

同样在计算机上,运用所编的程序进行了运算,结果如下,其中第一列为在区间上的等分点,第二列为运用R-K法的计算结果,第三列为Adams预测-校正法计算结果,第四列为精确解。

第二实例计算结果

0 1.00000000000000 1.00000000000000 1.00000000000000 0.10000000000000 1.09544553169309 1.09544553169309 1.09544511501033 0.20000000000000 1.18321674550599 1.18321674550599 1.18321595661992 0.30000000000000 1.26491222834039 1.26491222834039 1.26491106406735 0.40000000000000 1.34164235375037 1.34163505213867 1.34164078649987

.28.

哈工大A16公寓1214室 院士之家团队之作品

(Ps:请各位师兄弟姐妹们抄的时候注意改动一下,尽量不要太雷同)

0.50000000000000 1.41421557789009 1.41420723934048 1.41421356237310 0.60000000000000 1.48324222277199 1.48323305700166 1.48323969741913 0.70000000000000 1.54919645230214 1.54918577363467 1.54919333848297 0.80000000000000 1.61245534965899 1.61244282116642 1.61245154965971 0.90000000000000 1.67332465901626 1.67330987517170 1.67332005306815 1.00000000000000 1.73205636516557 1.73203885072786 1.73205080756888 1.10000000000000 1.78886106772579 1.78884027572849 1.78885438199983 1.20000000000000 1.84391691853791 1.84389219922183 1.84390889145858 1.30000000000000 1.89737622177080 1.89734679793772 1.89736659610103 1.40000000000000 1.94937040329812 1.94933534308208 1.94935886896179

1.50000000000000 2.00001381661027 1.99997200061724 2.00000000000000

根据计算结果,发现两种方法的结果与精确解很接近,精度均达到5位有效数字,但是R-K法运算是占用的内存要比Adams预测-校正法多,即其对计算机的要求要高一些,这与理论分析吻合。当然,四阶Adams预测-校正法的启动要由R-K法给出,即y0,y1,y2,y3的值需预先知道。

.29.