插值MATLAB程序-数值分析
- 格式:doc
- 大小:24.00 KB
- 文档页数:2
插值MATLAB程序(可以输出多项式)—数值分析
1.拉格朗日多项式逼近
function [C,L,y]=lagran(X,Y)
%拉格朗日多项式逼近
w=length(X);
L=zeros(w,w);
for k=1:w
V=1;
for j=1:w
if k~=j
V=conv(V,poly(X(j)))/(X(k)-X(j));
end
end
L(k,:)=V;
end
C=Y*L;
y=poly2sym(C,'x');
2.牛顿插值多项式
function [C,D,y]=newpoly(X,Y)
%牛顿插值多项式
n=length(X);
D=zeros(n,n);
D(:,1)=Y';
for j=2:n
for k=j:n
D(k,j)=(D(k,j-1)-D(k-1,j-1))/(X(k)-X(k-j+1));
end
end
C=D(n,n);
for k=(n-1):-1:1
C=conv(C,poly(X(k)));
m=length(C);
C(m)=C(m)+D(k,k);
end
y=poly2sym(C,'x');
3.切比雪夫逼近
function [C,X,Y]=cheby(fun,n,a,b)
%切比雪夫逼近
if nargin==2
a=-1;b=1;
end
d=pi/(2*n+2);
C=zeros(1,n+1);
for k=1:n+1
X(k)=cos((2*k-1)*d);
end
X=(b-a)*X/2+(a+b)/2;
x=X;
Y=eval(fun);
for k=1:n+1
z=(2*k-1)*d;
for j=1:n+1
C(j)=C(j)+Y(k)*cos((j-1)*z);
end
end
C=2*C/(n+1);
C(1)=C(1)/2;