Baza Lagrange'a i wzór interpolacyjny Langrange'a

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:

  1. wielomian $L_i(x)=0$ dla $x=x_j,\; i \neq j$
  2. wielomian $L_i(x)=1$ dla $x=x_i$

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)$$

Zaimplementować konstrukcję bazy i wielomianu Lagrange'a


In [19]:
var('x')


Out[19]:
x

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]:
[x - 2.10000000000000, x - 3.10000000000000]

In [22]:
[(x_lst[0]-x_lst[i]) for i in range(n) if i != 0 ]


Out[22]:
[-0.900000000000000, -1.90000000000000]

In [23]:
prod([(x-x_lst[i]) for i in range(n) if i != 0 ])


Out[23]:
(x - 2.10000000000000)*(x - 3.10000000000000)

In [24]:
L=[]
L.append( prod([(x-x_lst[i]) for i in range(n) if i != 0 ]) ) 
L


Out[24]:
[(x - 2.10000000000000)*(x - 3.10000000000000)]

In [ ]: