请教个关于拉格朗日插值的问题
matlab吧
全部回复
仅看楼主
level 1
zjuxiaolei 楼主
这个程序的lb和ub换成-1和1后为什么运行后就不显示插值后的图像了呢,还有如果我想把n=5,10,20和原函数的图像显示到一个图像上应该怎么改
% 为了说明language高次差值的龙格现象
n=11; % n次language差值
lb=-5; %区间下限
ub=5; %区间上限
step=0.01; %绘图步长
%-----------------------------
% 绘制 1./(1+x.^2) 图形 (红)
x=lb:step:ub;
y=1./(1+x.^2);
plot(x,y,'r-');
hold on
%-----------------------------
% 获得进行language差值的已知点 
for i=1:n+1
xi(i)=lb+(ub-lb)*(i-1)/n; %将区间分为11等份
yi(i)=1/(1+xi(i)^2); %计算区间端点的精确函数值
end
%------------------------------
% language 差值计算
count=1; % count 为向量元素的下标
for x=lb:step:ub
fl=0;
%--------------------------
%¨pn(xk)
for k=1:n+1 % 24-36行是差值函数的计算
up=1;
dn=1;
%----------------------
%¨f(xk)
for i=1:n+1
if k~=i
up=up*(x-xi(i));
dn=dn*(xi(k)-xi(i));
end
end
%----------------------
fl=fl+yi(k)*up/dn; % 得到由language差值函数在x点处的值
end
pn(count)=fl;
%--------------------------
fi(count)=1/(1+x^2);%计算x点处的精确函数值
count=count+1;
end
%------------------------------
% L
x=lb:step:ub;
plot(x,pn,'b-') % 绘制由language差值函数的图像(蓝)

2011年11月04日 05点11分 1
1