数值分析上机作业汇总.doc

上传人:小飞机 文档编号:3901596 上传时间:2023-03-26 格式:DOC 页数:13 大小:185KB
返回 下载 相关 举报
数值分析上机作业汇总.doc_第1页
第1页 / 共13页
数值分析上机作业汇总.doc_第2页
第2页 / 共13页
数值分析上机作业汇总.doc_第3页
第3页 / 共13页
数值分析上机作业汇总.doc_第4页
第4页 / 共13页
数值分析上机作业汇总.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《数值分析上机作业汇总.doc》由会员分享,可在线阅读,更多相关《数值分析上机作业汇总.doc(13页珍藏版)》请在三一办公上搜索。

1、 数值分析上机报告院系:学号:姓名: 目录作业1、舍入误差与有效数11、函数文件cxdd.m12、函数文件cddx.m13、两种方法有效位数对比14、心得2作业2、Newton迭代法21、通用程序函数文件22、局部收敛性3(1)最大值文件3(2)验证局部收敛性43、心得5作业3、列主元素Gauss消去法61、列主元Gauss消去法的通用程序62、解题中线性方程组73、心得8作业4、三次样条插值函数81、第一型三次样条插值函数通用程序:82、数据输入及计算结果10作业1、舍入误差与有效数设,其精确值为.(1) 编制按从小到大的顺序,计算的通用程序;(2) 编制按从大到小的顺序,计算的通用程序;(

2、3) 按两种顺序分别计算,并指出有效位数;(4) 通过本上机你明白了什么?程序:1、函数文件cxdd.mfunction S=cxdd(N)S=0;i=2.0;while(i):S=cxdd(80)S= 0.7375772、函数文件cddx.mfunction S=cddx (N)S=0;for i=N:-1:2 S=S+1/(i*i-1);endscript运行结果(省略):S=cddx(80)S=0.7375773、两种方法有效位数对比精确值函数:function S=jqz(N)S=0.5*(1.5-1.0/N-1.0/(N+1);script运行结果(省略)NS精确值从小到大从大到小值

3、有效位数值有效位数1000.7400500.74005060.7400496100000.7499000.74990040.749852410000000.7499990.74999960.74985234、心得本题重点体现了数值计算中“大数吃小数”的问题,由于计算机计算的截断特点,从大到小的计算会导致小数的有效数被忽略掉。从题中可以看出,看出按不同的顺序计算的结果是不相同的,按从小到大的顺序计算的值与精确值吻合,而按从大到小的顺序计算的值与精确值有较大的误差。计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低。作业2、Newton迭代法(1) 给定初值x0及容许误差

4、,编制Newton法解方程f(x)=0根的通用程序。(2) 给定方程f(x)=x3/3-x=0,易知其有三个根x1=,x2=0,x3=。由Newton方法的局部收敛性可知存在0,当x0(,),Newton迭代序列收敛于根x2 ,试确定尽可能大的;试取若干个初始值,观察当x0(-,-1),(-1,),(,),(,1),(1,+)时,Newton序列是否收敛以及收敛于哪一个根。(3) 通过本上机题,你明白了什么?1、通用程序函数文件定义f(x)函数function f=fun(x)f=x3/3-x;end定义f(x)导函数function f=dfun(x)f=x*x-1;end定义求近似解函数f

5、unction f,n=newton(x0,ep)flag=1;n=0;while(flag=1) x1=x0-fun(x0)/dfun(x0); n=n+1; if(abs(x1-x0)100000) flag=0; end x0=x1;endf=x1;end script运行结果clear;x0=input(请输入初始值x0:);ep=input(请输入容许误差:);f,n=newton(x0,ep);fprintf(方程的一个近似解为:%fn,x1);2、局部收敛性(1)最大值文件flag=1;k=1;x0=0;while flag=1 sigma=k*10-6; x0=sigma; k

6、=k+1; m=0; flag1=1; while flag1=1 & m=103 x1=x0-fun(x0)/dfun(x0); if abs(x1-x0)=10-6) flag=0; endendfprintf(最大值为: %fn,sigma); 运行结果为:最大值为:0.774597即得最大的为0.774597,Newton迭代序列收敛于根=0的最大区间为(-0.774597,0.774597)。(2)验证局部收敛性l 在x0(-,-1)区间,取以下初值,分别调用newton.m函数文件,得到结果如下:X0X1迭代次数-100-1.73205115-20-1.73205111-5-1.7

7、320518-1.5-1.7320515结果显示,以上初值迭代序列均收敛于-1.732051,即根。显然,迭代格式初值的选择对于迭代的收敛速度是至关重要的,当初值接近真实值的时候,迭代次数减少。l 在x0(-1,)区间,取以下初值,分别调用newton.m函数文件,得到结果如下:X0X1迭代次数-0.951.7320519-0.851.7320516-0.801.73205110-0.781.73205115计算结果显示,迭代序列局部收敛于1.730251,即根。l 在x0(,)区间,取以下初值,分别调用newton.m函数文件,得到结果如下:X0X1迭代次数-0.700.0000005-0.

