插值與函數逼近

拉格朗日插值(Lagrange interpolation)

/ luh-GRAHNZH /

想像你要一份食譜,能把資料值直接調配成插值多項式,完全不必解任何方程組。拉格朗日插值正是如此:它把穿過你那些點的唯一多項式寫成 y 值的加權混合,而每個權重都是一個特製的小多項式,巧妙地讓各點完全對齊。

訣竅在於拉格朗日基底多項式 L_i(x):對第 i 個資料點,它被設計成在 x_i 處等於 1、在其他每個節點 x_j 處等於 0。做法是把所有 j 不等於 i 的因式 (x - x_j) 相乘,再除以同一乘積在 x_i 代入後的值,使它在 x_i 正規化為 1。於是插值多項式就是 p(x) = y_0 L_0(x) + y_1 L_1(x) + ... + y_n L_n(x)。代入 x_k:每個 i 不等於 k 的 L_i 都消失,只有 L_k 存活且等於 1,所以 p(x_k) = y_k——它自動穿過每一個點。兩點時這就重現穿過它們的直線;三點時則是拋物線。

拉格朗日形式在理論與證明上很優美,因為答案被明確寫出,不需任何線性代數。它誠實的缺點是實務上的:樸素形式下,每個 x 計算 p(x) 要花 O(n^2) 的工作量,而且「加入」一個新資料點會迫使你從頭重建每一個基底多項式(不像牛頓形式只需附加一項)。它在數值上也可能很敏感。這些缺陷可由改寫成重心拉格朗日公式來修正,它保留了優雅,卻又快速又穩定。

穿過 (0, 1)、(1, 3)、(2, 2):L_0 = (x-1)(x-2)/((0-1)(0-2))、L_1 = (x-0)(x-2)/((1-0)(1-2))、L_2 = (x-0)(x-1)/((2-0)(2-1))。則 p(x) = 1*L_0 + 3*L_1 + 2*L_2。在 x = 1 處,L_0 = L_2 = 0 且 L_1 = 1,所以 p(1) = 3。

每個基底多項式在自己的節點為 1,在其他所有節點為 0。

拉格朗日形式與牛頓形式給出「同一個」多項式——它們不是不同的插值結果,只是不同的記帳方式。節點固定時選拉格朗日(重心式),預期逐步加點時選牛頓。

又稱
Lagrange formLagrange basis polynomials拉格朗日形式拉格朗日基底多項式