lagrange插值分段线性插值matlab代码

上传人:汽*** 文档编号:469650831 上传时间:2023-12-26 格式:DOC 页数:19 大小:636KB
返回 下载 相关 举报
lagrange插值分段线性插值matlab代码_第1页
第1页 / 共19页
lagrange插值分段线性插值matlab代码_第2页
第2页 / 共19页
lagrange插值分段线性插值matlab代码_第3页
第3页 / 共19页
lagrange插值分段线性插值matlab代码_第4页
第4页 / 共19页
lagrange插值分段线性插值matlab代码_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《lagrange插值分段线性插值matlab代码》由会员分享,可在线阅读,更多相关《lagrange插值分段线性插值matlab代码(19页珍藏版)》请在金锄头文库上搜索。

1、wordLagrange插值:x=0:3;y=-5,-6,-1,16;n=length(x);syms q;for k=1:n fenmu=1; p=1;for j=1:nif(j=k) fenmu=fenmu*(x(k)-x(j) p=conv(p,poly(x(j)endend c(k,:)=p*y(k)/fenmuenda=zeros(1,n);for i=1:nfor j=1:n a(i)=a(i)+c(j,i)endend输出结果:fenmu = -1p = 1 -1fenmu = 2p = 1 -3 2fenmu = -6p = 1 -6 11 -6c =fenmu = 1p =

2、1 0fenmu = -1p = 1 -2 0fenmu = 2p = 1 -5 6 0c = -3.0000 15.0000 -18.0000 0fenmu = 2p = 1 0fenmu = 2p = 1 -1 0fenmu = -2p = 1 -4 3 0c = -3.0000 15.0000 -18.0000 0 0.5000 -2.0000 1.5000 0fenmu = 3p = 1 0fenmu = 6p = 1 -1 0fenmu = 6p = 1 -3 2 0c = -3.0000 15.0000 -18.0000 0 0.5000 -2.0000 1.5000 0 2.66

3、67 -8.0000 5.3333 0a = 0.8333 0 0 0a = -2.1667 0 0 0a = -1.6667 0 0 0a = 1 0 0 0a = 1 -5 0 0a = 1 10 0 0a = 1 8 0 0a = 1 0 0 0a = 1.0000 0 9.1667 0a = 1.0000 0 -8.8333 0a = 1.0000 0 -7.3333 0a = 1.0000 0 -2.0000 0a =a =a =a =分段线性插值:先保存M文件:x=1:6;y=7168251224;u=5.3;delta=diff(y)./diff(x);n=length(x);f

4、or j=2:(n-1)if x(j)u k=j;endend在mand window中输入:s=u-x(k);v=y(k)+s.*delta(k)输出结果:v =解:第一种做法,用spline,共55个点,其中,54个有效首先保存你一个M文件:figure(position,get(0,screensize)axes(position,0 0 1 1)x,y = ginput;然后在mand window里输入以下内容:n = length(x);s = (1:n);t = (1:.05:n);u = spline(s,x,t);v = spline(s,y,t);clf resetplot

5、(x,y,.,u,v,-);对应的x、y值:第二种做法,用pchip,共52个点,全部有效首先保存一个M文件:figure(position,get(0,screensize)axes(position,0 0 1 1)x,y = ginput;然后在mand window里输入以下内容:n = length(x);s = (1:n);t = (1:.05:n);u = pchip (s,x,t);v = pchip (s,y,t);clf resetplot(x,y,.,u,v,-);对应的x、y值:我更喜欢第一种,用spline的,这个能将之间画出弧度,而pchip更像是直接用线段将点依次

6、连接得到的。使用的是splinetx。解:(a)首先保存一个M文件:n=3;xishu=2/(n-1);x=-1:xishu:1;y=1./(1+25.*x.*x);for k=1:n fenmu=1; p=1;for j=1:nif(j=k) fenmu=fenmu*(x(k)-x(j); p=conv(p,poly(x(j);endend c(k,:)=p*y(k)/fenmu;enda=zeros(1,n);for i=1:nfor j=1:n a(i)=a(i)+c(j,i);endend然后在mand window里输入以下内容:plot(x,y,*);hold on;plot(x,

7、y,*);hold on;x1=-1:0.01:1;y1=0;for i=1:ny1=y1.*x1+a(i)end y2=1./(1+25.*x1.*x1);plot(x1,y1,b);hold on;plot(x1,y2,g);即有n=3时,图像:n=10时,图像:n=100时,图像:n=1000时,图像:可以看出,将-1,1做n-1等分的n个插值点,在-0.92,1的区间内,随着n趋近于时趋近于f(x)。(b)先保存M文件:n=2;x=2.*rand(n)-1y=1./(1+25.*x.*x);n=n2;%lagrangc?for k=1:n fenmu=1; p=1;for j=1:ni

8、f(j=k) fenmu=fenmu*(x(k)-x(j); p=conv(p,poly(x(j);endend c(k,:)=p*y(k)/fenmu;enda=zeros(1,n);for i=1:nfor j=1:n a(i)=a(i)+c(j,i);endend输出结果:x =然后在mand window里输入:plot(x,y,*);hold on;x1=-1:0.01:1;y1=0;for i=1:ny1=y1.*x1+a(i)endy2=1./(1+25.*x1.*x1);plot(x1,y1,b);hold on;plot(x1,y2,g);得到以下几幅图:n=3时,x =n=

9、10时,x = Columns 1 through 7 Columns 8 through 10n=10时,数据太大,没运行出来。可以看出,将-1,1做n-1等分的n个插值点,在-0.92,0.92的区间内,随着n趋近于时趋近于f(x)。解:(a)t = 1900:10:2000V = vander(t)输出结果:t = Columns 1 through 6 1900 1910 1920 1930 1940 1950 Columns 7 through 11 1960 1970 1980 1990 2000V = 1.0e+033 * Columns 1 through 7 Columns 8 through 11从数据中可以看出,第3列至第11列均为0,后续的计算无法进展。(b)这个复选框是问我们想要哪种的拟合。(c)根据多项式来看,P(s)的系数是 P(t)的系数的倍。没有影响。t=1900:10:2000;mu=mean(t);sigma=std(t);s=(t-mu)./sigmamu =

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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