1、数值分析2017-2018 第二学期上机实习题11:编程计算 , 其中 c= 4.494210307, 给出并观察计算结1nc果,若有问题,分析之。解:matlab 编程如下:图一:编程 图二:运行结果Matlab 中,format long g 对双精度,显示 15 位定点或浮点格式,由上图可知,当输入较小的 n 值(n 分别取 10,100,1000,100000,100000000)的时候,结果后面的指数中总是含有 e-308,这和题目中的 C 值很相似,我认为是由于分母中的 C 值相对于 n 值过大,出现了“大数吃小数”的现象,这是不符合算法原则的。2:利用牛顿法求方程 于区间 的根,
2、考虑不同初值l2x,4下牛顿法的收敛情况。解:牛顿法公式为:+1=211利用 matlab 编程2当输入初值=3 的时候并不能收敛。输入 2.8 依旧不能收敛。考虑利用 plot 函数绘制函数 f=x-lnx-2 的图像,发现其在区间2,4内并无根。3:给出 在 xk=0+0.25k处的值 yk, k=0,1,2,3,4. 请125xy给出由节点 xk 确定的三次样条插值函数 S(x), 使其满足条件:S/(0)=0, S/(1)=-0.074, 分析逼近效果如何?解:根据李庆扬数值分析第五版 Page43 的公式可以计算得到三次样条插值。3根据 6.11 和 6.12 式解得系数。d0 58
3、.5366d1 17.15728d2 8.67705d3 2.0934d4 0.905136列方程 A*M=B;A=B=解得 M 为M=4由此和 6.8 式可得其三次样条函数如下:得到最终的插值结果如下:总的来说,利用三次样条插值的精度还是比较高的。4:给出一个通用多项式拟合程序,输入部分:数据组个数为 n, 拟合的误差限输出部分:多项式次数、系数向量、拟合的实际误差。5解:程序代码:例:已知一组实验数据如下,求其多项式拟合x 1 2 3 4 5 6 7 8 9 10y 1.3 3.5 4.2 5.0 7.0 8.8 10.1 12.5 13.0 15.6 A,c,eff=zxec请输入变量
4、x:1 2 3 4 5 6 7 8 9 10请输入变量 y:1.3 3.5 4.2 5.0 7.0 8.8 10.1 12.5 13.0 15.6请输入拟合限差:2.5011.5382 -0.36002.3447A =1.5382 -0.3600c =1eff =2.3447 实例拟合结果如下图所示:function A c eff= zxec( )x=input(请输入变量 x:);y=input(请输入变量 y:);e=input(请输入拟合限差:);for i=1:10A=polyfit(x,y,i);%A 为拟合多项式系数向量Y=polyval(A,x);%Y 为拟合多项式if sum(Y-y).2)=epsarea=0.0;h=(b-a)/2(n-1);for i=1:(2(n-1)area=area+0.5*h*(rombergff(a+h*(i-1)+rombergff(h*i+a);endt(n,1)=area;for j=2:nfor i=1:(n-j+1)t(i,j)=(4(j-1)*t(i+1,j-1)-t(i,j-1)/(4(j-1)-1);endendt1=t(1,n);t2=t(1,n-1);n=n+1;ends=t1;retur nfunction y=rombergff(x)y=4/(1+x2);