n次拉格朗日函数插值
程序:
function LagrangesNs() %用于求过n点的拉格朗日n-1次插值多项式
options={'Name of data file'};
title='Lagranges_points';
lineNo=2;
def={''};
outval=inputdlg(options,title,lineNo,def);
if isempty(outval)==1,return,end
filename=outval{1};
data=load(filename);
x=data(:,1);
y=data(:,2);
lagrangesN(x,y);
end
function lagrangesN(x,y)
%画出已知n个点的位置
plot(x,y,'*');
hold on
%n次拉格朗日多项式为 y=a0+a1*x+a2*x^2+…+a(n-1)*x^(n-1)
%其中a0 a1 a2…a(n-1)为待求系数
n=length(x);
X=Vandermonde(x,1);
A=X\y;
%绘制插值函数图象
x1=linspace(0,max(x));
x2=Vandermonde(x1',n);
y1=x2*A;
plot(x1',y1);
hold on
%显示公式
func=['y= ',num2str(A(1))];
for i=2:n;
b=['+ ',num2str(A(i)),'*x^',num2str(i-1)];
func=[func,b];
end
text(,,func);
end
%创建一个Vandermonde行列式
MATLAB编辑n次拉格朗日函数插值法的程序 来自淘豆网www.taodocs.com转载请标明出处.