插值法(1):拉格朗日插值

插值法

問題背景:

已知y=f(x)y = f(x)的若干個離散點y1=f(x1)y2=f(x2)y3=f(x3)......y_1=f(x_1)、y_2=f(x_2)、y_3=f(x_3)......,如何求f(x)f(x)
思想:用這一系列的離散點去造出一個P(x)使P(x)滿P(x1)=f(x1)P(x2)=f(x2)P(x3)=f(x3)......P(x),使得P(x)滿足:P(x_1)=f(x_1)、P(x_2)=f(x_2)、P(x_3)=f(x_3)......
一些概念:
P(x)x1x2x3.......P(x)稱爲插值函數,離散點x_1、x_2、x_3.......稱爲節點。若f(x)nf(x)爲一個多項式(次數不大於n)則稱其爲插值多項式。

拉格朗日插值:

線性插值

  • 問題
    x1,x2,x3......y1,y2,y3......,yi=f(xi),i=123......,L0(x)=xx1x0x1y0+xx0x1x0y1已知x_1,x_2,x_3......和y_1,y_2,y_3......,其中y_i = f(x_i),i=1、2、3......,\\求插值函數。先考慮兩點的問題。 由兩點公式,容易得出:\\ L_0(x)=\frac {x-x_1} {x_0-x_1}y_0+ \frac {x-x_0} {x_1-x_0}y_1\\
    一些啓發
    l0(x)=xx1x0x1y0l1(x)=xx0x1x0y1令l_0(x)= \frac {x-x_1} {x_0-x_1}y_0、l_1(x)= \frac {x-x_0} {x_1-x_0}y_1得到下面的啓發:
  1. L(x)li(x)yi我們發現,L(x)實際上是l_i(x) 的線性組合,其線性係數是對應的y_i
  2. li(x)滿li(x)={1,x=xi0,xxil_i(x)滿足:\\l_i(x) = \left\{\begin{matrix} 1,& x=x_i\\ 0,&x\neq x_i \end{matrix}\right.

拋物線插值

受到上面的啓發,假設我們使用三個點來進行插值:
由上述的啓發1,有:
L1(x)=y0l0(x)+y1l1(x)+y2l2(x)L_1(x) = y_0l_0(x)+y_1l_1(x)+y_2l_2(x)
由上述的啓發2,有:
li(x)滿li(x)={1,x=xi0,xxil_i(x)滿足:\\l_i(x) = \left\{\begin{matrix} 1,& x=x_i\\ 0,&x\neq x_i \end{matrix}\right.
故,有:
l0(x):l0(x)=1,l1(x)=0,l2(x)=0,l0(x)=c0(xx1)(xx2)l1(x):l0(x)=0,l1(x)=1,l2(x)=0,l1(x)=c1(xx0)(xx2)l2(x):l0(x)=0,l1(x)=0,l2(x)=1,l2(x)=c1(xx0)(xx1) l_0(x): l_0(x)=1,l_1(x)=0,l_2(x)=0,故有l_0(x)=c_0(x-x_1)(x-x_2) \\ l_1(x): l_0(x)=0,l_1(x)=1,l_2(x)=0,故有l_1(x)=c_1(x-x_0)(x-x_2) \\ l_2(x): l_0(x)=0,l_1(x)=0,l_2(x)=1,故有l_2(x)=c_1(x-x_0)(x-x_1)
待定係數cic_i,求出cic_i,
得到:
L1(x)=y0(xx1)(xx2)(x0x1)(x0x2)+y1(xx0)(xx2)(x1x0)(x1x2)+y2(xx0)(xx1)(x2x0)(x2x1)L_1(x) = y_0\frac {(x-x_1)(x-x_2)} {(x_0-x_1)(x_0-x_2)}+ y_1\frac {(x-x_0)(x-x_2)} {(x_1-x_0)(x_1-x_2)}+ y_2\frac {(x-x_0)(x-x_1)} {(x_2-x_0)(x_2-x_1)}

拉格朗日一般插值:

n+1x0,x1,x2.......,xn,便現在插入n+1個點:x_0,x_1,x_2 .......,x_n,現在利用剛纔的方法便可以得到一個一般插值多項式:
Ln=i=0nj=0,jinxxjxixjyiL_n = \sum_{i = 0}^{n} \prod_{j = 0,j\neq i}^{n} \frac {x - x_j}{x_i-x_j}y_i
令:ωn+1(x)=(xx0)(xx1)......(xxn)\omega_{n+1}(x) = (x-x_0)(x-x_1)......(x-x_n)
故有
Ln=i=0nωn+1(x)ωn+1(xi)(ωn+1(i))L_n = \sum_{i = 0}^{n}\frac {\omega_{n+1}(x)} {\omega_{n+1}(x_i)(\omega_{n+1}'(i))}

可以看出來,這個實際上是一個二次循環。

拉格朗日插值多項式的餘項(誤差)

在這裏插入圖片描述

一個問題:

有時候f(n+1)(x)f^{(n+1)}(x)的最大值也不好估計,所以
在這裏插入圖片描述
在這裏插入圖片描述
這樣就給出了一個在函數高接到不好估的時候,可以得出大體值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章