拟三次Hermite样条插值:探究步长对光滑性的影响
最编程
2024-01-18 09:22:35
...
Hermite三次多项式插值2点,在2点处插值导数。确切地说,让我们得到点
p_0, p_1
和d_0, d_1
的导数(切线)。然后,我们需要一个三次多项式p(t) = a_0 + a_1 t + a_2 t^2 + a_3 t^3
,它插值点和导数:p(0) = p_0,\,\, p(1) = p_1,\,\, p'(0) = d_0,\,\, p'(1) = d_1.
,我们可以取p(t)
关于t
的导数,从而得到p'(t) = a_1 + 2a_2 t + 3a_3 t^2
。我们可以很容易地计算出两个系数:p(0) = a_0 = p_0
和p'(0) = a_1 = d_0
。对于剩下的两个方程,我们有p(1) = p_0 + d_0 + a_2 + a_3 = p_1,\quad p'(1) = d_0 + 2a_2 + 3a_3 = d_1.
解这个系统,我们得到a_3 = 2(p_0-p_1) + d_0 + d_1, \quad a_2 = 3(p_1 - p_0)-2d_0 - d_1.
,如果你先执行向量矩阵乘法,你可以用下面的系统p(t) = \begin{bmatrix} 1 & t & t^2 & t^3 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -3 & 3 & -2 & -1 \\ 2& -2 & 1 & 1\end{bmatrix} \begin{bmatrix} p_0 \\ p_1 \\ d_0 \\ d_1 \end{bmatrix}.
重写解,然后得到Hermite基函数:p(t) = (1-3t^2+2t^3)p_0 + (3t^2-2t^3)p_1 + (t-2t^2+t^3)d_0 + (t^3-t^2)d_1.
,你现在可以用光滑步长函数来识别p_1
前面的基函数,p_0
前面的基函数是一个负光滑步长。如果要另外设置d_0=d_1=0
,那么这是您唯一需要的函数。Thus当您做 p(t) = (1-S(t)) p_0 + S(t) p_1
you时,执行三次多项式Hermite插值,导数设置为零。 上一篇: 使用样条插值进行数值计算——数值计算中的插值法(6)
下一篇: 对比Scipy与Numpy的插值方法