8、200.0000003-0.050.00000030.050.00000030.200.00000030.700.0000005由newton1.m的运行过程表明,在整个区间上均收敛于0,即根。l 在x0(,1)区间,取以下初值,分别调用newton.m函数文件,得到结果如下:X0X1迭代次数0.80-1.732051100.90-1.73205170.95-1.73205190.98-1.73205112计算结果显示,迭代序列局部收敛于-1.732051,即根。l 在x0(1,+)区间,取以下初值,分别调用newton.m函数文件,得到结果如下:X0X1迭代次数1.51.732051551.

9、7320518201.732051111001.73205115结果显示,以上初值迭代序列均收敛于1.732051,即根。综上所述:(-,-1)区间收敛于-1.73205,(-1,)区间局部收敛于1.73205,局部收敛于-1.73205,(-,)区间收敛于0,(,1)区间类似于(-1,)区间,(1,)收敛于1.73205。3、心得牛顿迭代法对于初值的选择要求较高,因此,在牛顿迭代时可现通过简单迭代法寻找相对准确一些的值来进行牛顿迭代。对于方程有多解的问题,Newton法求方程根时,牛顿迭代要考虑局部收敛的问题,迭代序列收敛于某一个根有一定的区间限制,在一个区间上,可能会局部收敛于不同的根。作

10、业3、列主元素Gauss消去法对于某电路的分析,归结为求解线性方程组RI=V。 32 -13 0 0 0 -10 0 0 0 -13 35 -9 0 -11 0 0 0 0 0 -9 31 -10 0 0 0 0 0R= 0 0 0 -30 57 -7 0 -5 0 0 0 0 0 -7 47 -30 0 0 0 0 0 0 0 -30 41 0 0 0 0 0 0 -5 0 0 27 -2 0 0 0 -9 0 0 0 -2 29VT=-15,27,-23,0,-20,12,-7,7,10T(1) 编制解n阶线性方程组Ax=b的列主元Gauss消去法的通用程序;(2) 用所编程序解线性方程组

11、RI=V,并打印出解向量,保留5位有效数字;(3) 在本编程之中,你提高了那些编程能力。1、列主元Gauss消去法的通用程序函数:找每列的主元的函数function B=zhuyuan(B,t,N,M)for i=0:N-1-t if B(N-i,t)B(N-i-1,t) c=zeros(1,M); for j=1:M c(j)=B(N-i,j); B(N-i,j)=B(N-i-1,j); B(N-i-1,j)=c(j); end endend 进行列消去的函数function B=xiaoqu(B,t,N,M)for i=t+1:N l=B(i,t)/B(t,t); for j=t:M B(

12、i,j)=B(i,j)-l*B(t,j); endend进行三角矩阵下的解函数function X=jie(X,B,N,M)for i=1:N-1 s=B(N-i,M); for j=N-i+1:N s=s-B(N-i,j)*X(j); end X(N-i)=s/B(N-i,N-i);end执行主程序:N=input(请输入线性方程组的阶数: N=); M=input(请输入增广矩阵阶数: M=); b=zeros(1,N);A=zeros(N,N);A=input(请输入系数矩阵:);b(1,:)=input(请输入方程组的右端向量:); b=b; B=A,b; for t=1:N-1 B=

13、zhuyuan(B,t,N,M); B=xiaoqu(B,t,N,M);end X=zeros(N,1); X(N)=B(N,M)/B(N,N); X=jie(X,B,N,M); X2、解题中线性方程组执行程序,输入矩阵A(即题中的矩阵R)和列向量b(即题中的V),如下:请输入线性方程组的阶数: n=9请输入增广矩阵阶数: m=10请输入系数矩阵A:A=31,-13,0,0,0,-10,0,0,0,-15;-13,35,-9,0,-11,0,0,0,0,27;0,-9,31,-10,0,0,0,0,0,-23;0,0,-10,79,-30,0,0,0,-9,0;0,0,0,-30,57,-7,

14、0,-5,0,-20;0,0,0,0,-7,47,-30,0,0,12;0,0,0,0,0,-30,41,0,0,-7;0,0,0,0,-5,0,0,27,-2,7;0,0,0,-9,0,0,0,-2,29,10;请输入方程组的右端向量b:-15 27 -23 0 -20 12 -7 7 10得到如下结果:A = 31 -13 0 0 0 -10 0 0 0 -15 -13 35 -9 0 -11 0 0 0 0 27 0 -9 31 -10 0 0 0 0 0 -23 0 0 -10 79 -30 0 0 0 -9 0 0 0 0 -30 57 -7 0 -5 0 -20 0 0 0 0 -

