定理: 四阶(三次) B-spline 插值 的自然边界条件可以简化成如下方程组:
$$ \frac{\textbf{d}_{2}-\textbf{d}_{1}}{t_{2}-t_{0}} = \frac{\textbf{d}_{1}-\textbf{d}_{0}}{t_{1}-t_{0}} \\ \frac{\textbf{d}_{n+2}-\textbf{d}_{n+1}}{t_{n}-t_{n-1}} = \frac{\textbf{d}_{n+1}-\textbf{d}_{n}}{t_{n}-t_{n-2}} $$
证明:$N_{i,k}(t)$ 参考老师 ppt 的定义,$k$ 是阶数。它的导数为
$$ N'_{i,k}(t) = \frac{k}{t_{i+k}-t_i}N_{i,k-1}(t) - \frac{k}{t_{i+k+1}-t_{i+1}}N_{i+1,k-1}(t) $$
证明见 Reference1 ,使用了数学归纳法。故 B-spline 的一阶导数为:
$$ x(t) = \sum_{i=0}^n N_{i,k}(t) \textbf{d}_i \\ x'(t) = \sum_{i=0}^{n-1} N_{i+1,k-1}(t) \textbf{Q}_i \\ \textbf{Q}_i = \frac{k}{t_{i+k+1}-t_{i+1}}(\textbf{d}_{i+1}-\textbf{d}_{i}) $$
推导见 Reference2 。然后可以写出二阶导数的形式如下。
$$ x''(t) = \sum_{i=0}^{n-2} N_{i+2,k-2}(t) \textbf{R}_i \\ \textbf{R}_i = \frac{k-1}{t_{i+k+1}-t_{i+2}}(\textbf{Q}_{i+2}-\textbf{Q}_{i+1}) $$
在 B-spline 插值问题中,$k = 4$。指标从 -3 开始。
$$ x''(t) = \sum_{i=-3}^{n-3} N_{i+2,2}(t) \textbf{R}_i \\ $$
边界条件 $x''(t_0)=0$ 写成如下形式。
$$ N_{-1,2}(t_0)\textbf{R}_{-3}+N_{0,2}(t_0)\textbf{R}_{-2}+N_{1,2}(t_0)\textbf{R}_{-1}=0 $$
根据重结点定义,$\textbf{R}_{-3}=\textbf{R}_{-2}=0$ ,边界条件等价于
$$ \textbf{Q}_{1}=\textbf{Q}_{0} \\ $$
等价于
$$ \frac{\textbf{d}_{2}-\textbf{d}_{1}}{t_{2}-t_{-2}} = \frac{\textbf{d}_{1}-\textbf{d}_{0}}{t_{1}-t_{-3}} $$
由重结点定义,$t_{-2} = t_{-3} = t_{0}$ ,得到所需的边界条件。
在 $t_n$ 处的自然边界条件也能用同样的方法算出。