插值與函數逼近

三次樣條(cubic spline)

製圖師從前用一條細而可彎的木條或金屬條——「樣條」——穿過點畫出平滑曲線,並在資料點上用重物壓住。這條彈片自然地安頓成最平滑的形狀。三次樣條是那條彈片的數學版本:一條由三次多項式片段組成的曲線,接得如此平滑,使接縫隱於無形。

在每一對相鄰節點之間,你用一個不同的三次多項式。接著在每個內部節點以三個條件把它們縫合:片段必須「相接」(值連續)、有相同的「斜率」(一階導數連續)、以及相同的「曲率」(二階導數連續)。同時匹配值、斜率「與」曲率,正是使三次樣條在肉眼看來完美平滑的原因,不像分段線性擬合的轉角。這些匹配條件加上穿過所有資料,構成一個有兩個剩餘自由度的方程組,由端點條件固定:「自然」樣條把兩端的二階導數設為零(它伸直,像木條的自由端);「夾持」樣條則把每端的斜率固定為指定值。整個方程組化約為以未知二階導數為變數的「三對角」線性方程組,用 Thomas 演算法以 O(n) 時間求解——即使點很多也快。

三次樣條是科學與圖學中預設的平滑插值,背後有個深刻的理由:在「所有」穿過資料的二次可微函數中,自然三次樣條是使總彎曲能量((f'')^2 的積分)最小化者——它可證明是「最不搖擺」的插值,正是放鬆木條的精確數學迴響。關鍵在於,因為每一段都是低次且局部的,樣條「不」受龍格現象之害,也絕不會隨加點而爆炸。誠實的提醒:樣條在差異很大的點之間仍可能略微過衝(它不保證單調),若你的資料本應單調或受形狀約束,你可能會想改用單調的(埃爾米特)變體。

用自然三次樣條穿過 (0, 0)、(1, 1)、(2, 0)、(3, 1)。它產生一條平滑的波狀曲線命中全部四點;二階導數在 x = 0 與 x = 3 被迫為零,而值、斜率與曲率在內部結點 x = 1 與 x = 2 全部連續匹配——任何地方都看不到轉角。

三次片段在值、斜率與曲率上匹配:平滑得看不見接縫。

「自然」樣條使彎曲能量最小,但其零曲率端點條件是人為的,會在兩端附近降低精度;若你知道真實的端點斜率,「夾持」樣條更準確。樣條也不保證單調——它們可能過衝。

又称
cubic spline interpolationnatural splineclamped spline三次雲形線三次樣條插值