參考自:知乎 馬同學,他的微信公衆號: 看圖學數學,公衆號:matongxue314
已知(x1,y1) (x2,y2) (x3,y3)三個點,分別求取兩種插值公式
1.牛頓插值公式
過前兩個點的函數f
f = y1 + a1*(x - x1) 將(x2,y2)帶入得 a1=y1+(y2-y1)/(x2-x1)*(x-x1)
過三個點的函數f'
f' = y1 + a1*(x - x1) + a2*(x - x1)*(x - x2) 將(x3,y3)帶入得 [(y3-y2)/(x3-x2) + (y2-y1)/(x2-x1)] / (x3-x1)
如何得出a2 ?
y3 = y1 + a1*(x3 - x1) + a2*(x3 - x1)*(x3 - x2) 式1
將 x3-x1 = x3-x2 + x2-x1 帶入式1得 a2
2. 拉格朗日插值公式
過三個點的函數f
f = y1*f1(x) + y2*f2(x) + y3*f3(x)
當 x=x1 時 f(x1) = y1 即 f1(x1)爲1,f2(x1)爲0,f3(x1)爲0
當 x=x2 時 f(x2) = y2 即 f1(x2)爲0,f2(x2)爲1,f3(x2)爲0
當 x=x3 時 f(x3) = y3 即 f1(x3)爲0,f2(x3)爲0,f3(x3)爲1
即要得到這樣的 fi(xj) 使得 i != j時 fi爲0,i = j時 fi爲1
取爲:
f1 = [(x-x2)(x-x3)] / [(x1-x2)(x1-x3)]
f2 = [(x-x1)(x-x3)] / [(x2-x1)(x2-x3)]
f3 = [(x-x1)(x-x2)] / [(x3-x1)(x3-x2)]
3. 實例
取函數 y=3x+x**2+1 上的三點 (0,1) (2,11) (3,19)
牛頓插值法,得a1=5 a2=1
f = 1 + 5*(x-0) + (x-0)*(x-2) = x**2 + 3x + 1
拉格朗日插值法,得
f1=[(x-2)(x-3)] / [(0-2)(0-3)]
f2=[(x-0)(x-3)] / [(2-0)(2-3)]
f3=[(x-0)(x-2)] / [(3-0)(3-2)]
f = f1*1 + f2*11 + f3*19 = x**2 + 3x + 1
可見,結果一樣,但是拉格朗日插值法比較複雜。關於兩者的用途,精度還需討論。