插值法
問題背景:
已知y=f(x)的若干個離散點y1=f(x1)、y2=f(x2)、y3=f(x3)......,如何求f(x)
思想:用這一系列的離散點去造出一個P(x),使得P(x)滿足:P(x1)=f(x1)、P(x2)=f(x2)、P(x3)=f(x3)......
一些概念:
P(x)稱爲插值函數,離散點x1、x2、x3.......稱爲節點。若f(x)爲一個多項式(次數不大於n)則稱其爲插值多項式。
拉格朗日插值:
線性插值
- 問題:
已知x1,x2,x3......和y1,y2,y3......,其中yi=f(xi),i=1、2、3......,求插值函數。先考慮兩點的問題。由兩點公式,容易得出:L0(x)=x0−x1x−x1y0+x1−x0x−x0y1
一些啓發:
令l0(x)=x0−x1x−x1y0、l1(x)=x1−x0x−x0y1得到下面的啓發:
- 我們發現,L(x)實際上是li(x)的線性組合,其線性系數是對應的yi
- li(x)滿足:li(x)={1,0,x=xix=xi
拋物線插值
受到上面的啓發,假設我們使用三個點來進行插值:
由上述的啓發1,有:
L1(x)=y0l0(x)+y1l1(x)+y2l2(x)
由上述的啓發2,有:
li(x)滿足:li(x)={1,0,x=xix=xi
故,有:
l0(x):l0(x)=1,l1(x)=0,l2(x)=0,故有l0(x)=c0(x−x1)(x−x2)l1(x):l0(x)=0,l1(x)=1,l2(x)=0,故有l1(x)=c1(x−x0)(x−x2)l2(x):l0(x)=0,l1(x)=0,l2(x)=1,故有l2(x)=c1(x−x0)(x−x1)
待定係數ci,求出ci,
得到:
L1(x)=y0(x0−x1)(x0−x2)(x−x1)(x−x2)+y1(x1−x0)(x1−x2)(x−x0)(x−x2)+y2(x2−x0)(x2−x1)(x−x0)(x−x1)
拉格朗日一般插值:
現在插入n+1個點:x0,x1,x2.......,xn,現在利用剛才的方法便可以得到一個一般插值多項式:
Ln=∑i=0n∏j=0,j=inxi−xjx−xjyi
令:ωn+1(x)=(x−x0)(x−x1)......(x−xn)
故有
Ln=∑i=0nωn+1(xi)(ωn+1′(i))ωn+1(x)
可以看出來,這個實際上是一個二次循環。
拉格朗日插值多項式的餘項(誤差)
一個問題:
有時候f(n+1)(x)的最大值也不好估計,所以
這樣就給出了一個在函數高接到不好估的時候,可以得出大體值。