拉格朗日插值、分段线性插值、三次样条插值 您所在的位置:网站首页 21和12分段法 拉格朗日插值、分段线性插值、三次样条插值

拉格朗日插值、分段线性插值、三次样条插值

2024-07-03 21:57| 来源: 网络整理| 查看: 265

本篇主要介绍在三种插值方法:拉格朗日插值、分段线性插值、三次样条插值,以及这三种方法在matlab中如何实现。

1.拉格朗日插值:   1.1基本原理:先构造一组基函数:

l_{i}(x)=\frac{(x-x_{0})...(x-x_{i-1})(x-x_{i+1})...(x-x_{n})}{(x_{i}-x_{0})...(x_{i}-x_{i-1})(x_{i}-x_{i+1})...(x_{i}-x_{n})}

         =\prod_{j=0j\neq i}^{n}\frac{x-x_{j}}{x_{i}-x_{j}}             \left ( i=0,1,...,n \right )

l_{i}(x)n次多项式,满足

l_{i}(x_{j})=\left\{\begin{matrix} 0 & j\neq i & \\ 1& j=i & \end{matrix}\right.

L_{n}(x)=\sum_{i=0}^{n}y_{i}l_{i}(x)=\sum_{i=0}^{n}y_{i}\left \{ \prod_{j=0j\neq i}^{n}\frac{x-x_{j}}{x_{i}-x_{j}} \right \}

上式称为n次Lagrange插值多项式。

1.2用Matlab作Lagrange插值:

matlab没有现成的lagrange函数,需要手动写,如下:

x0,y0为原始坐标点,维度必须相同。

x为待插值的点。

y是返回值,是最终插值结果。

function y=lagrange(x0,y0,x) %x0,y0为初始坐标,x为需要插值的点,返回的y为插值结果 n=length(x0);m=length(x); for i=1:m z=x(i); s=0; for j=1:n p=1; for k=1:n if k~=j p=p*((z-x0(j))/(x0(k)-x0(j))); end end s=p*y0(k)+s; end y(i)=s; end  2.分段线性插值: 2.1基本原理:

将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数。计算x点的插值时,只用到x左右的两个节点,计算量与节点个数n(初始值x0,y0的长度,n=length(x0))无关,而拉格朗日插值与n值有关。分段线性插值中n越大,分段越多,插值误差越小。

2.2Matlab实现分段线性插值:

用matlab实现分段线性插值不需要自己手动编写函数,matlab有现成的一维插值函数interp1

y=interp1(x0,y0,x,'method')

method指定插值方法,其值可为:

linear:线性插值(默认)

nearest:最近项插值

spline:逐次3次样条插值

cubic:保凹凸性 3 次插值

所有插值方法都要求x0单调。

3.三次样条插值:

使用三次样条插值有两种方法:其中一种就是第二种插值方式(分段线性插值),只需要将method修改为spline即可实现。

还有一种实现方式如下:

pp=csape(x0,y0);

y=ppval(pp,x);

其中x0,y0,x与前面含义相同,返回值y即插值结果。

4.彩蛋(例题):

表1给出的 x, y 数据位于机翼断面的下轮廓线上,假设需要得到 x 坐标每改变0.1 时的 y 坐标。试完成加工所需数据,画出曲线。要求用 Lagrange、分段线性和三次样条三种插值方法计算。

表1

x   0 3 5 7 9 11 12 13 14 15y   0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6

解:编写代码如下:

clear,clc x0=[0,3,5,7,9,11,12,13,14,15]; y0=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6]; x1=[0:0.1:15]; %拉格朗日插值 y1=lagrange(x0,y0,x1); figure plot(x0,y0,x1,y1,'.') title('拉格朗日插值') %分段线性插值 y2=interp1(x0,y0,x1); figure plot(x0,y0,x1,y2,'.') title('分段线性插值') %三次样条插值 y3=interp1(x0,y0,x1,'spline'); figure plot(x0,y0,x1,y3,'.') title('三次样条插值') 结果图为:

由图可知:拉格朗日插值误差较大,插值大量点的时候不建议使用。分段线性插值结果最好,使用的是method是linear(默认)。三次样条插值有点误差,但不是很大,得到的曲线比较光滑。

 

学习插值函数时的一点小心得,希望能帮到大家!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有