Lagrange插值MATLAB源程序.docx
- 文档编号:23657782
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:11
- 大小:57.79KB
Lagrange插值MATLAB源程序.docx
《Lagrange插值MATLAB源程序.docx》由会员分享,可在线阅读,更多相关《Lagrange插值MATLAB源程序.docx(11页珍藏版)》请在冰豆网上搜索。
Lagrange插值MATLAB源程序
Lagrange插值MATLAB源程序
functiony=lagrange(x0,y0,x);%x0自变量取值向量已知y0为已知对应x0的函数取值,x为要求插值点坐标
n=length(x0);
m=length(x);
fori=1:
m
z=x(i);
s=0.0;
fork=1:
n
p=1.0;
forj=1:
n
ifj~=k
p=p*(z-x0(j))/(x0(k)-x0(j)); %插值基函数
end
end
s=p*y0(k)+s;%lagrange插值多项式
end
y(i)=s;
end
测试:
x0=[0:
2]
y0=[235]
x=0.5
Lagrange(x0,y0,x)
x0=[0:
2]
y0=[235]
x=[0:
0.01:
2]
Lagrange(x0,y0,x)
Newton插值MATLAB源程序
functionf=Newton(x,y,x0)
symst;
n=length(x);
c(1:
n)=0.0;
f=y
(1);
y1=0;
l=1;
for(i=1:
n-1)
for(j=i+1:
n)
y1(j)=(y(j)-y(i))/(x(j)-x(i));
end
c(i)=y1(i+1);
l=l*(t-x(i));
f=f+c(i)*l;
simplify(f);
y=y1;
if(i==n-1)
if(nargin==3)
f=subs(f,'t',x0);
else
f=collect(f);
end
end
end
test:
x=[1-12]
y=[0-34]
x0=[-1:
0.1:
2]
Newton(x,y,x0)
分段插值MATLAB源程序
functiony=div_linear(x0,y0,x,n)
fori=1:
n-1
if(x>=x0(i))&&(x<=x0(i+1))
y=(x-x0(i+1))/(x0(i)-x0(i+1))*y0(i)+(x-x0(i))/(x0(i+1)-x0(i))*y0(i+1);
else
continue;
end
end
test:
(例题3)
x0=[-1:
0.2:
1];
y0=1./(25*x0.^2+1);
y=interp1(x0,y0,x0,'linear')
plot(x0,y0,x0,y,'p');
Newton插值MATLAB源程序
(2)
function[]=newton(x,y,v)
x=input(“X数组=”);
y=input(“Y数组=”);
v=input(“插值点数值=”);
n=length(x);
t=zeros(n,n);
u=0;
fori=1:
n
t(i,1)=y(i);
end
forj=2:
n
fori=2:
n
ifi>=j
t(i,j)=(t(i,j-1)-t(i-1,j-1))/(x(i)-x(i-j+1));
end
end
end
fork=1:
n
s=1;
m=1;
forj=1:
k
ifj s=s*(v-x(j)); end end m=s*t(k,k); u=u+m; end disp(“插值结果=”); disp(u); end >>newton Newton插值MATLAB源程序 functionyi=newton(x,y,xi) m=length(x);n=length(y); ifm~=nerror('xandymustsame');end f=zeros(n+1,1); k=2; f (1)=y (1) whilek~=n+1 f (1)=y(k);k,x(k) fori=1: k-1 ifi~=k-1 f(i+1)=(f(i)-y(i))/(x(k)-x(i)); end end cs(i)=f(i+1); y(k)=f(k); k=k+1; end cfwh=0; fori=1: n-2 w=1; forj=1: i w=w*(xi-x(j)); end cfwh=cfwh+cs(i)*w; end yi=y (1)+cfwh; x=[0: 2] y=[235] xi=0.5 newton(x,y,xi) Newton 2)) function f = Newton(x,y,x0) syms t; if(length(x) == length(y)) n = length(x); c(1: n) = 0.0; else disp('x和y的维数不相等! '); return; end f = y (1); y1 = 0; l = 1; for(i=1: n-1) for(j=i+1: n) y1(j) = (y(j)-y(i))/(x(j)-x(i)); end c(i) = y1(i+1); l = l*(t-x(i)); f = f + c(i)*l; simplify(f); y = y1; if(i==n-1) if(nargin == 3) f = subs(f,'t',x0); else f = collect(f); %将插值多项式展开 f = vpa(f, 6); end end end x=[0: 2] y=[235] x0=0.5 Newton(x,y,x0) function [] = Newton(x,y,v) x=input('X数组=: '); y=input('Y数组=: '); v=input('插值点数值=: '); n=length(x); t=zeros(n,n); u=0; for i=1: n t(i,1)=y(i); end for j=2: n for i=2: n if i>=j t(i,j)=(t(i,j-1)-t(i-1,j-1))/(x(i)-x(i-j+1)); end end end for k=1: n s=1; m=1; for j=1: k if j s=s*(v-x(j)); end end m=s*t(k,k); u=u+m; end disp('插值结果='); disp(u); end x=[0: 2] y=[235] v=0.5 newton(x,y,v) x0=[1-12] y0=[0-34] x=[-1: 0.1: 2] Lagrange(x0,y0,x)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lagrange MATLAB 源程序