- 29
- 0
- 约 5页
- 2018-08-19 发布于天津
- 举报
数值试验三多项式插值的震荡现象一试验要求考虑区间的一个等距
数值实验三:多项式插值的震荡现象
一:实验要求
考虑区间的一个等距划分,分点为:
则拉格朗日插值多项式为:
其中是n次拉格朗日插值基函数。
二:实验要求及实验结果
选择不断增大的分点数目画出原函数f(x)及插值多项式函数在上的图像,比较分析实验结果。
实验内容:
编写MATLAB程序如下:
clear;
n=30; %对n赋值
x=linspace(-1,1,(n+1)); %在区间等距划分
y=1./(1.+25*(x.^2));
zz=linspace(-1,1,50); %实现函数
for i=1:50
z=zz(i);
t=0.0;
for k=1:n+1
p=1.0;
for j=1:n+1
if j~=k
p=p*(z-x(j))/(x(k)-x(j));
end
end
t=p*y(k)+t;
end %实现函数
L(i)=t;
end
plot(zz,L,r)
hold on
m=linspace(-1,1,50);%y=f(x)绘图
f=1./(1.+25*(m.^2));
plot(m,f,b)
legend(y=Ln(x),y=f(x))
title(n=30)
运行程序,使n从2开始增大,取n=10,15的实验波形如下:
由实验波形分析可以知道,随着n的增加,插值多项式函数的震荡(龙格现象)越来越严重。这就说明,拉格朗日等距分段插值多项式函数并不是分点数目越大对原函数越逼近。
选择其他函数,例如定义在区间上的函数:
重复上述的实验看结果如何。
ⅰ)实验过程:
编写MATLAB程序。这里只要对第一个实验的程序稍加修改,将f(x)换成h(x) 定义区间改为便可以运行了。
运行程序,使n从2开始增大,取n=10,15的实验波形如下:
可以看到当n=10时,插值函数不能很好的逼近原函数,随着n的增大,出现了较严重的震荡现象。
ⅱ)实验过程:
编写MATLAB程序,这里只要对第一个实验的程序稍加修改,将f(x)换成g(x)定义区间改为便可以了。
运行程序,使n从2开始增大,取n=10,15的实验波形如下:
可以看到当n=10时,插值函数不能很好的逼近原函数,随着n的增大,出现了较严重的震荡现象。
区间上切比雪夫的定义为
以为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果。
ⅰ)实验过程:
编写MATLAB程序如下:
clear;
n=20;
b=-1,a=1;
for c=1:n+1
x(c)=((b+a)/2.0)+((b-a)/2)*cos(((2*c-1)*pi)/(2*n+2));
y(c)=1./(1.+25*(x(c).^2)); %实现切比雪夫插值函数
end
zz=linspace(-1,1,100);
for i=1:100
z=zz(i);
t=0.0;
for k=1:n+1
p=1.0;
for j=1:n+1
if j~=k
p=p*(z-x(j))/(x(k)-x(j));
end
end
t=p*y(k)+t;
end
L(i)=t; %构造拉格朗日多项式函数
end
plot(zz,L,r)
hold on
m=linspace(-1,1,100);%y=f(x)绘图 %画图
f=1./(1.+25*(m.^2));
plot(m,f,b)
legend(y=Ln(x),y=f(x))
title(n=20)
运行程序,结果如下图所示。随着n的增大,插值函数很好的逼近原函数,没有出现使用等距划分所出现的震荡现象。且当n超过20后,插值函数基本上和原函数重合。
ⅱ)实验过程:
编写MATLAB程序,这里只要对第一个实验的程序稍加修改,将f(x)换成h(x)定义区间改为便可以了。
ⅲ)实验过程:
编写MATLAB程序,这里只要对第一个实验的程序稍加修改,将f(x)换成g(x)定义区间改为便可以了。
原创力文档

文档评论(0)