文档详情

数学实验--多项式插值计算及其收敛性实验.doc

发布:2017-12-17约4.26千字共12页下载文档
文本预览下载声明
Lab02. 【实验目的和要求】 1.使学生深入理解Langrage插值法和Newton插值法以两者之间的异同,能用Matlab语言编写按Langrage插值法和Newton插值法计算插值的程序; 2.用所编写的程序进行插值计算、验证Runge现象、分析插值多项式的收敛性; 3.使学生深入理解教材介绍的两种分段低次插值法,熟悉掌握函数interp1的使用; 4.使用函数interp1用不同方法进行插值计算,对教材介绍的几种分段低次插值法进行分析比较。 【实验内容】 1.根据Matlab语言特点,描述Langrage插值法和Newton插值法。 2.用Matlab语言编写按Langrage插值法和Newton插值法计算插值的程序。 3.对,分别取3个,5个、9个、11个等距节点,用所编写的程序进行插值计算并画图,以验证Runge现象、分析插值多项式的收敛性。 4.用函数interp1,对,用n=11个节点(等分)作分段线性插值、分段Hermit插值和三次样条插值,用m=101个插值点(等分)作图,比较结果。 【实验仪器与软件】 1.CPU主频在1GHz以上,内存在128Mb以上的PC; 2.Matlab 6.0及以上版本。 实验讲评: 实验成绩: 评阅教师: 2012 年5 月 1 日 Lab02.次多项式在个节点上满足条件 (1) 就称这个次多项式为节点上的差值基函数。 差值基函数为 显然它满足条件(1)。于是,满足条件(1)的差值多项式可表示为 就称为拉格朗日Lagrange差值多项式。 Newton插值多项式算法描述: Newton插值多项式的表达式如下: 其中每一项的系数ci的表达式如下: 根据以上公式,计算的步骤如下: 计算 计算 …… 计算 计算 二、算法程序 编写lagrange函数如下 function y=lagrange(x0,y0,x) n=length(x0); m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end 编写Newton插值法如下 function f = Newton(x,y,x0) syms t; if(length(x) == length(y)) n = length(x); c(1:n) = 0; else display(你所输入的x与y的维数不相等!); return end f = y(1); y1 = 0; l = 1; for(i=1:n-1) for(j=i+1:n) y1(j) = (y(j)-y(i))/(x(j)-x(i)); end c(i) = y1(i+1); l = l*(t-x(i)); f = f + c(i)*l; simplify(f); y = y1; if(i==n-1) if(nargin == 3) f = subs(f,t,x0); else f = collect(f); f = vpa(f, 6); end end end 三、插值计算 对,分别取3个,5个、9个、11个等距节点,用所编写的程序进行插值计算并画图,以验证Runge现象、分析插值多项式的收敛性。 Langrange算法: 取3个等距节点进行差值计算: 编写m函数如下: x0=linspace(-5,5,3); y0=1./(1+x0.^2); x=-5:0.1:5; y=1./(1+x.^2); y1=lagrange(x0,y0,x); plot(x,y,r,x,y1,b) 取5个等距节点进行差值计算 x0=linspace(-5,5,5); y0=1./(1+x0.^2); x=-5:0.1:5; y=1./(1+x.^2); y1=lagrange(x0,y0,x); plot(x,y,r,x,y1,b); 取9个等距节点进行插值计算 x0=linspace(-5,5,9);
显示全部
相似文档