《数值分析实验(共5页).doc》由会员分享,可在线阅读,更多相关《数值分析实验(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实验二 插值法 P50 专业班级:信计131班 姓名:段雨博 学号:一、实验目的1、熟悉MATLAB编程;2、学习插值方法及程序设计算法。二、实验题目1、已知函数在下列各点的值为 0.20.40.60.81.0 0.980.920.810.640.38试用4次牛顿插值多项式及三次样条函数(自然边界条件)对数据进行插值用图给出,及。2、在区间上分别取用两组等距节点对龙格函数作多项式插值及三次样条插值,对每个值,分别画出插值函数及的图形。3、下列数据点的插值 01491625364964012345678可以得到平方根函数的近似,在区间上作图(1)用这9个点作8次多项式插
2、值(2)用三次样条(第一边界条件)程序求从得到结果看在上,哪个插值更精确;在区间上,两种插值哪个更精确?三、 实验原理与理论基础1、拉格朗日差值公式 点斜式 两点式2、 n次插值基函数 3、 牛顿插值多项式4、 三次样条函数若函数且在每个小区间上是三次多项式,其中,是给定节点,则称是节点上的三次样条函数。若在节点上给定函数值并成立则称为三次样条插值函数。5、 三次样条函数的边界条件 (1) (2)四、 实验内容1、 M文件: function p=Newton_Polyfit(X,Y)format long gr=size(X);n=r(2);M=ones(n,n);M(:,1)=Y;for
3、i=2:n for j=i:n M(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;for i=1:n-1 p1=M(i+1,i+1).*poly(X(1:i); p0=zeros(1,n-i-1) p1; p=p+p0;end3、 M文件: function f=Language(,)%求已知数据点的拉格朗日插值多项式%已知数据点的x坐标向量:x%已知数据点的y坐标向量:y%插值点的x坐标:x0%解得的拉格朗日插值多项式fx=0.0 0.4 0.8 1.2 1.6;y=0 0. 0. 0.
4、 0.;x0=0.3 0.5;syms t l;if(length(x)=length(y) n=length(x);else disp(x,y维数不一样);return;endp=sym(0);for i=1:n l=sym(y(i);for k=1:i-1 l=l*(t-x(k)/(x(i)-x(k);endfor k=i+1:n l=l*(t-x(k)/(x(i)-x(k);end p=p+1;endsimplify(p);f=subs(p,t,x0);f=vpa(f,6);end 五、 实验结果 1、 X=0.2 0.4 0.6 0.8 1.0; Y=0.98 0.92 0.81 0.
5、64 0.38; p=Newton_Polyfit(X,Y); Y2=polyval(p,X); X1=0:0.01;1; 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=0;1;4;9;16;25;
6、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设计程序并运行绘制出图形。根据已知的点的信息用牛顿插值法、三次样条插值法、拉格朗日插值法等插值方法来求得近似函数,在运行出图形时可以很直观地看出近似函数的精确度哪个更好。使用matlab来处理数学问题确实很方便,使我对matlab的很多功能也有了不少的了解,知道了最基本最常用的术语怎么来表达,同时让我对这几个插值方法的算法更熟悉。 2、不过,使用matlab进行程序设计对我来说确实有点难度,不太会编写函数,特别是涉及到专门的函数,matlab中已有的函数,不太会调用,查一下资料看到别人如何表示我也不是太懂,现在用matlab写作业需要很长时间,而且还参考别人是如何写函数的,自己只是稍作修改来运行,出现问题也不太会修改。以后实习多练习,学会编写程序,学会调用matlab内部函数,了解更多。 专心-专注-专业