埃爾米特插值(Hermite interpolation)
/ air-MEET /
普通插值在每個點只匹配函數的「高度」。但你往往知道更多——在每個樣本上你也知道「斜率」(導數)。埃爾米特插值建出一個同時匹配節點上的值「與」導數的多項式,使曲線不僅穿過每個點,還以恰好正確的方向離開它。
在 n + 1 個節點上各匹配值與一階導數,給出 2(n + 1) 個條件,所以插值多項式的次數至多為 2n + 1。有個漂亮的計算法:把牛頓差商表延伸,將每個節點列「兩次」(一張「合流」表),並把重複節點的差商定義為導數 f'(x_i)——表的其餘部分自行建立,埃爾米特多項式便由此而出。經典的小例子是單一區間上的「三次」埃爾米特:給定兩端點及其值與斜率 (y_0, m_0) 與 (y_1, m_1),唯一一個三次式匹配全部四項,可用三次埃爾米特基底函數(在兩端的值與斜率為 1 或 0 的「h」函數)漂亮地寫出。把這樣的三次式一段段串起來,每區間一個,就得到一條埃爾米特「樣條」——平滑(C^1)且完全「局部」,因為每段只需自己兩個端點的資料。
埃爾米特插值在圖學與動畫中無所不在:一個關鍵影格指定一個位置「與」一個速度,而其間的運動就是一條三次埃爾米特(或等價的 Bezier/Catmull-Rom)曲線。當導數已知或可估計時,它是自然的工具,也是保形方案的基礎:藉巧妙地選擇斜率 m_i(例如用單調的 PCHIP 規則),你得到一個從不過衝、且在資料單調處保持單調的插值——這是三次樣條無法承諾的。相對於完整三次樣條的誠實取捨:埃爾米特樣條只有 C^1(匹配斜率但不匹配曲率),所以可能有可見的曲率跳變,而全域三次樣條是 C^2、更平滑,但把所有資料耦合在一起,且可能過衝。
在 [0, 1] 上匹配 x = 0 處值 0、斜率 1,x = 1 處值 1、斜率 0。唯一的三次埃爾米特是 p(x) = x + x^2 - x^3(驗證:p(0) = 0、p'(0) = 1 + 0 - 0 = 1、p(1) = 1、p'(1) = 1 + 2 - 3 = 0)。它以斜率 1 開始上升,平緩地抵達終點。
同時匹配值「與」斜率:曲線以正確方向離開每個點。
埃爾米特樣條只有 C^1(斜率匹配,曲率未必),所以可能出現 C^2 三次樣條所避免的曲率跳變。它的優勢是局部性與形狀控制——巧妙的斜率選擇(PCHIP)使它保持單調、無過衝。