Lagrange插值MATLAB源程序

上传人:枫** 文档编号:457098307 上传时间:2023-05-08 格式:DOCX 页数:16 大小:97.81KB
返回 下载 相关 举报
Lagrange插值MATLAB源程序_第1页
第1页 / 共16页
Lagrange插值MATLAB源程序_第2页
第2页 / 共16页
Lagrange插值MATLAB源程序_第3页
第3页 / 共16页
Lagrange插值MATLAB源程序_第4页
第4页 / 共16页
Lagrange插值MATLAB源程序_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《Lagrange插值MATLAB源程序》由会员分享,可在线阅读,更多相关《Lagrange插值MATLAB源程序(16页珍藏版)》请在金锄头文库上搜索。

1、Lagrange 插值MATLAB源程序function y=lagrange(x0,y0,x); % x0自变量取值向量已知 y0为已知对应X0的函数取值,X为要求插值点坐标n=length(x0);m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;forj=1:n%插值基函数if j=kp=p*(z-x0(j)/(x0(k)-x0(j);endends=p*y0(k)+s;%lagrange 插值多项式endy(i)=s;end测试:-可编辑修改-x0=0:2y0=2 3 5x=0.5Lagrange(x0,y0,x) x0=0:2y0=2

2、3 5x=0:0.01:2Lagrange(x0,y0,x)Newton 插值 MATLAB 源程序function f=Newton(x,y,x0)syms t;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);endc(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);elsef = c

3、ollect(f);-可编辑修改-end-可编辑修改-endendtest:x=1 -1 2y=0 -3 4x0=-1:0.1:2Newton(x,y,x0)分段插值 MATLAB 源程序function y = div_linear(x0,y0,x,n)for i = 1:n-1if (x = x0(i) & (x =jt(i,j)=(t(i,j-1)-t(i-1,j-1)/(x(i)-x(i-j+1);endendendfor k=1:ns=1;m=1;for j=1:kif jnewtonNewton 插值 MATLAB 源程序 function yi=newton(x,y,xi) m=

4、length(x);n=length(y);if m=nerror(x and y must same);end f=zeros(n+1,1);k=2;f(1)=y(1)while k=n+1f(1)=y(k);k,x(k)for i=1:k-1if i=k-1f(i+1)=(f(i)-y(i)/(x(k)-x(i);endendcs(i)=f(i+1);y(k)=f(k);k=k+1;endcfwh=0;for i=1:n-2w=1;for j=1:iw=w*(xi-x(j);endcfwh=cfwh+cs(i)*w;endyi=y(1)+cfwh;x=0:2y=2 3 5xi=0.5new

5、ton(x,y,xi)Newton2)function f = Newton(x,y,x0) syms t;-可编辑修改-if(length(x) = length(y)n = length(x);c(1:n) = 0.0;elsedisp(x 和 y 的维数不相等! );return;endf = 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);endc(i) = y1(i+1);l = l*(t-x(i);f = f + c(i)*l;simplify(f);y = y1;if(i=n-1)if

6、(nargin = 3)f = subs(f,t,x0);elsef = collect(f);%将插值多项式展开f = vpa(f, 6);endendendx=0:2y=2 3 5x0=0.5Newton(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:nt(i,1)=y(i);end for j=2:nfor i=2:nif i=jt(i,j)=(t(i,j-1)-t(i-1,j-1)/(x(i)-x(i-j+1);endendendfor k=1:ns=1;m=1;for j=1:kif jks=s*(v-x(j);endendm=s*t(k,k);u=u+m;enddisp( 插值结果 =);disp(u);endx=0:2 y=2 3 5v=0.5newton(x,y,v)x0=1 -1 2y0=0 -3 4x=-1:0.1:2Lagrange(x0,y0,x)-可编辑修改-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号