什么情况用它:
- 需要根据已知的函数点进行数据、模型的处理和分析
- but 现有的数据极少,不足以支撑分析的进行
- 需要 “ 模拟产生 ” 一些新的 and 可靠的值来满足需求
插值法分类:
- 分段插值
- 多项式插值
- 三角插值
拉格朗日插值法
- 两个点:
- 三个点:
- 四个点:
缺点:
会产生龙格现象(Runge phenomenon)这时候就推荐分段线性插值
分段二次插值
牛顿插值法
两种插值法对比:
维度 | 拉格朗日插值 | 牛顿插值 |
缺点 | 龙格现象,不能全面反映被插值函数的性态 | 也存在龙格现象不能全面反映被插值函数的性态 |
优点 | 具有继承性 |
埃尔米特插值(Hermite) 登场
介绍:
原理
分段三次埃尔米特插值
直接使用 Hermite 插值得到的多项式次数较高,也存在龙格现象,因此在实际应用中,使用 三次Hermite插值多项式 (PCHIP)
三次样条插值
我也有点懵逼
函数介绍
plot 函数用法
plot (x1, y1, x2, y2)
plot(x, y, ‘o’, new_x, p, ‘r-’)
线方式 | 介绍 |
- | 实线 |
: | 点线 |
-. | 虚点线 |
– | 波折线 |
点方式 | 介绍 |
. | 圆点 |
+ | 加号 |
* | 星号 |
x | x行 |
o | 小圆 |
颜色 | 介绍 |
y | 黄 |
r | 红 |
g | 绿 |
b | 蓝 |
w | 白 |
k | 黑 |
m | 紫 |
c | 青 |
Hermite内置函数
- 示例代码:
x = -pi:pi;
y = sin(x);
new_x = -pi:0.1:pi;
p = pchip(x, y, new_x);
plot(x, y, 'o', new_x, p, 'r-')
- pchip函数介绍
插入后对应的纵坐标 = pchip(自变量,因变量,插入处对应的横坐标)
三次样条插值内置函数
- 示例代码:
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-')
legend('样本点','三次埃尔米特插值','三次样条插值','Location','SouthEast') % 标注显示在东南方向
n维数据插值(了解)
p = interpn(x1, x2, …xn, y, new_x1, new_x2, …, new_xn, method)
- x1, x2, …, xn是已知的样本点的横坐标
- y 是 一直的样本点的纵坐标
- new_x1, new_x2, …, new_xn 是要插入点的横坐标
method 是要插值的方法:
- linear:线性插值(默认算法)
- cubic:三条插值
- spline:三次样条插值法(最为精准)
- nearest:最邻近插值算法
- 示例代码:
x = -pi:pi;
y = sin(x);
new_x = -pi:0.1;pi;
p = spline(x, y, new_x)
等价于 p = interpn(x, y, new_x, 'spline');
闪亮登场——可用于 短期预测