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

多项式插值的震荡现象

fplot('-abs(h(x)-Lh(x,15))',[-5 5],color(3))
fplot('-abs(h(x)-Lh(x,20))',[-5 5],color(4))
legend('5次','10次','15次','20次')
title('逼近函数与原函数在区间上的误差')
grid on
(程序代码2.1.3)【计算误差】运行窗口主程序:
三、实验结果及分析
1.I.画出函数f(x)及其插值多项式函数Ln(x)在[-1,1]上的图像,如下图,
(程序代码1.1.1)
II.由于fminbnd函数的不可靠性,先通过编程绘出每次逼近在定义区间上的误差如下图,(程序代码1.1.2)
观察图像可知每次逼近的最大误差在哪个区间,再通过编程缩小区间,得到其每次逼近最大误差为(截图如下,程序代码1.1.3),
数值分析课程设计
多项式插值的震荡现象
指导教师
学院名称
专业名称
提交日期
一、问题的提出
在一个固定区间上用插值逼近一个函数。显然,拉格朗日插值中使用的节点越多,插值多项式的次数就越高。而插值多项式增加时,Ln(x)是否也更加靠近被逼近的函数。下面就这个问题展开实验。
二、实验内容
1.设区间[-1,1]上的函数 ,对其等距划分,写出其拉格朗日插值多项式为 。通过不断增加分点数n=2,3,…。
title('逼近函数与原函数在区间上的误差')%表明图像名称
grid on%图像中显示网格,易于观察
axis([-1,1,-2.2,0])%缩小观察范围
(程序代码1.1.3)【计算误差】运行窗口主程序:
[xmin(1),ymin(1)]=fminbnd('-abs(f(x)-Lf(x,5))',-0.2,0.2)
fplot('Lh(x,10)',[-5 5],color(2)) %插值的图像
fplot('Lh(x,15)',[-55],color(3))
fplot('Lh(x,20)',[-55],color(4))
legend('原函数','5次','10次','15次','20次')
title('多项式插值的震荡现象') %表明图像名称
axis([-5,5,-1,1]) %缩小观察范围
grid on %图像中显示网格,易于观察
(程序代码2.1.2)【绘图表示误差】运行窗口主程序:
hold on
color=['g','b','m','k']
fplot('-abs(h(x)-Lh(x,5))',[-5 5],color(1))
fplot('-abs(h(x)-Lh(x,10))',[-5 5],color(2))
Lh.m:function Ln=Lh(x,n)
Ln=0%初始化Ln
for i=1:n+1%平均划分节点,并存储在X矩阵内
X(i)=-5+10*(i-1)/n;
end
for i=1:n+1%该循环得出各项ai(x)f(xi)想加之和
q=h(X(i))
for j=1:n+1%该循环得出每一项的
if i~=j
%计算5次插值多项式与原函数之间差的最大值,下面同理
[xmin(2),ymin(2)]=fminbnd('-abs(f(x)-Lf(x,7))',-0.2,0.2)
[xmin(3),ymin(3)]=fminbnd('-abs(f(x)-Lf(x,9))',-1,-0.8)
[xmin(4),ymin(4)]=fminbnd('-abs(f(x)-Lf(x,11))',-1,-0.8)
[2]史万明 吴裕树,数值分析[M],北京,北京理工大学出版社,2010-4
六、附录
I.运行环境(计算机型号DELL N4030):
II.运行时间:2012年5月30日星期三20:00
III.程序代码:
1.定义两个m函数:
f.m:function z=f(x)
z=1/(1+25*(x^2))
Lf.m:function Ln=Lf(x,n)
color=['g','b','m','k','c','y'] %定义颜色字符组
fplot('-abs(f(x)-Lf(x,5))',[-1 1],color(1))%分别画出每次插值
fplot('-abs(f(x)-Lf(x,7))',[-1 1],color(2))%在定义区间上的误差
fplot('-abs(f(x)-Lf(x,9))',[-1 1],color(3))
并:I.画出原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像;
II.给出每一次逼近的最大误差;
III.比较并分析实验结果。
2.选择其他函数,如定义在区间[-5,5]上的函数 和 ,重复上述I、II、III三个步骤看其结果如何。
3.区间[a,b]上切比雪夫点的定义为 ,k=1,2,…,n+1。以 , ,…, 为插值节点构造上述各函数的Lagrange插值多项式,比较其结果。
四、关于本设计的体会
做了两个星期的课程设计,首先的感触就是很烦,然后感觉收获了很多,包括对Matlab的熟悉程度有很大的提升、对Matlab一些内置函数也有了很好的理解和运用、锻炼了自己自习找资料的能力。而做这个课程设计的主要的困难就是做出第一个函数的绘图、误差分析等等,因为后面无论是其它两个函数或者用切比雪夫点构造的三个函数的插值函数,都是万变不离其宗。
2.h(x):
I.画出函数h(x)及其插值多项式函数Ln(x)在[-1,1]上的图像,如下图(程序代码2.1.1):
II.同理先通过编程绘出每次逼近在定义区间上的误差如下图(程序代码2.1.2),
再通过缩小区间,编程计算每次逼近最大误差如下(截图如下,程序代码2.1.3):
III.比较并分析实验结果:
Ln=0%初始化Ln
for i=1:n+1
X(i)=-1+2*(i-1)/n;%平均划分节点,并存储在X矩阵内
end
for i=1:n+1%该循环得出各项ai(x)f(xi)想加之和
q=f(X(i))
for j=1:n+1%该循环得出每一项的ai(x)f(xi)
if i~=j
q=q*(x-X(j))/(X(i)-X(j))
(2)就每次逼近的最大误差分析。其结果与上两个函数大致一样,就不做详细说明了。
3.以切比雪夫点为插值点构造上述3个函数的拉格朗日插值公式,并画图,
f(x)(程序代码3.1.1):
h(x)(程序代码3.2.1):
g(x)(程序代码3.3.1):
先通过画图并观察,缩小区间得到每次逼近的最大误差:
f(x)(程序代码3.1.2):
q=q*(x-X(j))/(X(i)-X(j))
end
end
Ln=Ln+q
end
(程序代码2.1.1)【绘图】运行窗口主程序:
fplot('h(x)',[-55],'r') %画出原函数图像
hold on %保留图像
color=['g','பைடு நூலகம்','m','k'] %定义颜色字符组
fplot('Lh(x,5)',[-5 5],color(1)) %分别画出5,7,9,11,13,15次
而这次设计的过程和结果,也存在较多不足之处。对Matlab一些函数的不了解,导致花大量的时间走了弯路,并得到不太理想的结果,例如:无法通过一个循环语句;还有就是在分析结果时,不能很透彻的分析到位,尚且有待提高。
五、参考文献
[1]任玉杰,数值分析及其MATLAB实现[M],北京,高等教育出版社,2007
fplot('-abs(f(x)-Lf(x,11))',[-1 1],color(4))
fplot('-abs(f(x)-Lf(x,13))',[-1 1],color(5))
fplot('-abs(f(x)-Lf(x,15))',[-1 1],color(6))
legend('5次','7次','9次','11次','13次','15次')
legend('原函数','5次','7次','9次','11次','13次','15次')
title('多项式插值的震荡现象') %表明图像名称
axis([-1,1,-1,1])%缩小观察范围
grid on%图像中显示网格,易于观察
(程序代码1.1.2)【绘图表示误差】运行窗口主程序:
hold on %保留图像
再通过缩小区间,编程计算每次逼近最大误差如下(截图如下,程序代码2.2.3):
III.比较并分析实验结果:
(1)在同一个坐标系中绘制g(x)及5次、10次等多次插值后的图像。从图中可以看出:与第1、2个函数不同,这里的10次插值函数整体拟合程度最好,在两端并没有发生较剧烈的震荡现象;而插值次数到了15或20次时,震荡非常强烈。
相关主题