Método de Lagrange

Os casos vistos anterioremente são casos de Interpolação de Lagrange, nesses métodos é sempre possível construir um polinômio único \(P_{n-1}(x)\) de grau \(n-1\) que passa através de \(n\) pontos distintos.

Uma maneira de obter esse polinômio é através da fórmula de Lagrange:

\[P_{n-1}(x) = \sum\limits_{i=1}^{n}{y_i\ell _i(x)} \]

Onde:

\[\ell _i(x) = \frac{x-x_1}{x_i-x_1}\times \frac{x-x_2}{x_i-x_2} \ldots \frac{x-x_{i-1}}{x_i-x_{i-1}}\times \frac{x-x_{i+1}}{x_i-x_{i+1}} \ldots \frac{x-x_{n}}{x_i-x_{n}}\] \[=\prod\limits_{\begin{matrix} j= 1\\ j\neq i \end{matrix} }^{n}{\frac{x-x_{j}}{x_i-x_{j}}},i = 1, 2, \ldots, n\]

São as chamadas funções cardinais

Por exemplo, se \(n = 2\), a função de interpolação é uma linha: \(P_{1}(x) = y_1\ell _1(x)+y_2\ell _2(x)\)

onde:

\[ \begin{matrix} \ell _1(x) = \frac{x-x_{2}}{x_1-x_{2}} & \ell _2(x) = \frac{x-x_{1}}{x_2-x_{1}} \end{matrix} \]

Com \(n = 3\), a função de interpolação é uma parábola: \(P_{2}(x) = y_1\ell _1(x)+y_2\ell _2(x)+y_3\ell _3(x)\) e:

\[ \begin{matrix} \ell _1(x) = \frac{(x-x_{2})(x-x_{3})} {(x_1-x_{2})(x_1-x_{3})} \\ \ell _2(x) = \frac{(x-x_{1})(x-x_{3})} {(x_2-x_{1})(x_2-x_{3})} \\ \ell _3(x) = \frac{(x-x_{1})(x-x_{2})} {(x_3-x_{1})(x_3-x_{2})} \\ \end{matrix} \]

Assim, de forma genérica, temos a Fórmula de Lagrange:

Exemplo 1

Dados os pontos, determine a função de Interpolação:

\[ \begin{matrix} \textbf{x} &0 &3.5 &5.5 \\ \hline \textbf{y} &3 &-49.5 &-123.5 \end{matrix} \]

Desenvolvendo a Fórmula de Lagrange:

\[ \begin{matrix} P_{2}(x) =3\times \frac{(x - 3.5)(x - 5.5)}{(0 - 3.5)(0 - 5.5)} -49.5 \times \frac{(x - 0)(x - 5.5)}{(3.5 - 0)(3.5 - 5.5)} -123.5 \times \frac{(x - 0)(x - 3.5)}{(5.5 - 0)(5.5 - 3.5)} \\ \textrm{} \\ P_{2}(x) =3 \times \frac{x^2 - 9x + 19.25}{19.25} -49.5 \times \frac{x^2 - 5.5x + 0}{-7} -123.5 \times \frac{x^2 - 3.5x + 0}{11} \end{matrix} \]

Resultando no polinômio:

\[ P_{2}(x) = -4x^2 - x + 3 \]

Exemplo 2

Outro exemplo, dados os pontos, determine a função de Interpolação:

\[ \begin{matrix} \textbf{x} &1 &3 &4.5 &5.5 &7.5 \\ \hline \textbf{y} &-2 &92 &470.938 &1039.19 &3513.69 \end{matrix} \]

Desenvolvendo:

