文档介绍:
问题提出:考虑在一个固定的区间上用插值逼近一个函数。显然Lagrange插值屮使 用的节点越多,插值多项式的次数越高,我们白然关心插值多项式的次数增加时,L”(x)是 否也更加靠近被逼近的函数。Runge给出的一个例了是极著名并富有启发性的。设区间[-1,1] 上函数
/(x) = 7・
1 + 25/ 实验内容:考虑空|nj[-i,l]的一个等距划分,分点为
兀=—1 , i =0, 1,2 …,n,
n
■ 2z
则拉格朗U插值多项式为
L“ (兀)-工
/=0
其中,z,.(x),i =0,1,2,...,« 是"次 Lagrange 插值基函数。
实验要求:
选择不断增人的分点数日n = 2,3,…,闹出原函数f(x)及插值多项式函数L”(x)
在[-1,1]上的图像,比较并分析实验结果。
选择其他的函数,例如定义在区间卜5,5]上的函数
X
力(X)= - , g(x) = arctan(x),
1 + h
重复上述的实验看其结果如何。
首先编写拉格朗口插值函数的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
if(j-=k)
p=p*(z-xO(j))/(xO(k)-xO(j));
end
end
s=s+p*y0(k);
end
y(O=s;
end
(1)当函数为f(x) = -一 •时,
l + 25x2
Matlab程序为: x=linspace(-l,l,IOO); y=l./(l+25*); plot(x,y) hold on;
for i=2:2:10
xO=iinspace(-1,1 ,i+1 ); yO=l./(l+25*); y=laglanri(xO,yO,x); plot(x,y,T・」) hold on
end 运行结果: 结果分析:
Runge现象
1
0
-
-1 - - - - 0 1
x
•1
从图上看到在区间[-1,1]的两端点附近,随肴插值点数的增加,插值函数厶”(x)与/(X)
jr
(2)当函数为h(x) =—,时 1+x
Matlab程序为: x=linspace(-5,5,100); y=x./(l+);
plot(x,y) hold on;
fori=2:2:10 x0=linspace(-5,5,i+1); yO=xO./(l+); y=laglanri(xO,yO,x); plot(x,y,2) hold on
end
运行结果:
Rungel® S
结果分析:
从图上看到在区间卜5, 5]的两端点附近,随着插值点数的增加,插值函数L”(x)与加力
(3)当函数为 g(x) = arctan(x)
x=linspace(-5,5,100); y=atan(x);
plot(x,y) hold on;
fori=2:2:IO x0=linspace(・5,5,i+1); yO=atan(xO); y=laglanri(xO,yO,x); plot(x,y;r-f) hold on
end
运行结果:
Runge规徐
结果分析:
从图上看到在区间卜5, 5]的两端点附近,随着插值点数的增加,插值函数L”(x)与g(x)
偏离的越远,而且出现了振荡现象。
编制以函数{+};“为基的多项式最小二乘拟合程丿芋, 多项式二乘拟合。
Xi
-
・
z-
-
-
-
取权数w严1,求拟合曲线矿三$>;*中的参数他}、平方误差戸,并作离散数据{召,必} k=Q
的拟合函数y =矿(切的图像。
Matlab程序如下:
xO=-l::2;
y0=[- - - ];
alph=polyfit(xO,yO,n);%ployfit为最小二乘拟合函数,alph为系数(按降幕排列
y=polyval(alph,xO);
r=(y0-y)*(y0-y)