东南大学数值分析上机解剖.docx
- 文档编号:28684476
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:24
- 大小:96.25KB
东南大学数值分析上机解剖.docx
《东南大学数值分析上机解剖.docx》由会员分享,可在线阅读,更多相关《东南大学数值分析上机解剖.docx(24页珍藏版)》请在冰豆网上搜索。
东南大学数值分析上机解剖
第一章
一、题目
设
,其精确值为
。
(1)编制按从大到小的顺序
,计算SN的通用程序。
(2)编制按从小到大的顺序
,计算SN的通用程序。
(3)按两种顺序分别计算
并指出有效位数。
(编制程序时用单精度)
(4)通过本次上机题,你明白了什么?
二、MATLAB程序
N=input('请输入N(N>1):
');
AccurateValue=single((0-1/(N+1)-1/N+3/2)/2);%single使其为单精度
Sn1=single(0);%从小到大的顺序
fora=2:
N;
Sn1=Sn1+1/(a^2-1);
end
Sn2=single(0);%从大到小的顺序
fora=2:
N;
Sn2=Sn2+1/((N-a+2)^2-1);
end
fprintf('Sn的值(N=%d)\n',N);
disp('____________________________________________________')
fprintf('精确值%f\n',AccurateValue);
fprintf('从大到小计算的结果%f\n',Sn1);
fprintf('从小到大计算的结果%f\n',Sn2);
disp('____________________________________________________')
三、结果
请输入N(N>1):
100
Sn的值(N=100)
____________________________________________________
精确值0.740049
从大到小计算的结果0.740049
从小到大计算的结果0.740050
____________________________________________________
请输入N(N>1):
10000
Sn的值(N=10000)
____________________________________________________
精确值0.749900
从大到小计算的结果0.749852
从小到大计算的结果0.749900
____________________________________________________
请输入N(N>1):
1000000
Sn的值(N=1000000)
____________________________________________________
精确值0.749999
从大到小计算的结果0.749852
从小到大计算的结果0.749999
____________________________________________________
四、结果分析
可以得出,算法对误差的传播又一定的影响,在计算时选一种好的算法可以使结果更为精确。
从以上的结果可以看到从大到小的顺序导致大数吃小数的现象,容易产生较大的误差,求和运算从小数到大数算所得到的结果才比较准确。
第二章
一、题目
(1)给定初值
及容许误差
,编制牛顿法解方程f(x)=0的通用程序。
(2)给定方程
易知其有三个根
①由牛顿方法的局部收敛性可知存在
当
时,Newton迭代序列收敛于根x2*。
试确定尽可能大的
。
②试取若干初始值,观察当
时Newton序列的收敛性以及收敛于哪一个根。
(3)通过本上机题,你明白了什么?
二、MATLAB程序
文件fx.m
functionFx=fx(x)%%定义函数f(x)
Fx=x^3/3-x;
文件dfx.m
functionFx=dfx(x)%%定义导函数df(x)
Fx=x^2-1;
%%Newton法求方程的根%%
clear
ef=10^-6;%这里取容许误差10^-6
k=0;
x0=input('请输入Xo的值:
');
disp('kXk');%使用空格将其分隔开
fprintf('0%f\n',x0);
flag=1;
whileflag==1&&k<=10^3
x1=x0-fx(x0)/dfx(x0);
ifabs(x1-x0) flag=0; end k=k+1; x0=x1; fprintf('%d%f\n',k,x0); end %%寻找最大的delta值%% clear %% flag=1; k=1; x0=0; whileflag==1 delta=k*10^-6;%delta与k有关 x0=delta; k=k+1; m=0; flag1=1; whileflag1==1&&m<=10^3 x1=x0-fx(x0)/dfx(x0); ifabs(x1-x0)<10^-6 flag1=0;%给定容许误差 end m=m+1; x0=x1; end ifflag1==1||abs(x0)>=10^-6%未小于给定误差时停止循环 flag=0; end end fprintf('delta的最大值是%f\n',delta); 三、结果 1.运行search.m文件 结果为: delta的最大值为0.774597 即得最大的 为0.774597,Newton迭代序列收敛于根 =0的最大区间为(-0.774597,0.774597)。 2. (1)区间 上取-1000,-100,-50,-30,-10,-8,-7,-5,-3 kXk 0-10000.000000 1-6666.666733 2-4444.444589 3-2962.963209 4-1975.309031 5-1316.873025 6-877.915856 7-585.277997 8-390.186470 9-260.126022 10-173.419911 11-115.617118 12-77.083845 13-51.397880 14-34.278229 15-22.871618 16-15.276949 17-10.228459 18-6.884780 19-4.688772 20-3.274807 21-2.407714 22-1.939750 23-1.761259 24-1.732762 25-1.732051 26-1.732051 kXk 0-100.000000 1-66.673334 2-44.458891 3-29.654263 4-19.792016 5-13.228447 6-8.869651 7-5.989231 8-4.107324 9-2.910755 10-2.200189 11-1.848687 12-1.742235 13-1.732139 14-1.732051 15-1.732051 kXk 0-50.000000 1-33.346672 2-22.251125 3-14.864105 4-9.954458 5-6.703960 6-4.571013 7-3.200520 8-2.364515 9-1.919703 10-1.756405 11-1.732548 12-1.732051 kXk 0-30.000000 1-20.022247 2-13.381544 3-8.971129 4-6.056000 5-4.150503 6-2.937524 7-2.215046 8-1.854714 9-1.743236 10-1.732158 11-1.732051 12-1.732051 kXk 0-10.000000 1-6.734007 2-4.590570 3-3.212840 4-2.371653 5-1.922981 6-1.757175 7-1.732580 8-1.732051 9-1.732051 kXk 0-8.000000 1-5.417989 2-3.739379 3-2.684934 4-2.078246 5-1.802928 6-1.736023 7-1.732064 8-1.732051 9-1.732051 kXk 0-7.000000 1-4.763889 2-3.322318 3-2.435533 4-1.952915 5-1.764630 6-1.732931 7-1.732051 8-1.732051 kXk 0-5.000000 1-3.472222 2-2.524180 3-1.996068 4-1.776618 5-1.733674 6-1.732053 7-1.732051 8-1.732051 kXk 0-3.000000 1-2.250000 2-1.869231 3-1.745810 4-1.732212 5-1.732051 6-1.732051 结果显示,以上初值迭代序列均收敛于-1.732051,即根 。 (2)在区间 即区间(-1,-0.774597)上取-0.774598,-0.8,-0.85,-0.9,-0.99,计算结果如下: kXk 0-0.774598 10.774605 2-0.774645 30.774884 4-0.776324 50.785049 6-0.840641 71.350187 81.993830 91.775963 101.733628 111.732053 121.732051 131.732051 kXk 0-0.800000 10.948148 2-5.625370 3-3.872625 4-2.766197 5-2.121367 6-1.818292 7-1.737822 8-1.732079 9-1.732051 10-1.732051 kXk 00.850000 1-1.475375 2-1.819444 3-1.737969 4-1.732081 5-1.732051 6-1.732051 kXk 0-0.900000 12.557895 22.012915 31.781662 41.734049 51.732054 61.732051 71.732051 kXk 0-0.990000 132.505829 221.691081 314.491521 49.707238 56.540906 64.464966 73.133840 82.326075 91.902303 101.752478 111.732403 121.732051 131.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,计算结果如下: kXk 00.774598 1-0.774605 20.774645 3-0.774884 40.776324 5-0.785049 60.840641 7-1.350187 8-1.993830 9-1.775963 10-1.733628 11-1.732053 12-1.732051 13-1.732051 kXk 00.800000 1-0.948148 25.625370 33.872625 42.766197 52.121367 61.818292 71.737822 81.732079 91.732051 101.732051 kXk 00.850000 1-1.475375 2-1.819444 3-1.737969 4-1.732081 5-1.732051 6-1.732051 kXk 00.900000 1-2.557895 2-2.012915 3-1.781662 4-1.734049 5-1.732054 6-1.732051 7-1.732051 kXk 00.990000 1-32.505829 2-21.691081 3-14.491521 4-9.707238 5-6.540906 6-4.464966 7-3.133840 8-2.326075 9-1.902303 10-1.752478 11-1.732403 12-1.732051 13-1.732051 计算结果显示,迭代序列局部收敛于-1.732051,即根 ,局部收敛于1.730251,即根 。 (5)区间 上取100,60,20,10,7,6,4,3,1.5,计算结果如下: kXk 0100.000000 166.673334 244.458891 329.654263 419.792016 513.228447 68.869651 75.989231 84.107324 92.910755 102.200189 111.848687 121.742235 131.732139 141.732051 151.732051 kXk 060.000000 140.011114 226.690749 317.818845 411.916762 58.000848 65.418546 73.739736 82.685151 92.078360 101.802967 111.736027 121.732064 131.732051 141.732051 kXk 020.000000 113.366750 28.961323 36.049547 44.146328 62.213605 71.854126 81.743136 91.732156 101.732051 111.732051 kXk 010.000000 16.734007 24.590570 33.212840 42.371653 51.922981 61.757175 71.732580 81.732051 91.732051 kXk 07.000000 14.763889 23.322318 32.435533 41.952915 51.764630 61.732931 71.732051 81.732051 kXk 06.000000 14.114286 22.915068 32.202578 41.849650 51.742392 61.732142 71.732051 81.732051 kXk 04.000000 12.844444 22.163724 31.834281 41.740007 51.732105 61.732051 71.732051 kXk 03.000000 12.250000 21.869231 31.745810 41.732212 51.732051 61.732051 kXk 01.500000 11.800000 21.735714 31.732062 41.732051 51.732051 结果显示,以上初值迭代序列均收敛于1.732051,即根 。 四、结果分析 综上所述: 区间收敛于-1.73205, 区间局部收敛于1.73205,局部收敛于-1.73205, 区间收敛于0, 区间类似于 区间, 收敛于1.73205。 通过本上机题,明白了对于多根方程,Newton法求方程根时,迭代序列收敛于某一个根有一定的区间限制,在一个区间上,可能会局部收敛于不同的根。 第三章 一、题目 列主元Gauss消去法对于某电路的分析,归结为求解线性方程组 。 其中 (1)编制解n阶线性方程组 的列主元高斯消去法的通用程序; (2)用所编程序线性方程组 ,并打印出解向量,保留5位有效数; 二、MATLAB程序 %%列主元Gauss消去法求解线性方程组%% %%参数输入 n=input('请输入矩阵A的阶数: n=');%输入线性方程组阶数n b=zeros(1,n); A=input('请输入矩阵A: '); b(1,: )=input('请输入行向量b: ');%输入行向量b b=b';%得到列向量b C=[A,b];%得到增广矩阵 %%列主元消去得上三角矩阵 fori=1: n-1 [maximum,index]=max(abs(C(i: n,i)));%将最大元素位置放在index行中 index=index+i-1; T=C(index,: );%T作为一个中转站,交换两行 C(index,: )=C(i,: ); C(i,: )=T; fork=i+1: n%%列主元消去 ifC(k,i)~=0 C(k,: )=C(k,: )-C(k,i)/C(i,i)*C(i,: ); end end end %%回代求解%% x=zeros(n,1); x(n)=C(n,n+1)/C(n,n); fori=n-1: -1: 1 x(i)=(C(i,n+1)-C(i,i+1: n)*x(i+1: n,1))/C(i,i); end A=C(1: n,1: n); disp('上三角矩阵为: ') fork=1: n fprintf('%f',A(k,: )); fprintf('\n'); end disp('方程的解为: '); fprintf('%.5g\n',x);%以5位有效数字输出结果 三、结果 请输入矩阵A的阶数: n=9 请输入矩阵A: [31-13000-10000;-1335-90-110000;0-931-1000000;00-1079-30000-9; 000-3057-70-50;0000-747-3000;00000-304100;0000-50027-2; 000-9000-29] 请输入行向量b: [-1527-230-2012-7710] 上三角矩阵为: 31.000000-13.0000000.0000000.0000000.000000-10.0000000.0000000.0000000.000000 0.00000029.548387-9.0000000.000000-11.000000-4.1935480.0000000.0000000.000000 0.0000000.00000028.258734-10.000000-3.350437-1.2772930.0000000.0000000.000000 0.0000000.0000000.00000075.461271-31.185629-0.4519990.0000000.000000-9.000000 0.0000000.0000000.0000000.00000044.602000-7.1796950.000000-5.000000-3.577994 0.0000000.0000000.0000000.000000-0.00000045.873193-30.000000-0.784718-0.561543 0.0000000.0000000.0000000.000000-0.000000-0.00000021.380698-0.513187-0.367236 0.0000000.0000000.0000000.000000-0.000000-0.0000000.00000026.413085-2.419996 0.0000000.0000000.0000000.000000-0.000000-0.0000000.0000000.00000027.389504 方程的解为: -0.28923 0.34544 -0.71281 -0.22061 -0.4304 0.15431 -0.057823 0.20105 第四章: 多项式插值与函数最佳逼近 一、题目: (1)编制求第一型3次样条插值函数的通用程序; (2)已知汽车曲线型值点的数据如下: 0 1 2 3 4 5 6 7 8 9 10 2.51 3.30 4.04 4.70 5.22 5.54 5.78 5.40 5.57 5.70 5.80 端点条件为 , 。 用所编制程序求车门的3次样条插值函数 并打印出 。 二、MATLAB程序 n=input('Inputn: n=');%n=10 n=n+1; x=zeros(1,n);%x用来存储x y=zeros(1,n);%y用来存储y x(1,: )=input('输入x: ');%分别输入x,y y(1,: )=input('输入y: '); dy0=input('输入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); fori=1: n-1 h(i)=x(i+1)-x(i); f1(i)=(y(i+1)-y(i))/h(i);%一阶差商 end fori=2: n-1 f2(i)=(f1(i)-f1(i-1))/(x(i+1)-x(i-1));%求二阶差商 d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东南大学 数值 分析 上机 解剖