范德蒙基底的病態(ill-conditioned Vandermonde basis)
/ VAN-der-mond /
當你用最顯然的基底——單純的冪次 1, x, x^2, x^3 等——去擬合多項式時,你建出一個叫范德蒙矩陣的設計矩陣,其各列為 (1, x_i, x_i^2, ...)。它看似無害,卻藏著陷阱:隨著多項式次數攀升,這矩陣會變得極度病態。各行幾乎平行,最小平方問題變得異常敏感,你算出的係數可能差了好幾個數量級,即便擬合曲線看起來仍然沒問題。
為何各行會變得平行?在典型區間上,函數 x^k 與 x^(k+1) 隨 k 增長愈來愈相像——它們都以大致相同的方式向上彎——所以范德蒙矩陣的各行指向幾乎相同的方向。范德蒙矩陣的條件數隨次數「指數」增長(在 [0,1] 上大約每加一次就翻倍)。條件數達到 10^16 時,你雙精度的 16 位數字已全部失去,所以約 20 次的單項式擬合,其係數純屬雜訊。這是問題本身的錯,烙印在所選的基底裡——不是求解器的錯。
解方是換基底,而非換求解器。用正交多項式(切比雪夫或勒讓德),其各行依構造近乎垂直;或者至少在建構冪次前把資料置中與縮放(把 x 換成 (x - 平均)/幅度)——這一個便宜的步驟就能挽回好幾個位數的準確度。重心拉格朗日形式則在插值時完全繞過范德蒙矩陣。教訓可推廣:同一個數學擬合,純粹依你如何參數化就可能良態或病態,所以選個好基底是數值建模中真切而關鍵的一環。
在 [0, 1] 上用單項式基底擬合 15 次多項式,得到的范德蒙矩陣條件數約在 10^10 或更糟;算出的係數可能毫無意義。完全相同的資料用切比雪夫基底擬合,條件數是一階的(order one),給出可信賴的係數。
同樣的擬合、不同的基底:單項式呈指數病態,切比雪夫則溫馴。
病態的范德蒙擬合仍可能畫出看似正確的曲線,而其係數卻是垃圾——條件數是參數化的性質,與圖看起來是否合理無關。把 x 置中與縮放,或改用正交多項式基底,即可修正。