首页 > 编程知识 正文

例题matlab拉格朗日插值,lagrange插值公式matlab例题

时间:2023-05-03 20:10:22 阅读:19454 作者:1840

学习matlab不久,遇到多项式插值interp1,但在网上没有找到研究其插值方法的文章。

在此,

其中对插值方法进行了一些研究,虽然不属于matlab的范畴,但无聊的研究总的来说没有坏处。

interp1的具体运用也很低,个人理解主要用于样本丢失、样本补充,最后还介绍了傅立叶增值法。

正文:

首先介绍多项式插值函数。

y=interp1(x,y,x,' mothod ' )本文主要讨论' mothod '的四种类型。

线性插值,默认值。

nearst最近邻插值。

样条是三次样条插值。

cubic是一种三次多项式插值方法。 %以后,版本将更改为PCHIP

v5cubic是MATLAB5中使用的三次多项式插值,本文不涉及,但一起进行演示

首先,以matlab代码为例,我们来看看一维插值的四种类型之间的区别。

先给你一组数

也可以在命令窗口中直接输入m代码

x0=-4:0.5:4;

y0=1.//(2x0.^3);

x=-4:0.2:4;

y1=interp1(x0,y0,x,' linear ' );

y2=interp1(x0,y0,x,' nearst ' );

y3=interp1(x0,y0,x,' spline ' );

y4=interp1(x0,y0,x,' PCHIP ' ); %PCHIP和“cubic”的版本不同,旧版本使用y4=interp1(x0、y0、x、“cubic”)。

y5=interp1(x0,y0,x,' v5cubic ' ); %MATLAB5中使用的三次多项式插值

subplot(2、3、1 )、plot (x0、y0、' r-p ' ); title(y=1/) x^32 ) );

subplot (2,3,2 ),plot ) x0,y0,' r-',x,y1 ); title(linear );

subplot (2,3,3 ),plot ) x0,y0,' r-',x,y2 ); title(nearst );

subplot (2,3,4 ),plot ) x0,y0,' r-',x,y3 ); title (样条线);

subplot (2,3,5 ),plot ) x0,y0,' r-',x,y4 ); title(cubic );

subplot (2,3,6 ),plot ) x0,y0,' r-',x,y5 ); title(V5cubic );

拥有matlab的同学不要敲代码,结果如下:

举几个函数的二维插值为例,看看它们有什么不同

[x0,y0]=meshgrid(-3:0.8:3 ); %完成网格向量

Z0=Peaks(X0,y0 ); %z0可通过平移和缩小ladhmgsjx分布函数来获得

[x,y]=meshgrid(-3:0.25:3 );

Z1=interp2(x0,y0,z0,x,y,' linear ' );

Z2=interp2(x0,y0,z0,x,y,' nearst ' );

Z3=interp2(X0,y0,z0,x,y,' spline ' );

Z4=interp2(x0,y0,z0,x,y,' cubic ' );

subplot(2、3、1 )、surf (x0、y0、z0 ); title ('原始数据);

subplot(2、3、2 )、surf(x ) x、y、z1 ); title(linear );

subplot(2、3、3 )、surf(x ) x、y、z2 ); title(nearst );

subplot(2、3、4 )、surf(x ) x、y、z3 ); title (样条线);

subplot(2、3、5 )、surf(x ) x、y、z4 ); title(cubic );

表示不清楚。 matlab的朋友复制上面的代码就可以显示了。

从上图可以看出,这些插值方法还有区别。 本文研究具体算法,在什么情况下应用;

linear的缺省方法是线性插值,即线性回归。 有不明白的地方请看http://t.cn/RtktoiB

nearst最近邻插值法又称细心的土豆多边形(Thiesen为Dirichlet或Voronoi多边形)分析法,是荷兰气象学家聪明的八宝粥提出的分析方法。 简单来说,通过求出离散分布的气象站降雨量数据并计算平均降雨量,目前GIS和地理分析中常用该方法进行快速赋值。 在精细的土豆多边形的构建中,首先将离散点构成三角网。 这个三角网被称为Delaunaytin。 北京奥运会的水立方是根据这个原理设计的。 首先建立网络,为没有数据的网络分配空值,使最近相邻的数据点之间的距离相等。

看了很多百科全书,就不会手动复制了。 通常,该方法适用于数据紧密、完整、没有很小值的情况。 均匀的数据输入

行插值很有用,对填充无值区域很有效。

spline三次样条插值法。在用pchip插值的过程中,matlab会基于所给的函数值来帮你估算各导数值。估算的原则是保证导数值能够正确的反映散点图的形状和变化趋势。比如在散点图是单调递增的区间内,相应点的导数值就会是正的;在散点图表现出存在局部极值点的区间,相应的导数也会产生正负的变化。

样条插值是一种工业设计中常用的、得到平滑曲线的一种插值方法,三次样条又是其中用的较为广泛的一种。

原理:假设有以下节点

样条曲线

是一个分段定义的公式。给定n+1个数据点,共有n个区间,三次样条方程满足以下条件:

a. 在每个分段区间

(i = 0, 1, …, n-1,x递增), 都是一个三次多项式。

b. 满足

(i = 0, 1, …, n )

c.  ,导数

,二阶导数

在[a, b]区间都是连续的,即曲线是光滑的。

所以n个三次多项式分段可以写作:

,i = 0, 1, …, n-1

其中ai, bi, ci, di代表4n个未知系数。

cubic立方插值法,matlab新版本叫做pchip三次hermite插值,与spline插值差不多,因为两者X(j)处斜率选择方法不同。spline函数s(x)在X(j)的二节数D^2s(x)也是连续的,导致了不同结果,也就是说,spline更加光滑,D^2s(x)是连续的。

只是spline更光滑一些,总的说,数据是更光滑的函数,spline更加准确,如果数据不光滑,PCBIC不会太震荡,也不会超过目标值,建立难度较小。pchip是保持形状的,而spline不一定保持形状。

总的来说,插值的类型要求数学功底比较深,纯编程朋友还是多多学习,否则随便用起来对数据产生不必要影响就不好了。 再遇到插值问题时,多问问数学专家为妙。

数据过少时,MATLAB可是实现利用傅里叶插值实现数据一维增值

%傅里叶增值

x0=0:1.2:10;

y0=sin(x0);

n=4*length(x0);%采样数据增加

y=interpft(y0,n);

x=0:0.3:10.5;

hold on

plot(x0,y0,'ro');

plot(x,y,'b.-');

title('一维傅里叶插值');

legend('原始数据','插值结果');

MATLAB中效果如图:

傅里叶主要是波动,用在函数上非常准确,如果上面y换成,n=2,那么结果是这样的:

傅里叶变换是在数字信号处理方面很有用的一个方法,在通信和信息专业有很强的应用。

具体理论详见傅里叶分析,傅里叶变换

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。