参考自:知乎 马同学,他的微信公众号: 看图学数学,公众号: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
可见,结果一样,但是拉格朗日插值法比较复杂。关于两者的用途,精度还需讨论。