数值分析实验报告_第1页
数值分析实验报告_第2页
数值分析实验报告_第3页
数值分析实验报告_第4页
数值分析实验报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数值分析实验报告(第二章)实验题目:分别用二分法、牛顿迭代法、割线法、史蒂芬森迭代法求方程fx=x2+1x-15=0的根x=1,观察不同初始值下的收敛性,并给出结论。问题分析:题目有以下几点要求:1. 不同的迭代法计算根,并比较收敛性。2. 选定不同的初始值,比较收敛性。实验原理:各个迭代法简述二分法:取有根区间a,b的重点x0,确定新的有根区间a1,b1的区间长度仅为a,b区间长度的一版。对压缩了的有根区间a1,b1重复以上过程,又得到新的有根区间a2,b2,其区间长度为a1,b1的一半,如此反复,可得一系列有根区间,区间收敛到一个点即为根。牛顿迭代法:不动点迭代法的一种特例,具有局部二次收

2、敛的特性。迭代格式为xn+1=xn-fxnf'xn , n=0,1,2, 割线法:是牛顿法的改进,具有超线性收敛的特性,收敛阶为1.618. 迭代格式为xn+1=xn-fxnfxn-fxn-1xn-xn-1 , n=1,2, 史蒂芬森迭代法:采用不动点迭代进行预估校正。至少是平方收敛的。迭代格式为yn=xnzn=ynxn+1=xn-(yn-xn)2zn-2yn+xn 这里x可采用牛顿迭代法的迭代函数。实验内容:1. 写出该问题的fx函数代码如下:function py= f(x)syms k;y=(k2+1)*(k-1)5;yy=diff(y,k);py(1)=subs(y,k,x);

3、py(2)=subs(yy,k,x);end2. 分别写出各个迭代法的迭代函数代码如下:二分法:function y=dichotomie(a,b,e)i=2;m(1)=a;while abs(a-b)>e t=(a+b)/2; s1=f(a); s2=f(b); s3=f(t); if s1(1)*s3(1)<=0 b=t; else a=t; end m(i)=t; i=i+1;endy=t,i+1,m;end牛顿迭代法:function y=NewtonIterative(x,e)i=2;en=2*e;m(1)=x;while abs(en)>=e s=f(x); t=

