Polinomul de interpolare Lagrange

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare
Polinomul de interpolare Lagrange pentru 4 puncte: ((−9, 5), (−4, 2), (−1, −2), (7, 9)), L(x), care este suma polinoamelor de bază scalate y0l0(x), y1l1(x), y2l2(x) and y3l3(x). Polinomul de interpolare trece prin toate cele 4 puncte, iar fiecare polinom scalat de bază trece prin punctul său de control respectiv, în cazul în care este 0, unde x corespunde celorlalte 3 puncte. Codul Matlab pentru acest exemplu este disponibil în [1].

Definiție[modificare | modificare sursă]

Fie un set de k + 1 puncte de date, diferite între ele:

(x_0, y_0),\ldots,(x_j, y_j),\ldots,(x_k, y_k)

Polinomul de interpolare Lagrange este combinația liniară

L(x) := \sum_{j=0}^{k} y_j \ell_j(x)

de polinoame Lagrange de bază

\ell_j(x) := \prod_{\begin{smallmatrix}0\le m\le k\\ m\neq j\end{smallmatrix}} \frac{x-x_m}{x_j-x_m} = \frac{(x-x_0)}{(x_j-x_0)} \cdots \frac{(x-x_{j-1})}{(x_j-x_{j-1})} \frac{(x-x_{j+1})}{(x_j-x_{j+1})} \cdots \frac{(x-x_k)}{(x_j-x_k)}.

Deși numit după Joseph Louis Lagrange în 1795, a fost descoperit pentru prima data în 1779 de către Edward Waring și a fost publicat în 1783 de Leonhard Euler.

Având în vedere ipoteza inițială că  x_i sunt diferite între ele, această expresie este întotdeauna bine-definită.

Se verifică imediat că polinomul interpolează corect funcția, adică:  P(x_i) = y_i \qquad i=0,\ldots,k, pentru orice i=1..n.

Exemple[modificare | modificare sursă]

1[modificare | modificare sursă]

Polinomul de interpolare al funcţiei tangentă

Să găsim o formulă de interpolare pentru funcția f(x) = tan(x) dată de următoarele seturi de valori:


\begin{align}
x_0 & = -1.5 & & & & & f(x_0) & = -14.1014 \\
x_1 & = -0.75 & & & & & f(x_1) & = -0.931596 \\
x_2 & = 0 & & & & & f(x_2) & = 0 \\
x_3 & = 0.75 & & & & & f(x_3) & = 0.931596 \\
x_4 & = 1.5 & & & & & f(x_4) & = 14.1014.
\end{align}

Polinoamele de bază sunt:

\ell_0(x)={x - x_1 \over x_0 - x_1}\cdot{x - x_2 \over x_0 - x_2}\cdot{x - x_3 \over x_0 - x_3}\cdot{x - x_4 \over x_0 - x_4}
             ={1\over 243} x (2x-3)(4x-3)(4x+3)
\ell_1(x) = {x - x_0 \over x_1 - x_0}\cdot{x - x_2 \over x_1 - x_2}\cdot{x - x_3 \over x_1 - x_3}\cdot{x - x_4 \over x_1 - x_4}
             = {} -{8\over 243} x (2x-3)(2x+3)(4x-3)
\ell_2(x)={x - x_0 \over x_2 - x_0}\cdot{x - x_1 \over x_2 - x_1}\cdot{x - x_3 \over x_2 - x_3}\cdot{x - x_4 \over x_2 - x_4}
             ={3\over 243} (2x+3)(4x+3)(4x-3)(2x-3)
\ell_3(x)={x - x_0 \over x_3 - x_0}\cdot{x - x_1 \over x_3 - x_1}\cdot{x - x_2 \over x_3 - x_2}\cdot{x - x_4 \over x_3 - x_4}
             =-{8\over 243} x (2x-3)(2x+3)(4x+3)
\ell_4(x)={x - x_0 \over x_4 - x_0}\cdot{x - x_1 \over x_4 - x_1}\cdot{x - x_2 \over x_4 - x_2}\cdot{x - x_3 \over x_4 - x_3}
             ={1\over 243} x (2x+3)(4x-3)(4x+3).

Deci polinomul de interpolare este:

 \begin{align}L(x) &= {1\over 243}\Big(f(x_0)x (2x-3)(4x-3)(4x+3) \\
& {} \qquad {} - 8f(x_1)x (2x-3)(2x+3)(4x-3) \\
& {} \qquad {} + 3f(x_2)(2x+3)(4x+3)(4x-3)(2x-3) \\
& {} \qquad {} - 8f(x_3)x (2x-3)(2x+3)(4x+3) \\
& {} \qquad {} + f(x_4)x (2x+3)(4x-3)(4x+3)\Big)\\
& = 4.834848x^3 - 1.477474x.
\end{align}

