欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

拟三次Hermite样条插值:探究步长对光滑性的影响

最编程 2024-01-18 09:22:35
...
Hermite三次多项式插值2点,在2点处插值导数。确切地说,让我们得到点p_0, p_1d_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_0p'(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插值,导数设置为零。