资源描述:
《数值分析实验(2)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验二插值法P50专业班级:信计131班姓名:段雨博学号:2013014907一、实验目的1、熟悉MATLAB编程;2、学习插值方法及程序设计算法。二、实验题目1、已知函数在下列各点的值为0.20.40.60.81.00.980.920.810.640.38试用4次牛顿插值多项式及三次样条函数(自然边界条件)对数据进行插值用图给出,及。2、在区间上分别取用两组等距节点对龙格函数作多项式插值及三次样条插值,对每个值,分别画出插值函数及的图形。3、下列数据点的插值01491625364964012345
2、678可以得到平方根函数的近似,在区间上作图(1)用这9个点作8次多项式插值(2)用三次样条(第一边界条件)程序求从得到结果看在上,哪个插值更精确;在区间上,两种插值哪个更精确?三、实验原理与理论基础1、拉格朗日差值公式点斜式两点式2、n次插值基函数2、牛顿插值多项式3、三次样条函数若函数且在每个小区间上是三次多项式,其中,是给定节点,则称是节点上的三次样条函数。若在节点上给定函数值并成立则称为三次样条插值函数。4、三次样条函数的边界条件(1)(2)四、实验内容1、M文件:function[p]=N
3、ewton_Polyfit(X,Y)formatlonggr=size(X);n=r(2);M=ones(n,n);M(:,1)=Y';fori=2:nforj=i:nM(j,i)=(M(j,i-1)-M(j-1,i-1))/(X(j)-X(j-i+1));endendp0=[zeros(1,n-1)M(1,1)];p=p0;fori=1:n-1p1=M(i+1,i+1).*poly(X(1:i));p0=[zeros(1,n-i-1)p1];p=p+p0;end3、M文件:functionf=La
4、nguage(~,~,~)%%求已知数据点的拉格朗日插值多项式%%已知数据点的x坐标向量:x%%已知数据点的y坐标向量:y%%插值点的x坐标:x0%%解得的拉格朗日插值多项式fx=[0.00.40.81.21.6];y=[00.4283920.7221010.9103140.970348];x0=[0.30.5];symstl;if(length(x)==length(y))n=length(x);elsedisp('x,y维数不一样');return;endp=sym(0);fori=1:nl=s
5、ym(y(i));fork=1:i-1l=l*(t-x(k))/(x(i)-x(k));endfork=i+1:nl=l*(t-x(k))/(x(i)-x(k));endp=p+1;endsimplify(p);f=subs(p,'t',x0);f=vpa(f,6);end五、实验结果1、>>X=[0.20.40.60.81.0];>>Y=[0.980.920.810.640.38];>>[p]=Newton_Polyfit(X,Y);>>Y2=polyval(p,X);>>X1=0:0.01;1;
6、>>Y3=interp1(X,Y,X1,'spline');>>plot(X,Y,'o',X,Y2,'r',X1,Y3,'g')图像:2、>>X=-1:0.01:1;>>Y=1./(1+25*X.^2);>>X1=-1:0.2:1;>>Y1=1./(1+25*X1.^2);>>Y2=interp1(X1,Y1,X,'linear');>>Y3=interp1(X1,Y1,X,'spline');>>subplot(211)>>plot(X,Y,X,Y2,'r-',X,Y3,'g-')图像:3、>>x
7、=[0;1;4;9;16;25;36;49;64];>>y=0:1:8;>>x0=0:0.1:64;>>f=Language(x,y,x0);>>Y=interp1(x,y,x0,'spline');>>Y1=sqrt(x0);>>plot(x0,Y1,x0,f,'g',x0,Y,'r')图像:五、实验结果分析与小结1、通过这次实习,我学会了用matlab设计程序并运行绘制出图形。根据已知的点的信息用牛顿插值法、三次样条插值法、拉格朗日插值法等插值方法来求得近似函数,在运行出图形时可以很直观地看出近
8、似函数的精确度哪个更好。使用matlab来处理数学问题确实很方便,使我对matlab的很多功能也有了不少的了解,知道了最基本最常用的术语怎么来表达,同时让我对这几个插值方法的算法更熟悉。2、不过,使用matlab进行程序设计对我来说确实有点难度,不太会编写函数,特别是涉及到专门的函数,matlab中已有的函数,不太会调用,查一下资料看到别人如何表示我也不是太懂,现在用matlab写作业需要很长时间,而且还参考别人是如何写函数的,自己只是稍作修改来运行,出现问题也不太会