2[modificare | modificare sursă]

Să interpolăm funcția f(x) = x2 pe domeniul 1 ? x ? 3, prin următoarele 3 puncte:


\begin{align}
x_0 & = 1 & & & f(x_0) & = 1 \\
x_1 & = 2 & & & f(x_1) & = 4 \\
x_2 & = 3 & & & f(x_2) & =9.
\end{align}

Polinomul este:

 \begin{align}
L(x) &= {1}\cdot{x - 2 \over 1 - 2}\cdot{x - 3 \over 1 - 3}+{4}\cdot{x - 1 \over 2 - 1}\cdot{x - 3 \over 2 - 3}+{9}\cdot{x - 1 \over 3 - 1}\cdot{x - 2 \over 3 - 2} \\[10pt]
&= x^2.
\end{align}

3[modificare | modificare sursă]

Să interpolăm funcția f(x) = x3 pe domeniul 1 < x < 3, prin punctele:

x_0=1\, f(x_0)=1\,
x_1=2\, f(x_1)=8\,
x_2=3\, f(x_2)=27\,

Polinomul este:

 \begin{align}
L(x) &= {1}\cdot{x - 2 \over 1 - 2}\cdot{x - 3 \over 1 - 3}+{8}\cdot{x - 1 \over 2 - 1}\cdot{x - 3 \over 2 - 3}+{27}\cdot{x - 1 \over 3 - 1}\cdot{x - 2 \over 3 - 2} \\[8pt]
&=  6x^2 - 11x + 6.
\end{align}

Interpolarea baricentrică[modificare | modificare sursă]

Exemplu de divergență al polinomului de interpolare Lagrange

Forma Lagrange de interpolare polinomului arată caracterul liniar al polinomului de interpolare și unicitatea acestui polinom. De aceea, este de preferat în probe și argumente teoretice. Dar, după cum se poate observa din construcții, de fiecare dată când un nod xk se modifică, toate polinoame Lagrange de bază trebuie să fie recalculate. O formă mai bună a polinomului de interpolare în practică este forma baricentrică de interpolare Lagrange formula Newton a polinomului.

Utilizând

\ell(x) = (x - x_0)(x - x_1) \cdots (x - x_k)

putem rescrie polinoamele de bază Lagrange ca

\ell_j(x) = \frac{\ell(x)}{x-x_j} \frac{1}{\prod_{i=0,i \neq j}^k(x_j-x_i)}

sau, prin definirea ponderilor baricentrice [2]

w_j = \frac{1}{\prod_{i=0,i \neq j}^k(x_j-x_i)}

putem scrie pur și simplu

\ell_j(x) = \ell(x)\frac{w_j}{x-x_j}

care este denumit în mod obișnuit ca prima formă a formulei de interpolare baricentrică.

Avantajul este că această reprezentare polinomul de interpolare poate fi acum evaluat ca

L(x) = \ell(x) \sum_{j=0}^k \frac{w_j}{x-x_j}y_j

care, în cazul în care ponderile  w_j au fost pre-calculate, are nevoie doar de  \ mathcal O (n) (operații de evaluare  \ell (x) și ponderile  w_j / (x-x_j) ), spre deosebire de \mathcal O(n^2) pentru evaluarea polinoamelor Lagrange de bază  \ ell_j (x) individual.

Formula de interpolare baricentrică poate fi, de asemenea, ușor de actualizat pentru a include un nod nou x_{k+1} prin împărțirea nodurilor w_j, j=0 \dots k la(x_j - x_{k+1}) și construirea noului w_{k+1} ca mai sus.

Putem simplifica și mai mult prima formă prin luarea în considerare prima interpolare baricentrică a funcției constante g(x)\equiv 1:

g(x) = \ell(x) \sum_{j=0}^k \frac{w_j}{x-x_j}.

Împărțirea L(x) la g(x) nu modifică interpolarea, dar conduce la rezultatul

L(x) = \frac{\sum_{j=0}^k \frac{w_j}{x-x_j}y_j}{\sum_{j=0}^k \frac{w_j}{x-x_j}}

care este menționat ca forma a doua sau adevarata forma a formulei de interpolare baricentrică. Această formă are avantajul că \ell(x) nu trebuie să fie evaluate pentru fiecare evaluare a  L(x) .

Referințe[modificare | modificare sursă]

  1. ^ www.stackoverflow.com/questions/11029615/lagrange-interpolation-method/11552763
  2. ^ Jean-Paul Berrut, Lloyd N. Trefethen, Barycentric Lagrange Interpolation, vol. 46, p.501-517

Bibliografie[modificare | modificare sursă]

  • Constantin Ilioi, Probleme de optimizare și algoritmi de aproximare a soluțiilor, Editura Academiei Republicii Socialiste România, București, 1980.

Legături externe[modificare | modificare sursă]