文档介绍:
问题提出:考虑在一个固定的区间上用插值逼近一个函数。显然Lagrange插值中使 用的节点越多,插值多项式的次数越高,我们自然关心插值多项式的次数增加时,九3)是 否也更加靠近被逼近的函数。Runge给出的一个例了是极著名并富有启发性的。设区间[-1,1] 上函数
f(x) = —
l + 25x2
实验内容:考虑空间[-1,1]的一个等距划分,分点为
,2i •
X- — —1 , ,=0, 1,2 ri,
n
则拉格朗日插值多项式为
其中,L(x),i = 0,1,2,.,.,/z 是〃次 Lagrange 插值基函数。
实验要求:
(1)选择不断增大的分点数目〃 = 2,3,...,画出原函数f(x)及插值多项式函数九(x)
在[-1,1]上的图像,比较并分析实验结果。
(2)选择其他的函数,例如定义在区间[-5,5]上的函数
h(x) = , g (1) = arctan(x),
1 + x
重复上述的实验看其结果如何。
首先编写拉格朗日插值函数的Matlab实现:
Matlab程序为:
function y=lagrange(xO,yO,x) %Lagrange 插值
n=length(xO);
m=length(x);
for i=l:m
z=x(;i);
s=;
for k=l:n
P=;
for j=l:n
晚〜=k)
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=s+p*y0(k);
end
y(i)=s;
end
(1)当函数为f(x) = — .时,
l + 25x
Matlab程序为:
x=linspace(-1,1,100);
y=l./(l+25*);
plot(x,y)
hold on;
for i=2:2:10
xO=linspace(-1,1 ,i+1);
yO=l./(l+25*);
y=laglanri(xO?yO,x);
plot(x,y」Z)
hold on
end
运行结果:
结果分析:
从图上看到在区间[-1, 1]的两端点附近,随着插值点数的增加,插值函数£〃(工)与f(x)
x
(2)当函数为h(x) = ——,时 1 + x
Matlab程序为:
x=linspace(-5,5,100);
y=x./(l+);
Plot(x,y)
hold on;
for i=2:2:10
x0=linspace(-5,5 ,i+1);
yO=xO./(l+);
y=laglanri(xO,yO,x);
plot(x,y,i-」)
hold on
end
运行结果:
结果分析:
从图上看到在区间[-5, 5]的两端点附近,随着插值点数的增加,插值函数右3)与/i(x)
(3)当函数为 g(x) = arctan(x)
x=linspace(-5,5,100);
y=atan(x);
plot(x,y)
hold on;
for i=2:2:10
x0=linspace(-5,5 ,i+1);
yO=atan(xO);
y=laglanri(xO,yO,x);
plot(x,y;r-')
hold on
end
运行结果:
结果分析:
从图上看到在区间[-5, 5]的两端点附近,随着插值点数的增加,插值函数L,(x)与g(x)
编制以函数{¥}£=0为基的多项式最小二乘拟合程序, 多项式二乘拟合。
Xi
-
-
-
-
-
取权数叫三1,求拟合曲线9*三»;时中的参数0"平方误差芦,并作离散数据3,/} k=Q
的拟合函数y =伊*(尤)的图像。
Matlab程序如下:
x0=-l::2;
y0=[- - - ];
alph=polyflt(xO,yO,n);%ployflt为最小二乘拟合函数,alph为系数(按降蓦排列
y=polyval(alph,xO);
L(y0-y)*(y0-y),;%平方误差,注意平方的表达式
x=-l::2;
y=polyval(alph,x);
plot(x,y,k--,);
xlabel(,x,);ylabel(拟合曲线,);
hold on