拉格朗日函数
来源:互联网 发布:无线打印服务器 mac 编辑:程序博客网 时间:2024/06/13 01:31
function f=language(x,y,x0)
%求已知数据点的拉格朗日插值多项式
%已知数据点的横坐标:x
%已知数据点的纵坐标:y
%求得的拉格朗日多项式或在x0处的插值:f
syms t;
if (length(x)==length(y))
n=length(x);
else
disp('x和y的维数不同');
return;
end
f=0.0;
for (i=1:n)
l=y(i);
for j=1:(i-1)
l=l*(t-x(j))/(x(i)-x(j));
end;
for j=(i+1):n
l=l*(t-x(j))/(x(i)-x(j));%计算拉格朗日基函数
end;
f=f+l; %计算拉格朗日插值函数
simplify(f); %化简
if i==n
if nargin==3
f=subs(f,'t',x0); %计算插值点的函数值
else
f=collect(f); %将多项式展开
f=vpa(f,4); %将插值多项式的系数化成4位精度的小数
end
end
end