matlab实现分段插值(线性插值、3次Hermite插值,3次样条插值)

1.分段线性插值

        分段线性插值(Piecewise Linear Interpolation)是一种用于逼近数据的插值方法,它将数据集分段连接成线性函数。在该方法中,对于每个数据区间,根据该区间端点之间的直线来定义插值多项式,实现局部逼近。

p(x)=y_i+\left(y_{i+1}-y_i\right) \frac{x-x_i}{x_{i+1}-x_i}

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次样条插值):

S_i(x)=a_i+b_i\left(x-x_i\right)+c_i\left(x-x_i\right)^2+d_i\left(x-x_i\right)^3, \quad x \in\left[x_i, x_{i+1}\right]

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 次样条就是从这个模型中抽象出来的。

S_i(x)=a_i+b_i\left(x-x_i\right)+c_i\left(x-x_i\right)^2+d_i\left(x-x_i\right)^3, \quad x \in\left[x_i, x_{i+1}\right]

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);

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安心不心安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值