数值分析上机报告13章.docx
- 文档编号:29999512
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:28
- 大小:64.33KB
数值分析上机报告13章.docx
《数值分析上机报告13章.docx》由会员分享,可在线阅读,更多相关《数值分析上机报告13章.docx(28页珍藏版)》请在冰豆网上搜索。
数值分析上机报告13章
数值分析上机报告
(1-3章)
第一章绪论
题目:
(舍入误差与有效数)
设
其精确值为
。
(1)编制按从大到小的顺序
,计算
的通用程序;
(2)编制按从小到大的顺序
,计算
的通用程序;
(3)按两种顺序分别计算
,
,
,并指出有效位数(编制程序时用单精度);
(4)通过本上机题你明白了什么?
程序:
N=input('请输入一个正整数N:
');
AccurateValue=single((0-1/(N+1)-1/N+3/2)/2);
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);
fprintf('精确值%f\n',AccurateValue);
fprintf('按从大到小的顺序计算得到的值%f\n',Sn1);
fprintf('按从小到大的顺序计算得到的值%f\n',Sn2);
计算结果:
请输入一个正整数N:
10^2
采用不同的算法得到的Sn的值(N=100)
精确值0.740049
按从大到小的顺序计算得到的值0.740049
按从小到大的顺序计算得到的值0.740050
请输入一个正整数N:
10^4
采用不同的算法得到的Sn的值(N=10000)
精确值0.749900
按从大到小的顺序计算得到的值0.749852
按从小到大的顺序计算得到的值0.749900
请输入一个正整数N:
10^6
采用不同的算法得到的Sn的值(N=1000000)
精确值0.749999
按从大到小的顺序计算得到的值0.749852
按从小到大的顺序计算得到的值0.749999
分析与收获:
按两种顺序分别计算
,
,
时,结果有效位数如下表:
n
顺序
100
10000
1000000
从大到小
6
4
3
从小到大
5
6
6
从表中的结果对比可以看出,对于若干同号数相加,采用绝对值较小者先加的算法,其结果的相对误差较小,而采用从大到小的计算顺序,会出现“大数吃小数”的现象。
通过本上机题,我明白了在计算数学问题时,计算方法很重要,对具体的问题选择合适的数学计算方法可以提高效率,提高结果的精确程度。
第二章非线性方程的解法
题目:
(Newton迭代法)
(1)给定初值
及容许误差
,编制Newton法解方程
的根的通用程序。
(2)给定方程
,易知其有三个根
,
,
。
①由Newton方法的局部收敛性可知存在
,当
时Newton迭代序列收敛于根
,试确定尽可能大的
;
②试取若干初始值,观察当
时Newton序列是否收敛以及收敛于哪一个根。
(3)通过本上机题,你明白了什么?
程序:
文件fx.m
%%定义函数f(x)
functionFx=fx(x)
Fx=x^3/3-x;
文件dfx.m
%%定义导函数df(x)
functionFx=dfx(x)
Fx=x^2-1;
文件Newton.m
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 文件search.m %%寻找最大的delta值%% clear %% flag=1; k=1; x0=0; whileflag==1 delta=k*10^-6; x0=delta; k=k+1; m=0; flag1=1; whileflag1==1&&m<=10^3 x1=x0-fx(x0)/dfx(x0); ifabs(x1-x0)<10^-6flag1=0; end m=m+1; x0=x1; end ifflag1==1||abs(x0)>=10^-6flag=0; end end fprintf('delta的最大值为%f\n',delta); 计算结果: 1.运行search.m文件 结果为: delta的最大值为0.774597 即得最大的 为0.774597,Newton迭代序列收敛于根 的最大区间为(-0.774597,0.774597)。 2.运行Newton文件 在区间 上各输入若干个数,计算结果如下: ①区间 上取-1000,-500,-100,-50,-30,-10,-8,-5,-3,-1.5 请输入初值Xo: -1000 kXk 0-1000.000000 1-666.667333 2-444.445889 3-296.298759 4-197.534756 5-131.693212 6-87.800538 7-58.541286 8-39.038915 9-26.043032 10-17.387658 11-11.630240 12-7.811242 13-5.294264 14-3.660091 15-2.636899 16-2.053223 17-1.794478 18-1.735164 19-1.732059 20-1.732051 21-1.732051 请输入初值Xo: -500 kXk 0-500.000000 1-333.334667 2-222.225111 3-148.153074 4-98.773216 5-65.855561 6-43.913833 7-29.291078 8-19.550172 9-13.067638 10-8.763076 11-5.919131 12-4.062026 13-2.882727 14-2.184717 15-1.842506 16-1.741250 17-1.732123 18-1.732051 19-1.732051 请输入初值Xo: -100 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 请输入初值Xo: -50 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 13-1.732051 请输入初值Xo: -30 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 请输入初值Xo: -10 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 请输入初值Xo: -8 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 请输入初值Xo: -5 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 请输入初值Xo: -3 kXk 0-3.000000 1-2.250000 2-1.869231 3-1.745810 4-1.732212 5-1.732051 6-1.732051 请输入初值Xo: -1.5 kXk 0-1.500000 1-1.800000 2-1.735714 3-1.732062 4-1.732051 5-1.732051 结果显示,以上迭代序列均收敛于-1.732051,即根 。 ②在区间 即区间(-1,-0.774597)上取-0.774598,-0.8,-0.85,-0.9,-0.99 请输入初值Xo: -0.774598 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 请输入初值Xo: -0.8 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 请输入初值Xo: -0.85 kXk 0-0.850000 11.475375 21.819444 31.737969 41.732081 51.732051 61.732051 请输入初值Xo: -0.9 kXk 0-0.900000 12.557895 22.012915 31.781662 41.734049 51.732054 61.732051 71.732051 请输入初值Xo: -0.99 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,即根 。 ③在区间 即区间(-0.774597,0.774597)上, 由search.m的运行过程表明,在整个区间上均收敛于0,即根 。 ④在区间 即区间(0.774597,1)上取0.774598,0.8,0.85,0.9,0.99 请输入初值Xo: 0.774598 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 请输入初值Xo: 0.8 kXk 00.800000 1-0.948148 25.625370 33.872625 42.766197 52.121367 61.818292 71.737822 81.732079 91.732051 101.732051 请输入初值Xo: 0.85 kXk 00.850000 1-1.475375 2-1.819444 3-1.737969 4-1.732081 5-1.732051 6-1.732051 请输入初值Xo: 0.9 kXk 00.900000 1-2.557895 2-2.012915 3-1.781662 4-1.734049 5-1.732054 6-1.732051 7-1.732051 请输入初值Xo: 0.99 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,即根 。 ⑤区间 上取100,80,50,25,10,7,4,3,1.5 请输入初值Xo: 100 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 请输入初值Xo: 80 kXk 080.000000 153.341668 235.573614 323.734498 415.851137 510.609651 67.136500 74.852954 83.378768 92.468765 101.968887 111.768904 121.733171 131.732052 141.732051 151.732051 请输入初值Xo: 50 kXk 050.000000 133.346672 222.251125 314.864105 49.954458 56.703960 64.571013 73.200520 82.364515 91.919703 101.756405 111.732548 121.732051 131.732051 请输入初值Xo: 25 kXk 025.000000 116.693376 211.168997 37.506170 45.094534 53.532459 62.560141 72.014046 81.782007 91.734076 101.732054 111.732051 121.732051 请输入初值Xo: 10 kXk 010.000000 16.734007 24.590570 33.212840 42.371653 51.922981 61.757175 71.732580 81.732051 91.732051 请输入初值Xo: 7 kXk 07.000000 14.763889 23.322318 32.435533 41.952915 51.764630 61.732931 71.732051 81.732051 请输入初值Xo: 4 kXk 04.000000 12.844444 22.163724 31.834281 41.740007 51.732105 61.732051 71.732051 请输入初值Xo: 3 kXk 03.000000 12.250000 21.869231 31.745810 41.732212 51.732051 61.732051 请输入初值Xo: 1.5 kXk 01.500000 11.800000 21.735714 31.732062 41.732051 51.732051 结果显示,以上迭代序列均收敛于1.732051,即根 。 结论与收获: 综上所述: (-∞,-1)区间收敛于-1.73205,(-1,δ)区间局部收敛于1.73205,局部收敛于-1.73205,(-δ,δ)区间收敛于0,(δ,1)区间类似于(-1,δ)区间,(1,∞)收敛于1.73205。 通过本上机题,对Newton迭代法有了进一步的认识。 首先是Newton具有局部收敛性,在用该迭代法解方程的时候,必须知道方程根的大概范围,否则通过迭代方法所得到的根不一定是你所需要的方程的解,说明牛顿迭代法具有局部收敛性。 其次,Newton迭代法具有较好的收敛性和收敛速度,能较快的通过迭代得出方程的根。 通过此次上机,使得自己对计算方法的优缺点分析有了一定的体会。 第三章线性代数方程组数值解法 题目: (列主元Gauss消去法) 对于某电路的分析,归结为求解线性方程组 ,其中 (1)编制n阶线性方程组 的列主元Gauss消去法的通用程序; (2)用所编程序解线性方程组 ,并打印出解向量,保留5位有效数字; (3)本题编程之中,你提高了哪些编程能力? 程序: %%列主元Gauss消去法求解线性方程组%% %%参数输入 n=input('请输入矩阵A的阶数: n=');%输入线性方程组阶数n b=zeros(1,n); A=input('输入矩阵A(例如二阶矩阵: [12;3,4]): '); b(1,: )=input('输入列向量b: ');%输入行向量b b=b';C=[A,b];%得到增广矩阵 %%列主元消去得上三角矩阵 fori=1: n-1[maximum,index]=max(abs(C(i: n,i))); index=index+i-1; T=C(index,: ); 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和列向量b后,结果如下: 请输入矩阵A的阶数: n=2 输入矩阵A(例如二阶矩阵: [12;3,4]): [1,2;3,4] 输入列向量b: [4,10] 上三角矩阵为: 3.0000004.000000 0.0000000.666667 方程组的解为: 2 1 计算结果: 执行程序,输入矩阵A(即题中的矩阵R)和列向量b(即题中的V),得如下结果: 请输入矩阵A的阶数: n=9 输入矩阵A(例如二阶矩阵: [12;3,4]): [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,27,-2;0,0,0,-9,0,0,0,-2,29] 输入列向量b: [-15,27,-23,0,-20,12,-7,7,10] 上三角矩阵为: 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.430
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 上机 报告 13