《东南大学数值分析上机.doc》由会员分享,可在线阅读,更多相关《东南大学数值分析上机.doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、,第一章一、题目设,其精确值为。(1)编制按从大到小的顺序,计算SN的通用程序。(2)编制按从小到大的顺序,计算SN的通用程序。(3)按两种顺序分别计算,并指出有效位数。(编制程序时用单精度)(4)通过本次上机题,你明白了什么?二、MATLAB程序N=input(请输入N(N1):);AccurateValue=single(0-1/(N+1)-1/N+3/2)/2); %single使其为单精度Sn1=single(0); %从小到大的顺序 for a=2:N; Sn1=Sn1+1/(a2-1);endSn2=single(0); %从大到小的顺序 for a=2:N; Sn2=Sn2+1/
2、(N-a+2)2-1);endfprintf(Sn的值 (N=%d)n,N);disp(_)fprintf(精确值 %fn,AccurateValue);fprintf(从大到小计算的结果 %fn,Sn1);fprintf(从小到大计算的结果 %fn,Sn2);disp(_)三、结果请输入N(N1):100Sn的值 (N=100)_精确值 0.740049从大到小计算的结果 0.740049从小到大计算的结果 0.740050_请输入N(N1):10000Sn的值 (N=10000)_精确值 0.749900从大到小计算的结果 0.749852从小到大计算的结果 0.749900_请输入N(N
3、1):1000000Sn的值 (N=1000000)_精确值 0.749999从大到小计算的结果 0.749852从小到大计算的结果 0.749999_四、结果分析可以得出,算法对误差的传播又一定的影响,在计算时选一种好的算法可以使结果更为精确。从以上的结果可以看到从大到小的顺序导致大数吃小数的现象,容易产生较大的误差,求和运算从小数到大数算所得到的结果才比较准确。第二章一、题目(1)给定初值及容许误差,编制牛顿法解方程f(x)=0的通用程序。(2)给定方程,易知其有三个根由牛顿方法的局部收敛性可知存在当时,Newton迭代序列收敛于根x2*。试确定尽可能大的。试取若干初始值,观察当时Newt
4、on序列的收敛性以及收敛于哪一个根。(3)通过本上机题,你明白了什么?二、MATLAB程序 文件fx.mfunction Fx=fx(x) % 定义函数f(x)Fx=x3/3-x;文件dfx.mfunction Fx=dfx(x) % 定义导函数df(x)Fx=x2-1;% Newton法求方程的根%clearef=10-6; %这里取容许误差10-6k=0;x0=input(请输入 Xo的值:);disp(k Xk); %使用空格将其分隔开fprintf(0 %fn,x0); flag=1;while flag=1 & k=103 x1=x0-fx(x0)/dfx(x0); if abs(x
5、1-x0)ef flag=0; end k=k+1; x0=x1;fprintf(%d %fn,k,x0); end %寻找最大的delta值%clear%flag=1;k=1;x0=0;while flag=1 delta=k*10-6; %delta与k有关 x0=delta; k=k+1; m=0; flag1=1; while flag1=1 & m=103 x1=x0-fx(x0)/dfx(x0); if abs(x1-x0)=10-6 %未小于给定误差时停止循环 flag=0; endendfprintf( delta 的最大值是 %fn,delta);三、结果1.运行search
6、.m文件结果为: delta 的最大值为 0.774597即得最大的为0.774597,Newton迭代序列收敛于根=0的最大区间为(-0.774597,0.774597)。2. (1)区间上取-1000,-100,-50,-30,-10,-8,-7,-5,-3k Xk0 -10000.0000001 -6666.6667332 -4444.4445893 -2962.9632094 -1975.3090315 -1316.8730256 -877.9158567 -585.2779978 -390.1864709 -260.12602210 -173.41991111 -115.617118
7、12 -77.08384513 -51.39788014 -34.27822915 -22.87161816 -15.27694917 -10.22845918 -6.88478019 -4.68877220 -3.27480721 -2.40771422 -1.93975023 -1.76125924 -1.73276225 -1.73205126 -1.732051k Xk0 -100.0000001 -66.6733342 -44.4588913 -29.6542634 -19.7920165 -13.2284476 -8.8696517 -5.9892318 -4.1073249 -2
8、.91075510 -2.20018911 -1.84868712 -1.74223513 -1.73213914 -1.73205115 -1.732051k Xk0 -50.0000001 -33.3466722 -22.2511253 -14.8641054 -9.9544585 -6.7039606 -4.5710137 -3.2005208 -2.3645159 -1.91970310 -1.75640511 -1.73254812 -1.732051k Xk0 -30.0000001 -20.0222472 -13.3815443 -8.9711294 -6.0560005 -4.
9、1505036 -2.9375247 -2.2150468 -1.8547149 -1.74323610 -1.73215811 -1.73205112 -1.732051k Xk0 -10.0000001 -6.7340072 -4.5905703 -3.2128404 -2.3716535 -1.9229816 -1.7571757 -1.7325808 -1.7320519 -1.732051k Xk0 -8.0000001 -5.4179892 -3.7393793 -2.6849344 -2.0782465 -1.8029286 -1.7360237 -1.7320648 -1.73
10、20519 -1.732051k Xk0 -7.0000001 -4.7638892 -3.3223183 -2.4355334 -1.9529155 -1.7646306 -1.7329317 -1.7320518 -1.732051k Xk0 -5.0000001 -3.4722222 -2.5241803 -1.9960684 -1.7766185 -1.7336746 -1.7320537 -1.7320518 -1.732051k Xk0 -3.0000001 -2.2500002 -1.8692313 -1.7458104 -1.7322125 -1.7320516 -1.7320
11、51结果显示,以上初值迭代序列均收敛于-1.732051,即根。(2) 在区间即区间(-1,-0.774597)上取-0.774598,-0.8,-0.85,-0.9,-0.99,计算结果如下:k Xk0 -0.7745981 0.7746052 -0.7746453 0.7748844 -0.7763245 0.7850496 -0.8406417 1.3501878 1.9938309 1.77596310 1.73362811 1.73205312 1.73205113 1.732051k Xk0 -0.8000001 0.9481482 -5.6253703 -3.8726254 -2
12、.7661975 -2.1213676 -1.8182927 -1.7378228 -1.7320799 -1.73205110 -1.732051k Xk0 0.8500001 -1.4753752 -1.8194443 -1.7379694 -1.7320815 -1.7320516 -1.732051k Xk0 -0.9000001 2.5578952 2.0129153 1.7816624 1.7340495 1.7320546 1.7320517 1.732051k Xk0 -0.9900001 32.5058292 21.6910813 14.4915214 9.7072385 6
13、.5409066 4.4649667 3.1338408 2.3260759 1.90230310 1.75247811 1.73240312 1.73205113 1.732051计算结果显示,迭代序列局部收敛于-1.732051,即根,局部收敛于1.730251,即根。(3) 有上题可知,在区间(-0.774597,0.774597)上,在整个区间上均收敛于0,即根。(4) 在区间即区间(0.774597,1)上取0.774598,0.8,0.85,0.9,0.99,计算结果如下:k Xk0 0.7745981 -0.7746052 0.7746453 -0.7748844 0.77632
14、45 -0.7850496 0.8406417 -1.3501878 -1.9938309 -1.77596310 -1.73362811 -1.73205312 -1.73205113 -1.732051k Xk0 0.8000001 -0.9481482 5.6253703 3.8726254 2.7661975 2.1213676 1.8182927 1.7378228 1.7320799 1.73205110 1.732051k Xk0 0.8500001 -1.4753752 -1.8194443 -1.7379694 -1.7320815 -1.7320516 -1.732051k
15、 Xk0 0.9000001 -2.5578952 -2.0129153 -1.7816624 -1.7340495 -1.7320546 -1.7320517 -1.732051k Xk0 0.9900001 -32.5058292 -21.6910813 -14.4915214 -9.7072385 -6.5409066 -4.4649667 -3.1338408 -2.3260759 -1.90230310 -1.75247811 -1.73240312 -1.73205113 -1.732051计算结果显示,迭代序列局部收敛于-1.732051,即根,局部收敛于1.730251,即根。
16、(5) 区间上取100,60,20,10,7,6,4,3,1.5,计算结果如下:k Xk0 100.0000001 66.6733342 44.4588913 29.6542634 19.7920165 13.2284476 8.8696517 5.9892318 4.1073249 2.91075510 2.20018911 1.84868712 1.74223513 1.73213914 1.73205115 1.732051k Xk0 60.0000001 40.0111142 26.6907493 17.8188454 11.9167625 8.0008486 5.4185467 3.
17、7397368 2.6851519 2.07836010 1.80296711 1.73602712 1.73206413 1.73205114 1.732051k Xk0 20.0000001 13.3667502 8.9613233 6.0495474 4.1463286 2.2136057 1.8541268 1.7431369 1.73215610 1.73205111 1.732051k Xk0 10.0000001 6.7340072 4.5905703 3.2128404 2.3716535 1.9229816 1.7571757 1.7325808 1.7320519 1.73
18、2051k Xk0 7.0000001 4.7638892 3.3223183 2.4355334 1.9529155 1.7646306 1.7329317 1.7320518 1.732051k Xk0 6.0000001 4.1142862 2.9150683 2.2025784 1.8496505 1.7423926 1.7321427 1.7320518 1.732051k Xk0 4.0000001 2.8444442 2.1637243 1.8342814 1.7400075 1.7321056 1.7320517 1.732051k Xk0 3.0000001 2.250000
19、2 1.8692313 1.7458104 1.7322125 1.7320516 1.732051k Xk0 1.5000001 1.8000002 1.7357143 1.7320624 1.7320515 1.732051结果显示,以上初值迭代序列均收敛于1.732051,即根。四、结果分析综上所述:区间收敛于-1.73205, 区间局部收敛于1.73205,局部收敛于-1.73205,区间收敛于0,区间类似于区间,收敛于1.73205。通过本上机题,明白了对于多根方程,Newton法求方程根时,迭代序列收敛于某一个根有一定的区间限制,在一个区间上,可能会局部收敛于不同的根。第三章 一、
20、题目列主元Gauss消去法对于某电路的分析,归结为求解线性方程组。其中 (1)编制解n阶线性方程组的列主元高斯消去法的通用程序;(2)用所编程序线性方程组,并打印出解向量,保留5位有效数;二、MATLAB程序% 列主元Gauss消去法求解线性方程组%参数输入n=input(请输入矩阵 A的阶数: n=); %输入线性方程组阶数nb=zeros(1,n);A=input(请输入矩阵 A:);b(1,:)=input(请输入行向量 b:); %输入行向量bb=b; %得到列向量b C=A,b; %得到增广矩阵%列主元消去得上三角矩阵for i=1:n-1 maximum,index=max(abs
21、(C(i:n,i); %将最大元素位置放在index行中 index=index+i-1; T=C(index,:); %T作为一个中转站,交换两行 C(index,:)=C(i,:); C(i,:)=T; for k=i+1:n %列主元消去 if C(k,i)=0 C(k,:)=C(k,:)-C(k,i)/C(i,i)*C(i,:); end endend% 回代求解 %x=zeros(n,1);x(n)=C(n,n+1)/C(n,n);for i=n-1:-1:1 x(i)=(C(i,n+1)-C(i,i+1:n)*x(i+1:n,1)/C(i,i);endA=C(1:n,1:n); d
22、isp(上三角矩阵为:)for k=1:n fprintf(%f ,A(k,:); fprintf(n);enddisp(方程的解为:);fprintf(%.5gn,x); %以5位有效数字输出结果三、结果请输入矩阵 A的阶数: n=9请输入矩阵 A:31 -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 0;0 0 -10 79 -30 0 0 0 -9;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
23、27 -2;0 0 0 -9 0 0 0 -2 9请输入行向量 b: -15 27 -23 0 -20 12 -7 7 10上三角矩阵为:31.000000 -13.000000 0.000000 0.000000 0.000000 -10.000000 0.000000 0.000000 0.000000 0.000000 29.548387 -9.000000 0.000000 -11.000000 -4.193548 0.000000 0.000000 0.000000 0.000000 0.000000 28.258734 -10.000000 -3.350437 -1.277293
24、0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 75.461271 -31.185629 -0.451999 0.000000 0.000000 -9.000000 0.000000 0.000000 0.000000 0.000000 44.602000 -7.179695 0.000000 -5.000000 -3.577994 0.000000 0.000000 0.000000 0.000000 -0.000000 45.873193 -30.000000 -0.784718 -0.561543 0.000000 0.0000
25、00 0.000000 0.000000 -0.000000 -0.000000 21.380698 -0.513187 -0.367236 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 26.413085 -2.419996 0.000000 0.000000 0.000000 0.000000 -0.000000 -0.000000 0.000000 0.000000 27.389504方程的解为:-0.289230.34544-0.71281-0.22061-0.43040.15431-0.0578230
26、.20105第四章:多项式插值与函数最佳逼近一、题目:(1)编制求第一型3次样条插值函数的通用程序; (2) 已知汽车曲线型值点的数据如下:0123456789102.513.304.044.705.225.545.785.405.575.705.80端点条件为,。用所编制程序求车门的3次样条插值函数,并打印出。二、MATLAB程序n=input(Input n: n=); %n=10n=n+1;x=zeros(1,n); %x用来存储xy=zeros(1,n); %y用来存储yx(1,:)=input(输入x:); %分别输入x,yy(1,:)=input(输入y:);dy0=input(输
27、入y(0)的一阶导数:); %输入边界条件dyn=input(输入y(n)的一阶导数:);d=zeros(n,1);h=zeros(1,n-1); %h为两个点之间的距离f1=zeros(1,n-1);f2=zeros(1,n-2);for i=1:n-1 h(i)=x(i+1)-x(i); f1(i)=(y(i+1)-y(i)/h(i); %一阶差商endfor i=2:n-1 f2(i)=(f1(i)-f1(i-1)/(x(i+1)-x(i-1); %求二阶差商 d(i)=6*f2(i) ;endd(1)=6*(f1(1)-dy0)/h(1); %补充d1和dnd(n)=6*(dy-f1(
28、n-1)/h(n-1);A=zeros(n);miu=zeros(1,n-2);lamda=zeros(1,n-2);for i=1:n-2 miu(i)=h(i)/(h(i)+h(i+1); lamda(i)=1-miu(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)=miu(i-1); A(i,i+1)=lamda(i-1);endM=Ad;syms x;for i=1:n-1 Sx(i)=collect(y(i)+(f1(i)-(M(i)/3+M(i+1)/6)*h(i)*(x-x(i)+M(i)/
29、2*(x-x(i)2+(M(i+1)-M(i)/(6*h(i)*(x-x(i)3); Sx(i)=vpa(Sx(i),4);endS=zeros(1,n-1);for i=1:n-1 x=x(i)+0.5;S(i)=y(i)+(f1(i)-(M(i)/3+M(i+1)/6)*h(i)*(x-x(i)+M(i)/2*(x-x(i)2+、(M(i+1)-M(i)/(6*h(i)*(x-x(i)3;end%输出结果disp(S(x)=);for i=1:n-1 fprintf( %s (%d,%d)n,char(Sx(i),x(i),x(i+1) disp( )enddisp(S(i+0.5)disp( i x(i+0.5) S(i+0.5)for i=1:n-1 fprintf( %d %0.4f %0.4fn,x(i)+0.5,S(i)end三、结果1.数据输入输入n:n=10输入x:0 1 2 3 4 5 6 7 8 9 10输入y:2.51 3.30 4.04 4.7
限制150内