B-spline 插值 自然边界条件证明

定理: 四阶(三次) 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+1}-\textbf{Q}_{i}) $$

在 B-spline 插值问题中,$k = 4$。指标从 -3 开始。求和范围和 $\textbf{d}_{i}$ 的指标需要相应改变,其他不需要。

$$ x(t) = \sum_{i=-3}^{n-1} N_{i,4}(t) \textbf{d}_{i+3} \\ x'(t) = \sum_{i=-3}^{n-2} N_{i+1,3}(t) \textbf{Q}_{i} \\ x''(t) = \sum_{i=-3}^{n-3} N_{i+2,2}(t) \textbf{R}_{i} \\ $$

因为 $N_{i,2}(t)$ 只在 $(t_i,t_{i+2})$ 区间非零,边界条件 $x''(t_0)=0$ 等价于如下形式。

$$ N_{-1,2}(t_0)\textbf{R}_{-3}=0 $$

根据 $\textbf{R}_{i}$ 的表达式,边界条件等价于

$$ \textbf{Q}_{-2}=\textbf{Q}_{-3} \\ $$

等价于

$$ \frac{\textbf{d}_{2}-\textbf{d}_{1}}{t_{3}-t_{-1}} = \frac{\textbf{d}_{1}-\textbf{d}_{0}}{t_{2}-t_{-2}} $$

由重结点定义,$t_{-1} = t_{-2} = t_{0}$ ,得到所需的边界条件。

在 $t_n$ 处的自然边界条件也能用同样的方法算出。