三次样条插值

引入

在设计室,为了保证设计的规范要求,必须使得特定的函数具有连续的 n 阶导数,保证曲线的曲率变化的连续。常用的通常包括线性、二次和三次样条插值函数,它们被广泛地应该用于观测数据的处理和船舶、汽车、飞机的外形设计。

定义

函数

给定节点,及其上的函数值,如果函数 S ( x ) 满足:

(1) S ( x ) 是一个分段的三次多项式且 S ( x ) = yk;

(2).

则称 S ( x ) 是区间 [ a, b ] 上的三次样条插值函数

边界条件

正常计算的过程中共有 4n 个待定系数需要确定,而一般能获取 4n - 2 的条件。为了获得唯一的三次样条函数,通常会在区间 [ a, b ] 的端点 x0 = a ,xn = b 上各加一个条件,称为边界条件。常用的边界条件有:

(1)

(2)

(3)假设 f ( x ) 是以 b - a 为周期的周期函数,这时要求

这样确定的 S ( x ) 为周期样条函数

代码实现

这里我们采用了已经封装好的 scipy.interpolate 库中的 CubicSpline 直接实现

在 Python 的 scipy.interpolate.CubicSpline 中,无法直接设置二阶导数作为边界条件,所以我们把相应的实现方法依照该库改成了:自然边界条件、周期边界条件、固定边界条件三种,请读者注意区分。

Last updated