4、x-s(1)/s(2); en=t-x; x=t; m(i)=t; i=i+1;endy=x,i+1,m;end牛顿割线法:function y=Secant(x1,x2,e)i=3;m(1)=x1,m(2)=x2;while abs(x2-x1)>=e s1=f(x1); s2=f(x2); t=x2-(x2-x1)*s2(1)/(s2(1)-s1(1); x1=x2; x2=t; m(i)=t; i=i+1;endy=x2,i+1,m;end史蒂芬森迭代法:Function p=StephensonIterative(x,e)i=2;m(2)=x;en=2*e;while abs(e

5、n)>=e y=fai(x); z=fai(y); t=x-(y-x)2/(z-2*y+x); en=t-x; x=t; m(i)=t; i=i+1;endp=x,i+1,m;end3. 因为x经常被使用,故可以写一个x函数。代码如下:function y=fai(x) s=f(x); y=x-s(1)/s(2);end4. 可以绘制不同的图形来比较不同迭代法的收敛性和不同初值下的收敛性。代码如下:clear all;%相同初始值,不同迭代法下的收敛x1=dichotomie(0,3,1e-10);x2=NewtonIterative(0,1e-10);x3=Secant(0,2, 1e

6、-10);x4=StephensonIterative(0,1e-10);x1(2),x2(2),x3(2),x4(2)figure,subplot(2,2,1),plot(x1(3:x1(2),title('二分法');subplot(2,2,2),plot(x2(3:x2(2),title('牛顿迭代法');subplot(2,2,3),plot(x3(3:x3(2),title('牛顿割线法');subplot(2,2,4),plot(x4(3:x4(2),title('史蒂芬森迭代法');figure,subplot(2,

7、2,1),plot(x1(4:x1(2)-1)-x1(1)./(x1(3:x1(2)-2)-x1(1),title('二分法');subplot(2,2,2),plot(x2(4:x2(2)-1)-x2(1)./(x2(3:x2(2)-2)-x2(1),title('牛顿迭代法');subplot(2,2,3),plot(x3(4:x3(2)-1)-x3(1)./(x3(3:x3(2)-2)-x3(1),title('牛顿割线法');subplot(2,2,4),plot(x4(4:x4(2)-1)-x4(1)./(x4(3:x4(2)-2)-x

8、4(1),title('史蒂芬森迭代法');%不同初始值,相同迭代法下的收敛性x5=dichotomie(-1,1,1e-10);x6=dichotomie(-2,3,1e-10);x7=dichotomie(0,4,1e-10);x8=dichotomie(-4,4,1e-10);x9=NewtonIterative(-2,1e-10);x10=NewtonIterative(-4,1e-10);x11=NewtonIterative(4,1e-10);x12=NewtonIterative(6,1e-10);figure,subplot(1,2,1),plot(1:x1(2

9、)-2,x1(3:x1(2),1:x5(2)-2,x5(3:x5(2),1:x6(2)-2,x6(3:x6(2),1:x7(2)-2,x7(3:x7(2),1:x8(2)-2,x8(3:x8(2),title('二分法');subplot(1,2,2),plot(1:x2(2)-2,x2(3:x2(2),1:x9(2)-2,x9(3:x9(2),1:x10(2)-2,x10(3:x10(2),1:x11(2)-2,x11(3:x11(2),1:x12(2)-2,x12(3:x12(2),title('牛顿迭代法');x13=Secant(-1,1, 1e-10)

10、;x14=Secant(-4,5, 1e-10);x15=Secant(0,7, 1e-10);x16=Secant(-8,2, 1e-10);x17=StephensonIterative(-1,1e-10);x18=StephensonIterative(-4,1e-10);x19=StephensonIterative(4,1e-10);x20=StephensonIterative(6,1e-10);figure,subplot(1,2,1),plot(1:x3(2)-2,x3(3:x3(2),1:x13(2)-2,x13(3:x13(2),1:x14(2)-2,x14(3:x14(2

11、),1:x15(2)-2,x15(3:x15(2),1:x16(2)-2,x16(3:x16(2),title('牛顿割线法');subplot(1,2,2),plot(1:x4(2)-2,x4(3:x4(2),1:x17(2)-2,x17(3:x17(2),1:x18(2)-2,x18(3:x18(2),1:x19(2)-2,x19(3:x19(2),1:x20(2)-2,x20(3:x20(2),title('史蒂芬森迭代法');实验结果:1. 各个迭代值分布图 1.1 不同迭代法下的得到的迭代值迭代值的情况如下:二分法牛顿迭代法牛顿割线法史蒂芬森迭代法00

12、001.50000000000.20000000002.00000000001.35555555560.75000000000.37049180320.33333333330.98161652831.12500000000.50764420760.38071968010.99994600030.93750000000.61461894470.49828334190.99999999951.03125000000.69738690980.57049963330.98437500000.76155380910.63938062441.00781250000.81154111860.69427858

13、790.99609375000.85067638570.74116926531.00195312500.88144821230.78027159970.99902343750.90572974000.8132927871当二分法的初始区间选为0,3,误差限为1×10-10,牛顿迭代法初值选为0,误差限为1×10-10,牛顿割线法初始点为0,2,误差限为1×10-5,史蒂芬森迭代法初始点选为0,误差限为1×10-10,迭代情况如图所示。迭代次数分别为38次,100次,140次,9次。故而,史蒂芬森迭代法速度最快,效果最好。2. 收敛情况图 1.2 不同迭代

14、法下迭代值得收敛情况二分法收敛效果较差,牛顿迭代法和牛顿割线法相近,史蒂芬森迭代法收敛次数高于1,效果最好3. 不同初值的收敛情况图 1.3 二分法,牛顿迭代法下不同初值的收敛情况图 1.4 牛顿割线法,史蒂芬森迭代法下不同初值的收敛情况1. 二分法的五个初始区间分别为0,3,-1,1,-2,3,0,4,-4,4;2. 牛顿迭代法的五个初始值分别为0,-2,-4,4,6;3. 牛顿割线法的五个初始区间分别为0,2,-1,1,-4,5,0,7,-8,2;4. 史蒂芬森迭代法的五个初始值分别为0,-1,-4,4,6;由图可知,它们最终均达到收敛。收敛性分析及结论:1. 二分法收敛较慢且不能求解崇根

15、,但算法简单;此处牛顿法具有了平方收敛;从迭代次数上看,牛顿割线法较牛顿法的多,所以收敛性较差,是超线性收敛;史蒂芬森迭代法收敛效果最好。2. 因为牛顿迭代法是局部的二次收敛,所以要注重初值的选取,本次实验中选择的初值均得到了收敛,效果比较好。牛顿割线法也应注意初值的选取。(第三章)实验题目:1. 区间-1,1作等距划分:xk=-1+kh , h=2n , k=0,1,n以xk为结点对函数fx=15+x2进行插值逼近。(1) 分别取h=1,5,10,20,25用牛顿插值对fx进行逼近,并在同一坐标系下做出函数的图形,进行比较。写出插值函数对fx的逼近程度与节点个数的关系,并分析原因;(2) 试

16、用三次样条插值对fx进行逼近,在同一坐标下画出图形,观察样条插值函数对fx的逼近程度与节点个数的关系;(3) 整体插值有何局限性?如何避免?2. 已知一组数据如下,求其拟合曲线.表 2.1 数据表i012345678910xi23478101114161819yi106.42108.2109.5110109.93110.49110.59110.6110.76111111.2(1) 求以上数据形如 yx=c0+c1x+c2x2 的拟合曲线及其平方误差;(2) 求以上数据形如 yx=ae-bx 的拟合曲线及其平方误差;(3) 通过观察(1)(2)的结果,写出你对数据拟合的认识.问题分析:题目除上述

17、要求之外还有以下几点:1. 明确整体插值和分段插值的不同。牛顿插值多项式属于整体插值,三次样条插值属于低次分段插值。2. 将结果在同一坐标下绘制出。但是为了方便分析节点个数对于插值效果的影响,也可以单独绘制。3. 第二题中为了确定各个参数的大小,可以进行适当变换,转化为线性,运用最小二乘法,得到拟合。实验原理:牛顿插值多项式:对于给定的插值节点 ax0<x1<<xnb , 构造次数不超过 n 的插值多项式Nnx=a0+a1x-x0+a2x-x0x-x1+anx-x0x-x1x-xn-1使其满足插值条件Pnxi=yi=fxi i=0,1,n这样得到的插值多项式 Nnx 称为 N

18、ewton 插值多项式。系数 ai 为差商,可以通过构造差商表得到。三次样条插值:三次样条插值函数 Sx 在每个小区间 xk-1,xk 上为三次多项式;在全进 a,b 上存在二阶连续导数;其次符合插值条件。Matlab 中存在内置的三次样条插值函数,命令为 spline . 实验内容:第一题:1. 牛顿插值函数的构造代码如下:function f=Newton(x0,y0) %牛顿多项式插值函数syms x;SZ=size(x0,2);a(1)=y0(1);y(:,1)=y0'for j=2:SZ nx1=1; for i=1:SZ-j+1; nx2=nx1+j-1; y(i,j)=(

19、y(i,j-1)-y(i+1,j-1)/(x0(nx1)-x0(nx2); nx1=nx1+1; endendf=y(1,1);for j=2:SZ ff=y(1,j); for i=1:j-1 ff=ff*(x-x0(i); end f=f+ff;endend2. 牛顿和三次样条插值情况及比较:代码如下:clear all;clc;syms x;fx=1/(5+x2);%牛顿多项式插值x0=-1:0.01:1;y0=subs(fx,x0);n1=1,5,10,20,25;n2=5,55,60,62,67;h1=2./n1;h2=2./n2;x1=-1:h1(1):1; y1=subs(fx,

20、x1); f1=Newton(x1,y1); y01=subs(f1,x0); x2=-1:h1(2):1; y2=subs(fx,x2); f2=Newton(x2,y2); y02=subs(f2,x0); x3=-1:h1(3):1; y3=subs(fx,x3); f3=Newton(x3,y3); y03=subs(f3,x0); x4=-1:h1(4):1; y4=subs(fx,x4); f4=Newton(x4,y4); y04=subs(f4,x0); x5=-1:h1(5):1; y5=subs(fx,x5); f5=Newton(x5,y5); y05=subs(f5,x

21、0); figure,plot(x0,y0,x0,y01,x0,y02,x0,y03,x0,y04,x0,y05),title('所有结果');x6=-1:h2(1):1; y6=subs(fx,x6); f6=Newton(x6,y6); y06=subs(f6,x0); x7=-1:h2(2):1; y7=subs(fx,x7); f7=Newton(x7,y7); y07=subs(f7,x0); x8=-1:h2(3):1; y8=subs(fx,x8); f8=Newton(x8,y8); y08=subs(f8,x0); x9=-1:h2(4):1; y9=subs

22、(fx,x9); f9=Newton(x9,y9); y09=subs(f9,x0); x10=-1:h2(5):1; y10=subs(fx,x10); f10=Newton(x10,y10); y010=subs(f10,x0); figure,plot(x0,y0,x0,y06,x0,y07,x0,y08,x0,y09,x0,y010),title('龙格现象');%三次样条插值spline自带命令x0=-5:0.01:5;y0=subs(fx,x0);figure,subplot(2,3,1),plot(x0,y0),title('精确图');y11=s

23、pline(x1,y1,x0);subplot(2,3,2),plot(x0,y11),title('n=1');y12=spline(x2,y2,x0);subplot(2,3,3),plot(x0,y12),title('n=5');y13=spline(x3,y3,x0);subplot(2,3,4),plot(x0,y13),title('n=10');y14=spline(x4,y4,x0);subplot(2,3,5),plot(x0,y14),title('n=20');y15=spline(x5,y5,x0);su

24、bplot(2,3,6),plot(x0,y15),title('n=25');figure,plot(x0,y0,x0,y11,x0,y12,x0,y13,x0,y14,x0,y15),title('所有结果');第二题:代码如下:clear all;clc;x=2 3 4 7 8 10 11 14 16 18 19;y=106.42 108.2 109.5 110 109.93 110.49 110.59 110.6 110.76 111 111.2;%Agenda 1A=(x.*x)' x' ones(11,1);A1=A'*A;y

25、1=A'*y'c1=A1y1x1=2:0.1:19;y1=polyval(c1,x1);plot(x,y,'k*',x1,y1,'r'),gtext('曲线一'),hold ony01=polyval(c1,x);delta1_2=sum(y-y01).2)%Agenda 2xx=-1./x;yy=log(y);B=ones(11,1) xx'B1=B'*B;yy1=B'*yy'c2=B1yy1;syms s;a=exp(c2(1);b=c2(2);a bf=a*exp(-b/s);x2=x1;y2

26、=subs(f,x2);plot(x2,y2,'b'),gtext('曲线二');y02=subs(f,x);delta2_2=sum(y-y02).2)实验结果:第一题:1. 牛顿插值结果图 2.1 不同节点数的牛顿插值多项式综合图图 2.2 龙格现象由图可知,2. 三次样条插值结果图 2.3 不同节点下的三次样条插值结果图 2.4 不同节点数的三次样条的综合图由图可知,牛顿插值多项式在n较小的时候如5,10,20,25差值效果良好,当n变大时如60,62,65,67,100,200就出现了龙格现象,三次样条在各个子区间内为三次多项式,拟合效果好.第二题1.

27、第一问的多项式拟合得到的拟合曲线为yx=106.2927+0.6264x-0.0205x2平方误差为1=2.7796第二问的拟合曲线为yx=111.4940e-0.0903x平方误差为2=0.47192. 拟合曲线如图所示图 2.5 拟合情况从图中可以看出曲线二大体符合黑点的分布情况,拟合效果较好。结论:整体插值随着节点个数的增多,多项式的次数也在升高。高次多项式的插值会出现龙格现象,震荡剧烈,逼近效果不理想。但是当节点很多时,低次插值的精度又不够,所以为了避免这一局限性采用分段低次插值。其中三次样条插值有良好的收敛性和光滑性,效果较好。数据拟合时,可以选择趋势相似的函数形式,在求解相关参量时

28、,将函数进行适当变换,从而运用最小二乘法得到拟合结果。(第四章)实验题目:设计区间分半求积算法、龙贝格求积算法和自适应辛普森求积算法的程序,观察n=1,10,100,500 时,积分-11x2cos(nx)dx 的结果,并给出相应的评价. 问题分析:1. 分半求积算法即为复合梯度求积。2. 因为 n 越大,fx=x2cos(nx)在-1,1 内震荡地越严重,自适应辛普森求积算法很难适用,计算复杂度会很高。所以选取辛普森求积算法代替。实验原理:分半求积算法:将区间 a,b 等分为 n 个小区间,分点为xk=a+kh h=b-an , k=0,1,n利用定积分性质,有abfxdx=k=0n-1xk

29、xk+1f(x)dx每个小区间上均用梯形求积公式,有abfxdx=h2k=0n-1f(xk)+f(xk+1)+k=0n-1-h212f(k)令Tn=h2k=0n-1f(xk)+f(xk+1)=h2f(a)+f(b)+hk=0n-1f(xk)即为复合梯形公式。龙贝格求积算法:将步长为h的复合梯形公式进行査尔逊外推,就得到龙贝格求积公式。自适应辛普森求积算法:按照被奇函数在区间上的变化来安排求积结点的辛普森算法。实验内容:1. 写得各个求积算法的函数。代码如下:(1)分半求积算法:function f=CompositeTrapezoida(n)syms x;y=x*x*cos(n*x);m=1:

30、100;a=-1;b=1;for i=1:100 h=(b-a)/m(i); k=0:m(i); xk=a+k*h; yk=subs(y,xk); f(i)=0; for j=1:m(i) f(i)=f(i)+(yk(j)+yk(j+1); end f(i)=h/2*f(i);endend(2)辛普森算法function f=CompositeSimpson(n)syms x;y=x*x*cos(n*x);m=1:100;a=-1;b=1;for i=1:100 h=(b-a)/(2*m(i); k=0:(2*m(i); xk=a+k*h; yk=subs(y,xk); f(i)=0; for

31、 j=1:m(i) f(i)=f(i)+(yk(2*j-1)+4*yk(2*j)+yk(2*j+1); end f(i)=h/3*f(i);endm;f'end(4)龙贝格求积算法function f=Romberg(n)epsilon=0.0001;syms x;y=x*x*cos(n*x);a=-1;b=1;h=b-a;fa=subs(y,a);fb=subs(y,b);T(1)=h/2*(fa+fb);m=1;while 1 h=h/2; k=1:(2m-1); xk=a+k*h; yk=subs(y,xk); su=sum(yk); S(1)=h/2*(fa+fb)+h*su;

32、 for i=1:m S(i+1)=S(i)+(S(i)-T(i)/(4i-1); end if(abs(S(m+1)-T(m)<epsilon) break; end T=S; m=m+1;endf=S(m+1);end(5)自适应辛普森求积算法function f=AdaptiveSimpson(n)epsilon=0.001;syms x;y=x*x*cos(n*x);a=-1;b=1;h=b-a;p=a b;p0=p;ep=epsilon;m=0;q=0;f=0;while 1 n1=length(ep); n=length(p0); if(n=1) break; end h=p

33、0(2)-p0(1); k=0:4; yk=subs(y,p0(1)+k*h/4); s0=h/6*(yk(1)+4*yk(3)+yk(5);s1=h/12*(yk(1)+4*yk(2)+yk(3);s2=h/12*(yk(3)+4*yk(4)+yk(5); if(abs(s0-s1-s2)<15*ep(1) f=f+s1+s2; p0=p0(2:n); if n1>=2 ep=ep(2:n1); end q=q+1; else m=m+1; p0=yk(1),yk(3),p0(2:n); if n1=1 ep=ep(1)/2 ep(1)/2; else ep=ep(1)/2 ep

34、(1)/2 ep(2:n1); end if q=0 p=p0; else p=p(1:q) p0; end endendend2. 各个求积公式下的积分结果代码如下:clear all;clc;%复合梯形法y11=CompositeTrapezoida(1);y12=CompositeTrapezoida(10);y13=CompositeTrapezoida(100);y14=CompositeTrapezoida(500);1:100;y11;y12;y13;y14'%复合辛普森法y21=CompositeSimpson(1);y22=CompositeSimpson(10);y

35、23=CompositeSimpson(100);y24=CompositeSimpson(500);2:2:200;y21;y22;y23;y24'%龙贝格法y31=Romberg(1);y32=Romberg(10);y33=Romberg(100);y34=Romberg(500);y31 y32 y33 y34%自适应辛普森法y41=AdaptiveSimpson(1)%以下复杂度太高 不出结果%y42=AdaptiveSimpson(10); %y43=AdaptiveSimpson(100);%y44=AdaptiveSimpson(500);%y41 y42 y43 y4

36、4实验结果:表 3.1 不同积分法得到的结果n110100500复合梯形法0.4782831994-0.1399401910-0.00601370080.0023823806复合辛普森法0.4782672530-0.1401909997-0.00985113540.0072247738龙贝格法0.4782672574-06112212333-0.2492135619结果评价:龙贝格法的精度高,最接近精确解。因为被积分函数为fx=x2cos(nx)随着n的增大,震荡越剧烈。所以积分面积越来越小。(第五章)实验题目:1. 分别取步长 h=0.5,0.1,0.05,0.01

37、, 用龙格-库塔法求解y'=ty13 , y1=1 , 计算到t=2 , 并与精确解yt=(t2+2)332 比较,观察龙格-库塔法的收敛性. 2. 分别取步长 h=0.1,0.05,0.01,0.005, 用显示欧拉法和隐式欧拉法求解y'=-50y , y0=100 , 由结果分析算法的稳定性. 3. 选择某常微分方程初值问题的数值方法计算01sinttdt 的近似值,并保证有4位有效数字. 问题分析:1. 龙格-库塔有很多的格式,第一题以常用的四级四阶龙格库塔方法为例。2. 假设,f't=sintt,由于01sinttdt=f(1)-f0第三题可以转化为求解常微分方

38、程f't=sintt的问题。实验原理:四级四阶龙格-库塔格式yi+1=yi+h6(k1+2k2+2k3+k4)k1=f(ti,yi)k2=f(ti+h2,yi+h2k1)k3=f(ti+h2,yi+h2k2)k4=f(ti+h,yi+hk3)实验内容:1. 求解第一题代码如下:clear all;clc%以四级四阶龙格库塔格式为例t0=1;h=0.5 0.1 0.05 0.01;n=1./h+1;y1(1)=1;y2(1)=1;y3(1)=1;y4(1)=1;t1=1:0.5:2;t2=1:0.1:2;t3=1:0.05:2;t4=1:0.01:2;for j=2:n(1) k1=t1

39、(j-1)*y1(j-1)(1/3); k2=(t1(j-1)+h(1)/2)*(y1(j-1)+(h(1)/2)*k1)(1/3); k3=(t1(j-1)+h(1)/2)*(y1(j-1)+(h(1)/2)*k2)(1/3); k4=t1(j)*(y1(j-1)+h(1)*k3)(1/3); y1(j)=y1(j-1)+h(1)/6*(k1+2*k2+2*k3+k4);endfor j=2:n(2) k1=t2(j-1)*y2(j-1)(1/3); k2=(t2(j-1)+h(2)/2)*(y2(j-1)+(h(2)/2)*k1)(1/3); k3=(t2(j-1)+h(2)/2)*(y2

40、(j-1)+(h(2)/2)*k2)(1/3); k4=t2(j)*(y2(j-1)+h(2)*k3)(1/3); y2(j)=y2(j-1)+h(2)/6*(k1+2*k2+2*k3+k4);endfor j=2:n(3) k1=t3(j-1)*y3(j-1)(1/3); k2=(t3(j-1)+h(3)/2)*(y3(j-1)+(h(3)/2)*k1)(1/3); k3=(t3(j-1)+h(3)/2)*(y3(j-1)+(h(3)/2)*k2)(1/3); k4=t3(j)*(y3(j-1)+h(3)*k3)(1/3); y3(j)=y3(j-1)+h(3)/6*(k1+2*k2+2*k

41、3+k4);endfor j=2:n(4) k1=t4(j-1)*y4(j-1)(1/3); k2=(t4(j-1)+h(4)/2)*(y4(j-1)+(h(4)/2)*k1)(1/3); k3=(t4(j-1)+h(4)/2)*(y4(j-1)+(h(4)/2)*k2)(1/3); k4=t4(j)*(y4(j-1)+h(4)*k3)(1/3); y4(j)=y4(j-1)+h(4)/6*(k1+2*k2+2*k3+k4);endx=1:0.01:2;syms tyy=(t2+2)/3)(3/2);yy1=subs(yy,x);figure,subplot(2,3,1),plot(x,yy1

42、),title('精确值);subplot(2,3,2),plot(x,yy1,t1,y1),title('h=0.5');subplot(2,3,3),plot(x,yy1,t2,y2),title('h=0.1'subplot(2,3,4),plot(x,yy1,t3,y3),title('h=0.05');subplot(2,3,5),plot(x,yy1,t4,y4),title('h=0.01');subplot(2,3,6),plot(x,yy1,t1,y1,t2,y2,t3,y3,t4,y4),title(&

43、#39;所有结果);2. 求解第二题代码如下:clear all;t0=0;a=0.25; %通过更改a,更改取值区间syms tyy=exp(-50*t);x=0:0.001:a;yy1=subs(yy,x);h=0.1 0.05 0.01 0.005;n=a./h+1;t1=0:0.1:a;t2=0:0.05:a;t3=0:0.01:a;t4=0:0.005:a;%显式欧拉法y1(1)=100;y2(1)=100;y3(1)=100;y4(1)=100;for j=2:n(1) y1(j)=y1(j-1)+h(1)*(-50)*y1(j-1);endfor j=2:n(2) y2(j)=y

44、2(j-1)+h(2)*(-50)*y2(j-1);endfor j=2:n(3) y3(j)=y3(j-1)+h(3)*(-50)*y3(j-1);endfor j=2:n(4) y4(j)=y4(j-1)+h(4)*(-50)*y4(j-1);endfigure,plot(x,yy1,t1,y1,t2,y2,t3,y3,t4,y4),.gtext('h=0.1'),gtext('h=0.05'),gtext('h=0.01'),gtext('h=0.005');%隐式欧拉法y5(1)=100;y6(1)=100;y7(1)=1

45、00;y8(1)=100;for j=2:n(1) y5(j)=y5(j-1)/(50*h(1)+1);endfor j=2:n(2) y6(j)=y6(j-1)/(50*h(2)+1);endfor j=2:n(3) y7(j)=y7(j-1)/(50*h(3)+1);endfor j=2:n(4) y8(j)=y8(j-1)/(50*h(4)+1);endfigure,plot(x,yy1,t1,y5,t2,y6,t3,y7,t4,y8),.gtext('h=0.1'),gtext('h=0.05'),gtext('h=0.01'),gtex

46、t('h=0.005');%相同步长下的稳定性比较figuresubplot(2,2,1),plot(x,yy1,'k',t1,y1,'b',t1,y5,'r'),title('h=0.1');subplot(2,2,2),plot(x,yy1,'k',t2,y2,'b',t2,y6,'r'),title('h=0.05');subplot(2,2,3),plot(x,yy1,'k',t3,y3,'b',t3,y7,&#

47、39;r'),title('h=0.01');subplot(2,2,4),plot(x,yy1,'k',t4,y4,'b',t4,y8,'r'),title('h=0.005');3. 求解第三题代码如下:%避免t=0作分母,所以用隐式欧拉法clear all;t0=0;h=0.0005 0.0001 0.00005;n=1./h+1;y1(1)=5;y2(1)=5;y3(1)=5;y4(1)=5;t1=0:0.0005:1;t2=0:0.0001:1;t3=0:0.00005:1;for j=2:n(1

48、) y1(j)=y1(j-1)+h(1)*sin(t1(j)/t1(j);endfor j=2:n(2) y2(j)=y2(j-1)+h(2)*sin(t2(j)/t2(j);endfor j=2:n(3) y3(j)=y3(j-1)+h(3)*sin(t3(j)/t3(j);endformat longy(1)=y1(n(1)-y1(1);y(2)=y2(n(2)-y2(1);y(3)=y3(n(3)-y3(1);y实验结果:1. 第一题结果图 4.1 不同步长下的四级龙格-库塔的解2. 显示欧拉法求解结果图 4.2 不同步长下的显式欧拉法的解隐式欧拉法求解结果图 4.3 不同步长下的隐式欧

49、拉法的解显式与隐式的稳定性比较结果图 4.4 不同步长下显式与隐式的稳定性比较3. 第三题结果表 4.1 不同步长下的积分结果步长 h0.00050.00010.00005积分结果0.9460434318390180.9460751436654500.946079107079003题目要求保证有4位有效数字,所以所求结果为:0.9461结果分析:四级四阶龙格库塔法具有大范围的收敛性。四级四阶龙格库塔法每计算一步需要计算四次的值,计算有一定的复杂性。当步长h为0.1和0.05时显式欧拉法不具有稳定性。隐式欧拉法在各个步长下的稳定情况相似,均有较好的稳定性。(第六章)实验题目:使用列主元高斯消去法

50、解希尔伯特矩阵 H=(hij)n×n 方程组 Hx=b , 考察给定的 n=5,10,20,50,100 及相应的 b 时结果的变化,分析其中的原因并给出结论,其中hij=1/(i+j-1)问题分析:1. 希尔伯特矩阵是病态的,b的微小变化会造成解发生很大变化。2. 刻画矩阵病态程度的量为条件数。条件数越大,矩阵性能越差。可以计算条件数来分析解变化很大的现象。实验原理:高斯列主元素消元法:将矩阵H按列取绝对值最大项进行行行调换,将其以下部分消为0,不断循环直到H化为上三角的过程。实验内容:1. 高斯列主元素消元法函数代码如下:function A b=GaussElimination

51、(A,b)n=size(A,1);for i=1:n-1 q=max(abs(A(i:n,i); for j=i:n if(abs(A(j,i)=q) k=j; end end u=A(i,i:n);v=b(i); A(i,i:n)=A(k,i:n);b(i)=b(k); A(k,i:n)=u;b(k)=v; for l=i+1:n A(l,i)=A(l,i)/A(i,i); b(l)=b(l)-A(l,i)*b(i); for s=i+1:n A(l,s)=A(l,s)-A(l,i)*A(i,s); end endendend2. 计算不同阶数下的希尔伯特矩阵的线性方程的解,并通过更改b,对

52、其做微小调整,观察解的变化代码如下:clear all;clc;n=5 10 20 50 100;%5阶a=1;H=zeros(n(a);for i=1:n(a) for j=1:n(a) H(i,j)=1/(i+j-1);endendb=ones(1,n(a);b1=b+0.0001;HH,bb=GaussElimination(H,b);HH1,bb1=GaussElimination(H,b1);for i=n(a):-1:1 s=0;s1=0; for j=i+1:n(a) s=s+HH(i,j)*x1(1,j);s1=s1+HH1(i,j)*xx1(1,j);end x1(1,i)=

53、(bb(1,i)-s)/HH(i,i);xx1(1,i)=(bb1(1,i)-s1)/HH1(i,i);end%10阶a=2;H=zeros(n(a);for i=1:n(a) for j=1:n(a) H(i,j)=1/(i+j-1);endendb=ones(1,n(a);b1=b+0.0001;HH,bb=GaussElimination(H,b);HH1,bb1=GaussElimination(H,b1);for i=n(a):-1:1 s=0;s1=0; for j=i+1:n(a) s=s+HH(i,j)*x2(1,j);s1=s1+HH1(i,j)*xx2(1,j);end x2(1,i)=(bb(1,i)-s)/HH(i,i);xx2(1,i)=(bb1(1,i)-s1)/HH1(i,i);end%20阶a=3;H=zeros(n(a);for i=1:n(a) for j=1:n(a) H(i,j)=1/(i+j-1);endendb=o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论