\[ \begin{matrix} \begin{matrix} P_{4}(x) =-2 \times \frac{(x - 3)(x - 4.5)(x - 5.5)(x - 7.5)}{(1 - 3)(1 - 4.5)(1 - 5.5)(1 - 7.5)} + \\ 92 \times \frac{(x - 1)(x - 4.5)(x - 5.5)(x - 7.5)}{(3 - 1)(3 - 4.5)(3 - 5.5)(3 - 7.5)} + \\ 470.938 \times \frac{(x - 1)(x - 3)(x - 5.5)(x - 7.5)}{(4.5 - 1)(4.5 - 3)(4.5 - 5.5)(4.5 - 7.5)} +\\ 1039.19 \times \frac{(x - 1)(x - 3)(x - 4.5)(x - 7.5)}{(5.5 - 1)(5.5 - 3)(5.5 - 4.5)(5.5 - 7.5)} +\\ 3513.69 \times \frac{(x - 1)(x - 3)(x - 4.5)(x - 5.5)}{(7.5 - 1)(7.5 - 3)(7.5 - 4.5)(7.5 - 5.5)} \end{matrix} \\ \textrm{} \\ \begin{matrix} P_{4}(x) =-2 \times \frac{x^4 - 20.5x^3 + 152.25x^2 - 484.88x + 556.88}{204.75} + \\ 92 \times \frac{x^4 - 18.5x^3 + 117.25x^2 - 285.38x + 185.62}{-33.75} + \\ 470.938 \times \frac{x^4 - 17x^3 + 96.25x^2 - 204x + 123.75}{15.75} +\\ 1039.19 \times \frac{x^4 - 16x^3 + 84.75x^2 - 17x + 101.25}{-22.5} +\\ 3513.69 \times \frac{x^4 - 14x^3 + 67.75x^2 - 129x + 74.25}{175.5} \end{matrix} \end{matrix} \]

Polinômio resultante:

\[ P_{4}(x) = x^4 + x^3 - x^2 - 2x - 1 \]

Uso da variável \(x\) em Python

Em Python, podemos trabalhar com incógnitas usando a biblioteca sympy, que permite manipulação simbólica de expressões:

Programa com cálculo simbólico em Python

Na programação, primeiro declaramos a incógnita e depois montamos a expressão:

import sympy as sp

x = sp.symbols("x")
valor = (x - 2) * (x + 4)

print("Expressão:", valor)
print("Expressão expandida:", sp.expand(valor))

Ou utilizando a variável diretamente:

import sympy as sp

valor = (sp.Symbol("x") - 2) * (sp.Symbol("x") + 4)

print("Expressão:", valor)
print("Expressão expandida:", sp.expand(valor))

Atividade 1

Dados os pontos a seguir, encontre a função de interpolação correspodente:

  • x \( 1\) \( 3\)
    y \(-1\) \(-5\)
  • x \( -1\) \( 0\) \( 1.5\)
    y \(2\) \(3\) \(-6.75\)
  • x \( -2\) \( -0.5\) \( 1.5\) \( 3\)
    y \(-26\) \(-2.375\) \(1.125\) \(9\)

Atividade 2

Dados os pontos a seguir:

x \( 0\) \( 1.5\) \( 3\)
y \(-1\) \(-4.75\) \(-13\)

É desenvolvida pela seguinte sequência de passos:

\[ \begin{matrix} P_{2}(x) =-1 * \frac{(x - 1.5)(x - 3)}{(0 - 1.5)(0 - 3)} +\\ -4.75 * \frac{(x - 0)(x - 3)}{(1.5 - 0)(1.5 - 3)} +\\ -13 * \frac{(x - 0)(x - 1.5)}{(3 - 0)(3 - 1.5)} \end{matrix} \] \[ \begin{matrix} P_{2}(x) =-1 \times \frac{x^2 - 4.5x + 4.5}{4.5} + \\ -4.75 \times \frac{x^2 - 3x + 0}{-2.25} +\\ -13 \times \frac{x^2 - 1.5x + 0}{4.5} \end{matrix} \]

Resultando no polinômio interpolador:

\[P_2(x) = -1x^2 - 1x - 1\]

Uma parte do algoritmo do cálculo é apresentada a seguir:

import sympy as sp

pontos = [(0, -1), (1.5, -4.75), (3, -13)]
x = sp.symbols("x")

for i, (xi, yi) in enumerate(pontos):
    numerador = yi
    denominador = 1

    for j, (xj, _) in enumerate(pontos):
        if i != j:
            numerador *= x - xj
            denominador *= xi - xj

    print("Numerador:", sp.expand(numerador))
    print("Denominador:", denominador)

Conclua o programa para calcular o polinômio interpolador dos pontos dados.