1.分段线性插值
分段线性插值(Piecewise Linear Interpolation)是一种用于逼近数据的插值方法,它将数据集分段连接成线性函数。在该方法中,对于每个数据区间,根据该区间端点之间的直线来定义插值多项式,实现局部逼近。
clc;
clear;
% 定义数据点
x = [0 1 2 3 4];
y = [0 1 4 9 16];
% 定义插值点
xi = 1.5;
% 进行分段线性插值
yi = interp1(x, y, xi, 'linear');
% 输出结果
fprintf('在 x=%g 处进行分段线性插值,得到 y=%g\n', xi, yi);
2.分段3次Hermite插值
每个子区间都需满足以下表达式(同3次样条插值):
clc;
clear;
% 定义数据点
x = [0 1 2 3 4];
y = [0 1 4 9 16];
% 定义插值点
xi = 1.5;
% 进行分段3次Hermite插值
yi = interp1(x, y, xi, 'pchip');
% 输出结果
fprintf('在 x=%g 处进行分段3次Hermite插值,得到 y=%g\n', xi, yi);
3.3次样条插值
分段低次插值虽具有很多优点,但是,这种插值方法只能保证各段曲线在连接点上的连续,而不能保证整条曲线在这些点上的充分光滑性,这就不能满足某些工程技术上的要求.例如,在船体飞机等外形曲线的设计中,不仅要求曲线连续,而且要求曲线的曲率也连续,这就要求分段插值函数具有连续的二阶导数,在这一节中介绍的 3 次样条插值函数就能满足上述要求
样条本来是绘图员们用来画光滑曲线的一种细木条(或细金属条)在画曲线时要求曲线过一些已知点,且使木条强制性很小,3 次样条就是从这个模型中抽象出来的。
clc;
clear;
% 定义数据点
x = [0 1 2 3 4];
y = [0 1 4 9 16];
% 定义插值点
xi = 1.5;
% 进行分段样条插值
yi = interp1(x, y, xi, 'spline');
% 输出结果
fprintf('在 x=%g 处进行三次样条插值,得到 y=%g\n', xi, yi);