
东南大学 数值分析上机题作业 MATLAB版.docx
19页上机作业题报告2015.1.91.Chapter 11.1 题目设 ,其精确值为 𝑆𝑁=∑𝑁𝑗=21𝑗2‒1 )123(1N(1 )编制按从大到小的顺序 ,计算 SN 的通用程序122SN(2 )编制按从小到大的顺序 ,计算 SN 的通用程)1(222 序3 )按两种顺序分别计算 ,并指出有效位数 (编制程序时用单精度)64210,,10S(4 )通过本次上机题,你明白了什么?1.2 程序1.3 运行结果clear;N=input('请输入N值:');Ac=single((3/2-1/N-1/(N+1))/2);Snl2s=single(0);Sns2l=single(0);for i=2:NSnl2s=Snl2s+1/(i*i-1);endfor i=N:-1:2Sns2l=Sns2l+1/(i*i-1);endfprintf('精确值为: %f\n',Ac);fprintf('从大到小的顺序累加得SN=%f\n',Snl2s);fprintf('从小到大的顺序累加得SN=%f\n',Sns2l);disp('========================================================');>> P20T17请输入 N 值:10^2精确值为: 0.740049从大到小的顺序累加得 SN=0.740049从小到大的顺序累加得 SN=0.740050============================================================>> P20T17请输入 N 值:10^4精确值为: 0.749900从大到小的顺序累加得 SN=0.7498521.4 结果分析按从大到小的顺序,有效位数分别为:6,4 ,3。
按从小到大的顺序,有效位数分别为:5,6 ,6可以看出,不同的算法造成的误差限是不同的,好的算法可以让结果更加精确当采用从大到小的顺序累加的算法时,误差限随着 N 的增大而增大,可见在累加的过程中,误差在放大,造成结果的误差较大因此,采取从小到大的顺序累加得到的结果更加精确2.Chapter 22.1 题目(1 )给定初值 及容许误差 ,编制牛顿法解方程 f(x)=0 的通用程序0x(2 )给定方程 ,易知其有三个根03)(xf 3,0321 xx由牛顿方法的局部收敛性可知存在 当 时,Newton 迭代序列收○ 1 ),(0敛于根 x2*试确定尽可能大的 𝛿试取若干初始值,观察当 时 Newton○ 2 ),1(1),(0 x序列的收敛性以及收敛于哪一个根3 )通过本上机题,你明白了什么?2.2 程序函数 m 文件:fu.m𝑓(𝑥)function Fu=fu(x)Fu=x^3/3-x;end函数 m 文件:dfu.m𝑓'(𝑥)function Fu=dfu(x)Fu=x^2-1;end用 Newton 法求根的通用程序 Newton.mclear;x0=input('请输入初值 x0:');ep=input('请输入容许误差:');flag=1;while flag==1x1=x0-fu(x0)/dfu(x0);if abs(x1-x0)> P20T17请输入 N 值:10^6精确值为: 0.749999从大到小的顺序累加得 SN=0.749852从小到大的顺序累加得 SN=0.749999============================================================x0=x1;endfprintf('方程的一个近似解为:%f\n',x0);寻找最大 δ 值的程序:Find.mcleareps=input('请输入搜索精度:' );ep=input('请输入容许误差:');flag=1;k=0;x0=0;while flag==1sigma=k*eps;x0=sigma;k=k+1;m=0;flag1=1;while flag1==1 && m=ep flag=0; endendfprintf('最大的sigma值为:%f\n',sigma);2.3 运行结果(1 )寻找最大的 值。
𝛿算法为:将初值 x0 在从 0 开始不断累加搜索精度 eps,带入 Newton 迭代公式,直到求得的根不再收敛于 0 为止,此时的 x0 值即为最大的 sigma 值运行 Find.m,得到在不同的搜索精度下的最大 sigma 值>> Find请输入搜索精度:10^-6请输入容许误差:10^-6最大的 sigma 值为:0.774597>> Find请输入搜索精度:10^-4请输入容许误差:10^-6最大的 sigma 值为:0.774600>> Find请输入搜索精度:10^-2请输入容许误差:10^-6最大的 sigma 值为:0.780000(2 )运行 Newton.m在 内取初值,运行结果如下:( ‒∞, ‒1)X0 Xk-1000 -1.732051-500 -1.732051-100 -1.732051-10 -1.732051-5 -1.732051-2.5 -1.732051-1.5 -1.732051可见,在 区间内取初值, Newton 序列收敛,且收敛于根 ‒∞, ‒1) ‒ 3在 内取初值,运行结果如下:( ‒1, ‒𝛿)X0 Xk-0.95 1.732051-0.85 1.732051-0.8 1.732051-0.774598 1.732051可见,在 内取初值,Newton 序列收敛,且收敛于根 。
‒1, ‒𝛿) 3在 内内取初值,运行结果如下:( ‒𝛿, 𝛿)X0 Xk-0.774596 0.000000-0.55 0.000000-0.35 0.000000-0.15 0.0000000.05 0.0000000.25 0.0000000.45 0.0000000.65 0.0000000.774596 0.000000可见,在 内取初值,Newton 序列收敛,且收敛于根 0 ‒𝛿, 𝛿)在 内取初值,运行结果如下:( 𝛿, 1)X0 Xk0.774598 -1.7320510.8 -1.7320510.85 -1.7320510.95 -1.732051可见,在 内取初值,Newton 序列收敛,且收敛于根( 𝛿, 1) ‒ 3在 内取初值,运行结果如下:( 1, +∞)X0 Xk1.5 1.7320512.5 1.7320515 1.73205110 1.732051100 1.732051500 1.7320511000 1.732051可见,在 内取初值, Newton 序列收敛,且收敛于根( 1, +∞) 33.Chapter 33.1 题目对于某电路的分析,归结为求解线性方程组 RI=V,其中310100597390057054120909R 15,273,,127,TTV(1)编制解 n 阶线性方程组 的列主元高斯消去法的通用程序;𝐴𝑥=𝑏(2)用所编程序线性方程组 ,并打印出解向量,保留 5 位有效数字;𝑅𝐼=𝑉(3 )本题编程之中,你提高了哪些编程能力?3.2 程序n=input('请输入线性方程组阶数: n=');b=zeros(1,n);A=input('请输入系数矩阵:A=\n');b(1,:)=input('请输入线性方程组右端向量:b=\n' );b=b'; C=[A,b];for i=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;for k=i+1:n if C(k,i)~=0C(k,:)=C(k,:)-C(k,i)/C(i,i)*C(i,:);endendend%%回代求解x=zeros(n,1);x(n)=C(n,n+1)/C(n,n);for i=n-1:-1:1x(i)=(C(i,n+1)-C(i,i+1:n)*x(i+1:n,1))/C(i,i);enddisp('方程组的解为:' );fprintf('%.5g\n',x);3.3 运行结果运行程序,输入系数矩阵和方程组右端列向量。
运行过程与结果如下图所示:>> P126T39请输入线性方程组阶数: n=4请输入系数矩阵:A=[136.01 90.86 0 0;90.86 98.81 -67.59 0;0 -67.59 132.01 46.26 ;0 0 46.26 177.17]请输入线性方程组右端向量:b=[-33.254 49.79 28.067 -7.324]方程组的解为:-2957.44426.62495-651.49>> P126T39请输入线性方程组阶数: 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 27 -2;0 0 0 -9 0 0 0 -2 29]请输入线性方程组右端向量:b=[-15 27 -23 0 -20 12 -7 7 10]方程组的解为:-0.289230.34544-0.71281-0.22061-0.43040.15431-0.0578230.201050.29023可看出,算得的该线性方程组的解向量为:[-0.28923 0.34544 -0.71281 -0.22061 -0.4304 0.15431 -0.057823 0.20105 0.29023]4.Chapter 44.1 题目(1)编制求第一型 3 次样条插值函数的通用程序;(2)已知汽车门曲线型值点的数据如下:i 0 1 2 3 4 5 6 7 8 9 10Xi 0 1 2 3 4 5 6 7 8 9 10Yi 2.51 3.30 4.04 4.70 5.22 5.54 5.78 5.40 5.57 5.70 5.80端点条件为 ,用所编程序求车门的 3 次样条插值函数 S(x),并打印出𝑦'0=0.8, 𝑦'10=0.2S(i+0.5),i=0,1,…,9。
4.2 程序cleardigits(6);n=input('请输入节点数:n=' );xn=zeros(1,n);yn=zeros(1,n);xn(1,:)=input('请输入节点坐标:');yn(1,:)=input('请输入节点处函数值:');dy0=input('请输入左边界条件:y’(x0)=');dyn=input('请输入右边界条件:y’(xn)=');%====================求d====================%d=zeros(n,1);h=zeros(1,n-1);f1=zeros(1,n-1);f2=zeros(1,n-2);for i=1:n-1h(i)=xn(i+1)-xn(i);f1(i)=(yn(i+1)-yn(i))/h(i);endfor i=2:n-1f2(i)=(f1(i)-f1(i-1))/(xn(i+1)-xn(i-1));d(i)=6*f2(i);endd(i)=6*(f1(1)-dy0)/h(1);d(n)=6*(dyn-f1(n-1))/h(n-1);%====================求Mi=。












