插值法与数据拟合.doc_第1页
插值法与数据拟合.doc_第2页
插值法与数据拟合.doc_第3页
插值法与数据拟合.doc_第4页
插值法与数据拟合.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

佛山科学技术学院实 验 报 告课程名称 数值分析 实验项目 插值法 专业班级 姓名 学号 指导教师 成 绩 日 期 5月12日 一、实验目的1、学会Lagrange 插值、牛顿插值和 分段线性插值等基本插值方法;2、讨论插值的Runge现象,掌握分段线性插值方法3、学会Matlab提供的插值函数的使用方法,会用这些函数解决实际问题。二、实验原理1、拉格朗日插值多项式2、牛顿插值多项式3、分段线性插值三、实验步骤1、用MATLAB编写独立的拉格朗日插值多项式函数;2、用MATLAB编写独立的牛顿插值多项式函数;3、利用编写好的函数计算本章P66例1、P77例1的结果并比较;4、已知函数在下列各点的值为:0.20.40.60.81.00.980.920.810.640.38试用4次牛顿插值多项式对数据进行插值,根据,画出图形。5、在区间-1,1上分别取用两组等距节点对龙格函数作多项式插值,对不同值,分别画出插值函数及的图形。6、下列数据点的插值01491625364964012345678(1)可以得到平方根函数的近似,在区间0,64上作图。(2)用这9个点作8次多项式插值。四、实验结果1、用MATLAB编写独立的拉格朗日插值多项式函数Lagrange 插值多项式源代码function yi=Lagrange(x, y, xi)% Lagrange 插值多项式,其中% x - 向量,全部的插值节点% y - 向量,插值节点处的函数值% xi - 标量,自变量x% yi - xi 处的函数估计值n=length(x); m=length(y);if n=m error(The lengths of X and Y must be equal); return;endp=zeros(1,n);% 对向量p赋初值0for k=1:n t=ones(1,n); for j=1:n if j=k if abs(x(k)-x(j)eps error(the DATA is error!); return; end t(j)=(xi-x(j)/(x(k)-x(j); end end p(k)=prod(t);endyi=sum(y.*p);2、用MATLAB编写独立的牛顿插值多项式函数function yi=New_Int(x, y, xi)% Newton 基本插值公式,其中% x - 向量,全部的插值节点,按行输入% y - 向量,插值节点处的函数值,按行输入% xi - 标量,自变量x% yi - xi 处的函数估计值n=length(x); m=length(y);if n=m error(The lengths of X and Y must be equal); return;end% 计算均差表YY=zeros(n); Y(:,1)=y; % Y(:,1)表示矩阵中第一列的元素for k=1:n-1 for i=1:n-k if abs(x(i+k)-x(i) y=0.41075,0.57815,0.69675,0.88811; yi=New_int(x,y,0.596)yi =0.6319144055040004、已知函数在下列各点的值为:0.20.40.60.81.00.980.920.810.640.38试用4次牛顿插值多项式对数据进行插值,根据,画出图形。解: X=0.2:0.2:1.0; y=0.98,0.92,0.81,0.64,0.38;xx=0.2:0.08:1.0; m=length(xx); z=zeros(1,m);for i=1:m z(i)=Lagrange(x, y, xx(i);endhold onplot(x,y,o);plot(xx,z,r*);hold off得到如下图形:图一 练习4的图形5、在区间-1,1上分别取用两组等距节点对龙格函数作多项式插值,对不同值,分别画出插值函数及的图形。解:a=-1;b=1;n=100;h=(b-a)/n; x=a:h:b;y=1./(1+25.*x.2); plot(x,y,k)其函数原图形分别如下所示:图二 龙格函数的图形用龙格函数的Lagrange()插值函数画图源程序当n =10时,有:function Runge(10)% Runge现象% n - 等距离节点a=-1; b=1; h=(b-a)/n;x=a:h:b; y=1./(1+25.*x.2);xx=a:0.01:b; yy=1./(1+25.*xx.2); m=length(xx); z=zeros(1,m);for i=1:m z(i)=Lagrange(x, y, xx(i);endhold onplot(x,y,o);plot(xx,z,r-);hold off当n =20时,有:function Runge(10)% Runge现象% n - 等距离节点a=-1; b=1; h=(b-a)/n;x=a:h:b; y=1./(1+25.*x.2);xx=a:0.01:b; yy=1./(1+25.*xx.2); m=length(xx); z=zeros(1,m);for i=1:m z(i)=Lagrange(x, y, xx(i);endhold onplot(x,y,o);plot(xx,z,r-);hold off其图形分别如下所示: 图三 Runge(10) 图四 Runge(20)6、下列数据点的插值01491625364964012345678(1)可以得到平方根函数的近似,在区间0,64上作图。(2) 用这9个点作8次多项式插值。function L8%平方根函数的8次多项式插值x=0 1 4 9 16 25 36 49 64; y=sqrt(x);m=length(x); z=zeros(1,m);for i=1:m z(i)=Lagrange(x, y, x(i);endhold onplot(x,y,o); plot(x,y,o);xlabel(x);ylabel(y);plot(x,z,r-);hold off得到其图形如下所示:图五 的图形x=0 1 4 9 16 25 36 49 64;y=0 1 2 3 4 5 6 7 8;xx=0:0.5:64; yy=sqrt(xx);m=length(xx);z=zeros(1,m);for i=1:mz(i)=Lagrange(x,y,xx(i);endplot(x,y,o,xx,yy,.,xx,z,r-);的8次Lagrange插值函数图形图六 的8次Lagrange插值函数图形五、讨论分析从下面这段代码可以看出,利用mathlab自带的增长型变量来作图,是一种在c语言学习中没有发现的方法。而且,代码中还体现了一种比较作图和数据共用的思维方法。例如:x=0 1 4 9 16 25 36 49 64;y=0 1 2 3 4 5 6 7 8;xx=0:0.5:64; yy=sqrt(xx);m=length(xx);z=zeros(1,m);for i=1:mz(i)=Lagrange(x,y,xx(i);endplot(x,y,o,xx,yy,.,xx,z,r-);利用以上简单的程序,matble就可以做出图形,方便观察和研究。我们知道,利用计算机则可以方便地增加曲线上样点的个数,随着样点的个数增加,让学生观察函数的图像性质,从而抽象出函数图像的形状。当然,作图的话我们也可以利用zz超级画板。下面我们完成这个过程:(1)在坐标系的属性对话框中,选择“画坐标网格”和“显示刻度”选项。(2)在作图区空白处单击鼠标右键,在快捷菜单中单击【函数或参数方程曲线】命令,如下图所示弹出函数作图属性对话框,在“”对应的编辑框中输入:x,然后在下面的曲线属性中,设置“曲线的点数”为:9,选择曲线以“折线段”方式显示,设置变量x的参数范围为:0到64,选择在折线段上“画点”,设置点的大小为:2;最后单击【确定】按钮完成,同样可以画出函数图像,通过改变曲线的点数,函数曲线越来光滑;六、改进实验建议三次样条插值直接用spline函数做。 边界条件加在y的首尾,第一个表示y(x0),最后一个表示y(xt)。 如果不加边界条件,默认是not-a-knot边界条件(注意不是自然边界条件) 自然边界条件的插值要用csape函数才能得到。 如果用interp1,则只能使用spline函数的默认边界条件,即not-a-knot条件。 下面是例子 :x=0:3:9; y=x.*cos(x); xx=linspace(0,9); plot(x,y,o);%样本点 hold on; plot(xx,interp1(x,y,xx,spline),r);%interp1只能使用默认边界条件plot(xx,spline(x,0 y 0,xx),r:);%spline可以使用第一类边界条件,这里y(0)=y(9)=0 pp=csape(x,y,second); plot(xx,fnval(pp,xx) %第二类边界条件要用csape做,这里自然边界条件 legend(样本点,默认边界条件,一阶导数为0,自然边界条件,location,south)hold off;另外,我们可以设: y=a0+a1*x+a2*x2+a(n-1)*x(n-1),则其 n次拉格朗日函数插值程序:function LagrangesNs() %用于求过n点的拉格朗日n-1次插值多项式options=Name of data file;title=Lagranges_points;lineNo=2;def=Lagranges.dat;outval=inputdlg(options,title,lineNo,def);if isempty(outval)=1,return,endfilename=outval1;data=load(filename);x=data(:,1);y=data(:,2);lagrangesN(x,y);endfunction lagrangesN(x,y)%画出已知n个点的位置plot(x,y,*);hold on%n次拉格朗日多项式为 y=a0+a1*x+a2*x2+a(n-1)*x(n-1) %其中a0 a1 a2a(n-1)为待求系数n=length(x);X=Vandermonde(x,1);A=Xy;%绘制插值函数图象x1=linspace(0,max(x);x2=Vandermonde(x1,n);y1=x2*A;plot(x1,y1);hold on%显示公式func=y= ,num2str(A(1);for i=2:n; b=+ ,num2str(A(i),*x,num2str(i-1); func=func,b;endtext(0.8,0.8,func);end%创建

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论