清风数学建模---插值算法

数模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就需要使用一些数学的方法,“模拟产生”一些新的但又比较靠谱的值来满足需求,这就是插值的作用。

插值的定义

设函数 y = f ( x ) y=f(x) y=f(x)在区间[a,b]上有定义,且已知在点
a ≤ x 0 ≤ x 1 ≤ ⋯ ≤ x n ≤ b a \leq x_0 \leq x_1 \leq \cdots \leq x_n\leq b ax0x1xnb
上的值分别为: y 0 , y 1 , ⋯   , y n , y_0,y_1,\cdots,y_n, y0,y1,,yn,
若存在一个简单的函数 p ( x ) p(x) p(x),使
P ( x i ) = y i , ( i = 0 , 1 , 2 ⋯   , n ) P(x_i)=y_i,(i=0,1,2 \cdots ,n) P(xi)=yi,(i=0,1,2,n)
则称 P ( x ) P(x) P(x) f ( x ) f(x) f(x)的插值函数,点 x 0 , x 1 , ⋯   , x n x_0,x_1,\cdots,x_n x0,x1,,xn称为插值节点,闹含插值节点的区间 [ a , b ] [a,b] [a,b]称为插值区间,求插值函数 P ( x ) P(x) P(x)的方法称为插值法。

插值的分类

  • P ( x ) P(x) P(x)是次数不超过 n n n的代数多项式,即
    P ( x ) = a 0 + a 1 x + ⋯ + a n x n P(x)=a_0+a_1x+ \cdots +a_nx^n P(x)=a0+a1x++anxn
  • P ( x ) 为 分 段 多 项 式 , 就 成 为 分 段 插 值 。 P(x)为分段多项式,就成为分段插值。 P(x)
  • P ( x ) 为 三 角 多 项 式 , 就 成 为 三 角 插 值 P(x)为三角多项式,就成为三角插值 P(x)

一般插值多项式的原理

定理 设有 n + 1 n+1 n+1个互不相同的节点 ( x I , y i ) ( i = 0 , 1 , 2 , . . . n ) (x_I,y_i) (i=0,1,2,...n) (xI,yi)(i=0,1,2,...n)
则存在唯一的多项式:
L n ( x ) = a 0 + a 1 x + a 2 x 2 + . . + a n x n L_n(x)=a_0+a_1x+a_2x^2+..+a_nx^n Ln(x)=a0+a1x+a2x2+..+anxn
使得 L n ( x j ) = y j ( j = 0 , 1 , 2 , . . . n ) L_n(x_j)=y_j (j=0,1,2,...n) Ln(xj)=yj(j=0,1,2,...n)
构造方程组
在这里插入图片描述
在这里插入图片描述

拉格朗日插值法

在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测点渠道观测到的值
两个点: ( x 0 , y 0 ) , ( x 1 , y 1 ) (x_0,y_0),(x_1,y_1) (x0,y0),(x1,y1)
f ( x ) = x − x 1 x 0 − x 1 y 0 + x − x 0 x 1 − x 0 y 1 f(x)=\frac{x-x_1}{x_0-x_1}y_0+\frac{x-x_0}{x_1-x_0}y1 f(x)=x0x1xx1y0+x1x0xx0y1
同理三个点: ( x 0 , y 0 ) , ( x 1 , y 1 ) ( x 1 , y 2 ) (x_0,y_0),(x_1,y_1)(x_1,y_2) (x0,y0),(x1,y1)(x1,y2)
f ( x ) = ( x − x 1 ) ( x − x 2 ) ( x 0 − x 1 ) ( x 0 − x 2 ) y 0 + ( x − x 0 ) ( x − x 2 ) ( x 1 − x 0 ) ( x 1 − x 2 ) y 1 + ( x − x 0 ) ( x − x 1 ) ( x 2 − x 0 ) ( x 2 − x 1 ) y 2 f(x)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)}y_0+\frac{(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)}y_1+\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)}y_2 f(x)=(x0x1)(x0x2)(xx1)(xx2)y0+(x1x0)(x1x2)(xx0)(xx2)y1+(x2x0)(x2x1)(xx0)(xx1)y2
在这里插入图片描述

龙格现象

在这里插入图片描述
在这里插入图片描述
高次插值会产生龙格现象 ,即在两端处波动极大,产生明显的震荡。在不熟悉曲线运动趋势的前提下,不要轻易使用高次插值。

分段线性插值

因为插值多项式次数越高摄入误差可能显著增大,且插值多项式次数高精度未必显著提高
因此采用分段低次插值是一种办法

分段二次插值

在这里插入图片描述

牛顿插值法

在这里插入图片描述

与拉格朗日插值法相比,牛顿插值法具有继承性。(牛顿插值法每次插值只有和前n项的值有关,这样每次只要在原来的函数上添加新的项,就能过产生新的函数)

但是牛顿插值法也存在龙格现象的问题

两种插值法的另一个却点

上面讲的两种插值仅仅要求插值多项式在插值节点处与被插函数有相等的函数值,而这种插值多项式却**不能全面反映被插值函数的性态。**然而在许多实际问题中,不仅要求插值函数与被插值函数在所有节点处有相同的函数值,它也需要在一个或全部节点上插值多项式与被插函数有相同的低阶甚至高阶的导数值。
对于这些情况,拉格朗日插值和牛顿插值都不能满足。

Hermite插值法

在这里插入图片描述

不但要求在节点上的函数值相等,而且还要求对应的导数值也相等,甚至要求高阶导数也相等,满足这种要求的插值多项式就是Hermite 插值多项式

原理

在这里插入图片描述

分段三次Hermite插值

直接使用Hermite插值得到的多项式次数较高,也存在着龙格现象,因此在实际使用中,往往分段三次Hermite插值多项式(PCHIP)。
而这个在matlab中有内置的函数,直接调用就可以了

p=pchip(x,y,new_x)
%x是已知的样本点的横坐标;y是一只样本点的纵坐标;new_x是要插入处对应的横坐标

x=-pi:pi;y=sin(x);
new_x=-pi:0.1:pi;
p=pchip(x,y,new_x);

三次样条插值

在这里插入图片描述

在这里插入图片描述
原理不用太深究,会用就好。。。。。
同样的matlab中有内置的函数

p=spline(x,y,new_x)

x=-pi:pi;y=sin(x);
new_x=-pi:0.1:pi;
p1=pchip(x,y,new_x);
p2=spline(x,y,new_x);
plot(x,y,'o',new_x,p1,'r-',new_x,p2,'b-')

插值对比图

在这里插入图片描述
可以看出,三次样条生成的曲线更加光滑。在实际建模中由于我们不知道数据的生成过程,因此这两种插值都可以使用。

n维数据插值(了解)

在这里插入图片描述

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值