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

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

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

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

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

3、 = 6p = 1 -1 0fenmu = 6p = 1 -3 2 0c = 0.8333 -5.0000 9.1667 -5.0000 -3.0000 15.0000 -18.0000 0 0.5000 -2.0000 1.5000 0 2.6667 -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.0

4、000 0 -7.3333 0a = 1.0000 0 -2.0000 0a = 1.0000 0 -2.0000 -5.0000a = 1.0000 0 -2.0000 -5.0000a = 1.0000 0 -2.0000 -5.0000a =1.0000 0 -2.0000 -5.0000分段线性插值:先保存M文件:x=1:6;y=7 16 8 25 12 24;u=5.3;delta=diff(y)./diff(x);n=length(x);for j=2:(n-1) if x(j)u k=j; endend在command window中输入:s=u-x(k);v=y(k)+s.*d

5、elta(k)输出结果:v = 15.6000解:第一种做法,用spline,共55个点,其中,54个有效首先保存你一个M文件:figure(position,get(0,screensize)axes(position,0 0 1 1)x,y = ginput;然后在command window里输入以下内容:n = length(x);s = (1:n);t = (1:.05:n);u = spline(s,x,t);v = spline(s,y,t);clf resetplot(x,y,.,u,v,-);对应的x、y值:0.35729170.25361450.35729170.29096

6、390.35034720.34036140.34618060.42590360.34270830.52710840.32534720.61626510.30659720.68734940.2906250.75240960.28923610.79337350.29548610.7969880.32256940.75481930.3406250.68493980.36909720.61506020.38645830.61265060.38993060.72590360.39270830.80662650.39201390.89939760.40243060.92951810.42395830.89

7、337350.42395830.80783130.42951390.73433730.43159720.64518070.44409720.64397590.45659720.74397590.47048610.84518070.47673610.90542170.49618060.94638550.50868060.8765060.50451390.81867470.50104170.75240960.48923610.64036140.5031250.62951810.50520830.62710840.53229170.70903610.55104170.7632530.57395830

8、.83554220.59618060.85722890.59479170.78373490.57534720.70903610.55798610.63915660.53576390.56686750.53229170.52831330.53506940.47891570.5656250.5367470.59479170.59337350.62534720.6102410.63229170.57289160.6156250.53313250.60034720.49939760.57881940.44156630.5593750.37168670.52951390.29578310.4975694

9、0.24036140.47118060.20180720.66076390.3090361第二种做法,用pchip,共52个点,全部有效首先保存一个M文件:figure(position,get(0,screensize)axes(position,0 0 1 1)x,y = ginput;然后在command 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值:0.51909720.84879520.

10、50520830.75120480.49479170.67891570.51006940.66927710.53993060.73554220.57534720.81746990.5968750.86204820.61909720.87771080.61493060.81385540.58784720.74277110.58784720.74277110.56354170.67168670.53506940.6030120.5281250.5632530.5281250.52590360.5656250.58012050.60520830.62710840.6343750.61867470.61909720.57168670.58784720.5234940.53645830.41265060.49618060.32108430.4593750.2753012我更喜欢第一种,用spline的,这个能将之间画出弧度,而pchip更像是直接用线段将点依次连接得到的。使用的是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:n if(j=k)

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

最新文档


当前位置:首页 > 建筑/环境 > 设计及方案

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