matlab 拉格朗日插值程序求解释
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/21 23:27:12
matlab 拉格朗日插值程序求解释
n=11; %¨
lb=-5; %
ub=5; %
step=0.01; %ìì
%-----------------------------
%
x=lb:step:ub;
y=1./(1+x.^2);
plot(x,y,'r-');
hold on
%-----------------------------
%
for i=1:n+1
xi(i)=lb+(ub-lb)*(i-1)/n;
yi(i)=1/(1+xi(i)^2);
end
%------------------------------
count=1;
for x=lb:step:ub
fl=0;
%--------------------------
%¨pn(xk)
for k=1:n+1
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;
end
pn(count)=fl;
%--------------------------
fi(count)=1/(1+x^2);%¨
count=count+1;
end
%------------------------------
% L
x=lb:step:ub;
plot(x,pn,'b-')
%------------------------------
num=(ub-lb)/step+1;
for i=1:num
p_f(i)=pn(i)-fi(i);
end
center=fix(num/2);
scale=fix(num/10);
a=center-scale;
b=center+scale;
disp ' pn(i)-fi(i) '
p_f(a:b)
n=11; %¨
lb=-5; %
ub=5; %
step=0.01; %ìì
%-----------------------------
%
x=lb:step:ub;
y=1./(1+x.^2);
plot(x,y,'r-');
hold on
%-----------------------------
%
for i=1:n+1
xi(i)=lb+(ub-lb)*(i-1)/n;
yi(i)=1/(1+xi(i)^2);
end
%------------------------------
count=1;
for x=lb:step:ub
fl=0;
%--------------------------
%¨pn(xk)
for k=1:n+1
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;
end
pn(count)=fl;
%--------------------------
fi(count)=1/(1+x^2);%¨
count=count+1;
end
%------------------------------
% L
x=lb:step:ub;
plot(x,pn,'b-')
%------------------------------
num=(ub-lb)/step+1;
for i=1:num
p_f(i)=pn(i)-fi(i);
end
center=fix(num/2);
scale=fix(num/10);
a=center-scale;
b=center+scale;
disp ' pn(i)-fi(i) '
p_f(a:b)
% 为了说明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%------------------------------% Lx=lb:step:ub;plot(x,pn,'b-') % 绘制由language差值函数的图像(蓝)%------------------------------num=(ub-lb)/step+1; % 绘制函数图像所取的点数for i=1:num p_f(i)=pn(i)-fi(i); % 计算language差值函数的误差endcenter=fix(num/2); % center=[1001/2]=500scale=fix(num/10); % scale=100a=center-scale;b=center+scale;disp ' pn(i)-fi(i) ' % 显示 pn(i)-fi(i)p_f(a:b) % 显示 i=400-600 数据点