插值MATLAB程序-数值分析

  • 格式:doc
  • 大小:24.00 KB
  • 文档页数:2

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

插值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;