上机作业题报告2015.1.9USER1.Chapter11.1题目设S𝑁=∑1𝑗2−1𝑁𝑗=2,其精确值为)11123(21NN。(1)编制按从大到小的顺序11131121222NSN,计算SN的通用程序。(2)编制按从小到大的顺序1211)1(111222NNSN,计算SN的通用程序。(3)按两种顺序分别计算64210,10,10SSS,并指出有效位数。(编制程序时用单精度)(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);fori=2:NSnl2s=Snl2s+1/(i*i-1);endfori=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.Chapter22.1题目(1)给定初值0x及容许误差,编制牛顿法解方程f(x)=0的通用程序。(2)给定方程03)(3xxxf,易知其有三个根3,0,3321xxx○1由牛顿方法的局部收敛性可知存在,0当),(0x时,Newton迭代序列收敛于根x2*。试确定尽可能大的δ。○2试取若干初始值,观察当),1(),1,(),,(),,1(),1,(0x时Newton序列的收敛性以及收敛于哪一个根。(3)通过本上机题,你明白了什么?2.2程序𝑓(𝑥)函数m文件:fu.mfunctionFu=fu(x)Fu=x^3/3-x;end𝑓′(𝑥)函数m文件:dfu.mfunctionFu=dfu(x)Fu=x^2-1;end用Newton法求根的通用程序Newton.mclear;x0=input('请输入初值x0:');ep=input('请输入容许误差:');flag=1;whileflag==1x1=x0-fu(x0)/dfu(x0);ifabs(x1-x0)epflag=0;end从小到大的顺序累加得SN=0.749900============================================================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;whileflag==1sigma=k*eps;x0=sigma;k=k+1;m=0;flag1=1;whileflag1==1&&m=10^3x1=x0-fu(x0)/dfu(x0);ifabs(x1-x0)epflag1=0;endm=m+1;x0=x1;endifflag1==1||abs(x0)=epflag=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.774597Find请输入搜索精度:10^-4请输入容许误差:10^-6最大的sigma值为:0.774600Find请输入搜索精度:10^-2请输入容许误差:10^-6最大的sigma值为:0.780000(2)运行Newton.m在(−∞,−1)内取初值,运行结果如下:X0Xk-1000-1.732051-500-1.732051-100-1.732051-10-1.732051-5-1.732051-2.5-1.732051-1.5-1.732051可见,在(−∞,−1)区间内取初值,Newton序列收敛,且收敛于根−√3。在(−1,−δ)内取初值,运行结果如下:X0Xk-0.951.732051-0.851.732051-0.81.732051-0.7745981.732051可见,在(−1,−δ)内取初值,Newton序列收敛,且收敛于根√3。在(−δ,δ)内内取初值,运行结果如下:X0Xk-0.7745960.000000-0.550.000000-0.350.000000-0.150.0000000.050.0000000.250.0000000.450.0000000.650.0000000.7745960.000000可见,在(−δ,δ)内取初值,Newton序列收敛,且收敛于根0。在(δ,1)内取初值,运行结果如下:X0Xk0.774598-1.7320510.8-1.7320510.85-1.7320510.95-1.732051可见,在(δ,1)内取初值,Newton序列收敛,且收敛于根−√3在(1,+∞)内取初值,运行结果如下:X0Xk1.51.7320512.51.73205151.732051101.7320511001.7320515001.73205110001.732051可见,在(1,+∞)内取初值,Newton序列收敛,且收敛于根√33.Chapter33.1题目对于某电路的分析,归结为求解线性方程组RI=V,其中3113000100001335901100000931100000000107930000900030577050000074730000000030410000005002720009000229R15,27,23,0,20,12,7,7,10TTV(1)编制解n阶线性方程组Ax=b的列主元高斯消去法的通用程序;(2)用所编程序线性方程组RI=V,并打印出解向量,保留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];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:nifC(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);fori=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.0190.8600;90.8698.81-67.590;0-67.59132.0146.26;0046.26177.17]请输入线性方程组右端向量:b=[-33.25449.7928.067-7.324]方程组的解为:-2957.44426.62495-651.49P126T39请输入线性方程组阶数: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-229]请输入线性方程组右端向量:b=[-1527-230-2012-7710]方程组的解为:-0.289230.34544-0.71281-0.22061-0.43040.15431-0.0578230.201050.29023可看出,算得的该线性方程组的解向量为:[-0.289230.34544-0.71281-0.22061-0.43040.15431-0.0578230.201050.29023]4.Chapter44.1题目(1)编制求第一型3次样条插值函数的通用程序;(2)已知汽车门曲线型值点的数据如下:i012345678910Xi012345678910Yi2.513.304.044.705.225.545.785.405.575.705.80端点条件为𝑦0′=0.8,𝑦10′=0.2,用所编程序求车门的3次样条插值函数S(x),并打印出S(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);fori=1:n-1h(i)=xn(i+1)-xn(i);f1(i)=(yn(i+1)-yn(i))/h(i);endfori=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====================%A=zeros(n);miu=zeros(1,n-2);lamda=zeros(1,n-2);fori=1:n-2miu(i)=h(i)/(h(i)+h(i+1));l