当前位置:文档之家› 多项式插值的振荡现象

多项式插值的振荡现象


实验内容:考虑区间[-1,1]的一个等距划分,分点为
2i xi = −1 +
Ln ( x) = ∑
1 l ( x) 2 i i =0 1 + 25 x j
n
其中的 li ( x), i = 0,1,2,, n 是 n 次拉格朗日插值基函数。
附:主要程序代码 % f=inline('1./(1+25*x.^2)'); f=inline('atan(x)'); % a=-1;b=1; a=-5;b=5; x=a:0.01:b; fx=f(x); plot(x,fx); hold on; for Nd=2:10 x0=linspace(a,b,Nd+1); y0=feval(f,x0); y=Lagrange(x0,y0,x); plot(x,y); hold on; end
上图中对于 0 点处的拟合, 偶数个节点时 (Nd=3 时) 要比附近奇数节点 (Nd=2、 Nd=4) 时要好一些。
但是不管怎么样,当 0 点拟合的好一点的时候,两端的误差就会变大。 3. g ( x) = arctan x 时,在不同分段插值的插值函数如下:
取前几部分的曲线
仍然可以得出对于 g(x)是奇函数,上图中对于 0 点处的拟合,偶数个节点时(Nd=3 时)要比附近奇数节点(Nd=2、Nd=4)时要好一些。但是总的来说,当 0 点拟合的好一点 的时候,两端的误差就会变大,节点数越多,仍然零点处拟合的会更好,两端误差会更大。
实验要求:
(1) 选择不断增大的分点数目 n=2,3….,画出原函数 f(x)及插值多项式函 数 Ln ( x) 在[-1,1]上的图像,比较并分析实验结果。 (2)选择其他的函数,例如定义在区间[-5,5]上的函数 x h( x ) = , g ( x) = arctan x 1+ x4 重复上述的实验看其结果如何。
实验记录
1. 根据实验要求编写的代码如下:
其中拉格朗日插值函数代码如下
采用 for 循环画图,画出不同插值点下的插值图像如下:
在不同的插值节点(奇数,偶数)下的插值图像分别如下
由图中可以看出,在将区间分为偶数份时,则有奇数个节点,其中有一个点过 0 点,所以奇 数个节点时,插值函数和原函数 0 点的值重合,但无论插值函数是奇数个点还是偶数个点, 有个共同的特征: (1) 由于原函数是对称,所以插值函数也是对称的 (2) 节点数越多,在 0 点附近的拟合值越好 (3) 节点数越多,在区间两端的误差越大 2. 选择其他的函数,例如定义在区间[-5,5]上的函数
实验 2.1(多项式插值的振荡现象) 问题提出:考虑一个固定的区间上用插值逼近一个函数。显然拉格朗日
插值中使用的节点越多,插值多项式的次数就越高。我们自然关心插值多项式的 次数增加时, Ln ( x) 是否也更加靠近被逼近的函数。龙格(Runge)给出一个例子 是极著名并富有启发性的。设区间[-1,1]上函数 1 f ( x) = 1 + 25 x 2
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=s+p*y0(k); end y(i)=s; end end
h( x ) =
x , g ( x) = arctan x 1+ x4
将源代码的函数和区间改一下,如下图
h( x ) =
x 是奇函数,在不同插值节点下的插值函数如下图所示: 1 + x4
由上图可以知道, 在原函数为奇函数时无论插值节点是奇数个还是偶数个, 插值函数仍然过 原点,但有所不同的是:虽然同在奇数个节点和偶数个节点下,节点数越多,仍然零点处拟 合的会更好,两端误差会更大。但是取一部分来看,如下图:
实验结论
1. 插值节点的数目不一定是越多拟合得越好,很多时候会出现发散现象。因为从插值 余项上看,n 增大,其分母(n+1)!是增大,但是分子������������������������+1 (������������)也在不断增大,它们 谁的影响大是和节点选取直接相关的,不一定就谁大。 2. 对称的节点选取,得到的插值函数的对称性与被插值函数相同 3. 对于奇函数来说,偶数个点的插值在零点处的拟合要比奇数个节点的拟合要好
相关主题