《数值分析实验报告(一)(完整).pdf》由会员分享,可在线阅读,更多相关《数值分析实验报告(一)(完整).pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 数值分析实验报告姓名学号系别数学系班级09 信息(2)班主讲教师王丹指导教师王丹实验日期专业信息与计算科学课程名称数值分析同组实验者无一、实验名称:实验一、插值多项式的收敛性实验二、实验目的:1理解插值的基本原理;2掌握多项式插值的概念、存在唯一性;3编写 MATLAB 程序实现Lagrange 插值和 Newton 插值,验证Runge现象、分析插值多项式的收敛性。三、实验内容及要求:1已知数据如下:ix0.2 0.4 0.6 0.8 1.0()if x0.98 0.92 0.81 0.64 0.38(1)用 MATLAB 语言编写按Langrage 插值法和Newton 插值法计算插值
2、的程序,对以上数据进行插值;(2)利用 MATLAB 在第一个图中画出离散数据及插值函数曲线。2给定函数21(),1,1125fxxx=?+,利用上题编好的Langrage 插值程序(或Newton 插值程序),分别取3 个,5 个、9 个、11 个等距节点作多项式插值,分别画出插值函数及原函数()f x的图形,以验证Runge现象、分析插值多项式的收敛性。三、实验步骤(或记录)Lagrange 插值法的基本思想:步骤1:构造01,nxxxL处的插值基函数01(),(),()nlx lxlxL,其中,插值节点ix处的插值基函数()ilx为011011()()()()()()()()()iini
3、iiiiiinxxxxxxxxlxxxxxxxxx-+-+-=-LLLL;步骤 2:以iy作为()ilx的系数,使得()i iylx通过插值点(,)iix y;步 骤3:把 所 有 的()i iy lx线 性 叠 加,得 到 通 过 所 有 插 值 点(,),0,1,iix yin=L的 插 值 函 数0()()nni iiLxy lx=?。Lagrange 插值伪代码:给定n个插值点0011(,),(,),(,)nnxyxyxyL的情况下,求插值函数()nLx在点t处的函数值。/*输入参数2*x=(x0,x1,.,xn),插值节点*y=(y0,y1,yn);被插函数 f(x)在插值节点处的函
4、数值*t 求插值函数 Ln(x)在 t 处的函数值*返回值插值函数 Ln(x)在 t 处的函数值*/procedure Lagrange result0;for i=1 to n li(t)1;for j=1 to n if i jli(t)li(t)*(t-xi)/(xi-xj);endif end for resultresult+yi*li(t);endfor return result;end procedure Lagrange 插值子程序lagr1:function y=lagr1(x0,y0,x)%x0为插值点的向量,y0 为插值点处的函数值向量,x 为未知的点向量n=lengt
5、h(x0);m=length(x);for i=1:m z=x(i);s=0.0;for k=1:n p=1.0;for j=1:nif j=k p=p*(z-x0(j)/(x0(k)-x0(j);endend s=p*y0(k)+s;end y(i)=s;E nd Newton 插值算法公式:001001011()(),(),()()()nnnNxf xf xxxxf xxxxxxxxxLLL余项为()()()nnRxf xNx)(,010ininxxxxxxf0(1)()()(1)!niif nxxn其中(,)a b 与x 有关.Newton插值伪代码:3/*输入参数*x=(x0,x1.,
6、xn),插值节点*y=(y0,y1,yn);被插函数 f(x)在插值节点处的函数值*t 求插值函数 Pn(x)在 t 处的函数值*返回值插值函数 Pn(x)在 t 处的函数值*/procedure Newtonfor j=0 to n d1jyj;end for for j=1 to n for i=j to n dij(di,j-1-di-1,j-1)/(xi-xi-j+1);end for end for resultd11;temp1;for i=1to n temptemp*(t-xi-1);resultresult+di,i*temp;end for return result;en
7、d procedure Newton插值子程序 Newton:function y=newton(x0,y0,x)%牛顿插值法n=length(x0);m=length(x);d=zeros(n,n);%d为差商表矩阵for j=1:nd(j,1)=y0(j);%差商表第一列end for j=2:n%差商表为下三角矩阵for i=j:n d(i,j)=(d(i,j-1)-d(i-1,j-1)./(x0(i)-x0(i-j+1);%求差商表矩阵中各值end end for k=1:m z=x(k);result=d(1,1);temp=1;for i=2:n temp=temp*(z-x0(i
8、-1);result=result+d(i,i)*temp;end y(k)=result;end 4 1编写拉格朗日插值多项式函数内容为:function f=lagfun(x)a=0.2,0.4,0.6,0.8,1.0;b=0.98,0.92,0.81,0.64,0.38;for i=1:5L(i)=1;for j=1:5if j=i L(i)=L(i)*(x-a(j)/(a(i)-a(j);endendendf=0;for i=1:5 f=f+L(i)*b(i);end画图程序内容为:x0=0.2,0.4,0.6,0.8,1.0;y0=0.98,0.92,0.81,0.64,0.38;p
9、lot(x0,y0,o)hold on grid on fplot(lagfun,0,1);hold on x=0:0.1:1;plot(x,newton(x0,y0,x),r);legend(离散点,Lagrange插值,Newton插值)图形为:00.10.20.30.40.50.60.70.80.910.40.50.60.70.80.91离 散 点Lagrange 插 值Newton 插 值5 2Lagrange插值程序for n=3:2:11 x=-1:0.1:1;y=1./(1+25.*x.2);z=0*x;x0=-1:2/(n-1):1;y0=1./(1+25.*x0.2);y1=
10、lagr1(x0,y0,x);plot(x,z,r,x,y,k:,x,y1,r)gtext(Lagr.,num2str(n)hold on end title(Lagrange)legend(Largr插值,f(x)图像)图形为:-1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.500.511.52Lagr.3Lagr.5Lagr.7Lagr.9Lagr.11LagrangeLargr 插 值f(x)图 像6-1-0.8-0.6-0.4-0.200.20.40.60.81-0.4-0.200.20.40.60.811.21.41.6Lagr10.y=1/(1+25.*x.2)Lagrange拉格朗日插值在高次插值时同原函数偏差大、存在龙格现象,高次插值多项式不收敛。五、教师评语(或成绩)教师签字:王丹2011 年月日