15、7 47 -30 0 0 12 0 0 0 0 0 -30 41 0 0 -7 0 0 0 0 -5 0 0 27 -2 7 0 0 0 -9 0 0 0 -2 29 10x = -0.28923 0.34544 -0.71281 -0.22061 -0.43040 0.15431 -0.057823 0.20105 0.290233、心得列主元Gauss最重要的就是如何通过找到最大主元,并交换行,如何进行消去,这需要很细心的循环,和很复杂的嵌套,通过本题的编程,感觉个人对于这种多层嵌套循环的处理能力提高了很多。通过对软件的编程,也更加理解了Gauss消去法的实质。作业4、三次样条插值函数(1

16、) 编制求第一型3次样条插值函数的通用程序;(2) 已知汽车门曲线型值点的数据如下:i012345678910xi012345678910yi2.513.34.044.75.225.545.785.45.575.75.8端点条件为=0.8,=0.2,用所编程序求车门的3次样条差值函数S(x),并打印出S(i+0.5),i=0,19。1、第一型三次样条插值函数通用程序:n=input(请输入节点数n:);n=n+1;xn=zeros(1,n);yn=zeros(1,n);xn(1,:)=input(请输入X的值:);yn(1,:)=input(请输入Y的值:);dy0=input(请输入边界条件

17、y(0):);dyn=input(请输入边界条件y(n):); d=zeros(n,1);h=zeros(1,n-1);f1=zeros(1,n-1);f2=zeros(1,n-2);for i=1:n-1 h(i)=xn(i+1)-xn(i);%求一阶差商 f1(i)=(yn(i+1)-yn(i)/h(i);endfor i=2:n-1 f2(i)=(f1(i)-f1(i-1)/(xn(i+1)-xn(i-1); %求二阶差商 d(i)=6*f2(i);endd(1)=6*(f1(1)-dy0)/h(1);d(n)=6*(dyn-f1(n-1)/h(n-1); A=zeros(n); %求M

18、值u=zeros(1,n-2);r=zeros(1,n-2);for i=1:n-2 u(i)=h(i)/(h(i)+h(i+1); r(i)=1-u(i);endA(1,2)=1;A(n,n-1)=1;for i=1:n A(i,i)=2;endfor i=2:n-1 A(i,i-1)=u(i-1); A(i,i+1)=r(i-1);endM=Ad;syms xfor i=1:n-1 %求节点插值 Sx(i)=collect(yn(i)+(f1(i)-(M(i)/3+M(i+1)/6)*h(i)*(x-xn(i)+M(i)/2*(x-xn(i)2+(M(i+1)-M(i)/(6*h(i)*(

19、x-xn(i)3); Sx(i)=vpa(Sx(i),4);endS=zeros(1,n-1);for i=1:n-1 x=xn(i)+0.5; S(i)=yn(i)+(f1(i)-(M(i)/3+M(i+1)/6)*h(i)*(x-xn(i) +M(i)/2*(x-xn(i)2+(M(i+1)-M(i)/(6*h(i)*(x-xn(i)3;enddisp(S(x)=); %结果输出for i=1:n-1 fprintf( %s (%d,%d)n,char(Sx(i),xn(i),xn(i+1); disp();enddisp(S(i+0.5);disp( i x(i+0.5) S(i+0.5

20、)for i=1:n-1 fprintf( %d %.4f %.4fn,i,xn(i)+0.5,S(i)end2、数据输入及计算结果请输入节点数n:10请输入X的值:0 1 2 3 4 5 6 7 8 9 10请输入Y的值:2.51 3.30 4.04 4.70 5.22 5.54 5.78 5.40 5.57 5.70 5.80请输入边界条件y(0):0.8请输入边界条件y(n):0.2S(x)= - 0.008514*x3 - 0.001486*x2 + 0.8*x + 2.51 (0,1) - 0.0044579*x3 - 0.013654*x2 + 0.81217*x + 2.5059

21、 (1,2) - 0.0036544*x3 - 0.018475*x2 + 0.82181*x + 2.4995 (2,3) - 0.040924*x3 + 0.31696*x2 - 0.18448*x + 3.5058 (3,4) 0.10735*x3 - 1.4624*x2 + 6.9328*x - 5.9839 (4,5) - 0.26848*x3 + 4.1752*x2 - 21.255*x + 40.996 (5,6) 0.42659*x3 - 8.3361*x2 + 53.813*x - 109.14 (6,7) - 0.26786*x3 + 6.2474*x2 - 48.272*

22、x + 129.06 (7,8) 0.054872*x3 - 1.4983*x2 + 13.694*x - 36.184 (8,9) 0.058376*x3 - 1.5929*x2 + 14.545*x - 38.738 (9,10)S(i+0.5) i x(i+0.5) S(i+0.5) 1 0.5000 2.9086 2 1.5000 3.6784 3 2.5000 4.3815 4 3.5000 4.9882 5 4.5000 5.3833 6 5.5000 5.7237 7 6.5000 5.5944 8 7.5000 5.4299 9 8.5000 5.6598 10 9.5000 5.7323

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号