Dla $n+1$ punktów możemy zdefiniować $n+1$ wielomianów:
$$ L_i(x)=\prod_{j = 0 , j\ne i}^n \frac{x-x_j}{x_i-x_j}\ \ \ \ \ \quad i\in {0,1\cdots ,n}$$
Na przykład dla trzech punktów $x_i, \; i=0,1,2$ mamy wielomiany:
$$ L_0(x)=\frac{(x-x_1)(x-x_2)}{(x_0-x_1)(x_0-x_2)} $$
$$ L_1(x)=\frac{(x-x_0)(x-x_2)}{(x_1-x_0)(x_1-x_2)} $$
$$ L_2(x)=\frac{(x-x_0)(x-x_1)}{(x_2-x_0)(x_2-x_1)} $$
Mają one następujące właściwości:
Z powyższego wynika, że mając pary punktów $(x_i,y_i)\; i=0,\dots,n$, możemy utworzyć sumę:
$$W(x)=y_0\cdot L_0(x) + y_1\cdot L_1(x) + y_2\cdot L_2(x) + \cdots + y_n\cdot L_n(x),$$
która będzie wielomianem stopnia $n$. $W(x)$ będzie przyjmował wartości $y_i$ w punktach $x_i$:
$$ W(x_i)=y_i\; i=0,\dots,n$$.
Wynika z tego, że $W(x)$ będzie wielomianem spełniającym zagadnienie interpolacyjne Lagrange'a. Baza $L_i$ jest zwana bazą Lagrange'a.
$$a_{ij} = L_j(x_i)$$
In [19]:
var('x')
Out[19]:
In [25]:
x_lst = [1.2,2.1,3.1]
y_lst = [2.2,.1,3.]
n = len(x_lst)
In [21]:
[(x-x_lst[i]) for i in range(n) if i != 0 ]
Out[21]:
In [22]:
[(x_lst[0]-x_lst[i]) for i in range(n) if i != 0 ]
Out[22]:
In [23]:
prod([(x-x_lst[i]) for i in range(n) if i != 0 ])
Out[23]:
In [24]:
L=[]
L.append( prod([(x-x_lst[i]) for i in range(n) if i != 0 ]) )
L
Out[24]:
In [ ]: