Você está na página 1de 9

>

Disciplina: MODELAGEM MATEMÁTICA

Aula 6: Métodos de interpolação polimonial

Apresentação
Nas aulas passadas, você estudou diversas técnicas de resolução de problemas clássicos em Engenharia, envolvendo o
cálculo de raízes de uma função real e a resolução de sistemas de equações lineares algébricas. Naturalmente, os
assuntos foram diferentes entre si, mas em todos os casos nós tínhamos como dado do problema uma função real de
uma única variável ou um conjunto de funções reais com várias variáveis. Dada esta função, o objetivo era identificar um
valor ou um conjunto de valores pertencentes ao conjunto dos números reais.

Vamos estudar um problema diferente. Agora, são dados n pontos distintos (x0, f(x0)), (x1, f(x1)), (x2, f(x2)),..., (xn-1, f(xn-1)),
mas nós não temos a função f(x). Assim, o objetivo agora é determinar um polinômio p(x) que, de algum modo, seja
próximo da função f(x), ao menos nos pontos x0, x1, x2, …,xn-1 dados. Desta forma, hoje você começará a estudar o
conceito de aproximação polinomial, o qual se apresenta sob duas modalidades – a interpolação polinomial e o ajuste de
funções.

Objetivo
Descrever os principais métodos de interpolação polinomial: Lagrange e Newton.

Aplicar os métodos estudados com suporte da linguagem de programação Python.

O conceito de interpolação polimonial


Conforme descrito em Moura (2017), o objetivo das técnicas de interpolação polinomial é determinar um polinômio p(x) que
passe por um conjunto {xi} de pontos – em outras palavras, que os interpole, satisfazendo a relação p(xi) = f(xi). Vejamos
graficamente o que significa este conceito com o auxílio da Figura 1 apresentada a seguir:

Figura 1 – Interpolação polinomial de (x0, f(x0)), (x1, f(x1)) e (x2, f(x2)) a partir do polinômio p(x).

Na figura em destaque, vemos a interpolação de 3 pontos: (x0, f(x0)), (x1, f(x1)) e (x2, f(x2)) por meio de um polinômio p(x), que
está indicado em uma linha contínua azul. A característica marcante do polinômio p(x) é que p(x0)= f(x0), p(x1) = f(x1) e p(x2) =
f(x2).

É importante, caro (a) aluno(a), que você perceba desde já que nós não conhecemos a função f(x), indicada em uma linha
vermelha tracejada na figura. Ela está aqui ilustrada apenas para lembrá-lo (a) que p(x) não é, necessariamente, a função f(x)
original, mas uma aproximação desta última, escolhida por atender às igualdades indicadas anteriormente - p(x0)= f(x0), p(x1) =
f(x1) e p(x2) = f(x2). Logo, o desafio que temos na aula de hoje é conhecer os métodos que permitem determinar este polinômio
interpolador p(x).

Poderíamos utilizar várias estratégias. Uma das mais naturais consiste em empregar a Relação de Girard. Segundo esta
relação, quando se tem n pontos distintos, como (x0, f(x0)), (x1, f(x1)), (x2, f(x2)),… e (xn-1, f(xn-1)), sempre existem polinômios
interpoladores p(x) de grau maior ou igual a n-1. Além disto, ainda de acordo com a relação de Girard, nós podemos garantir
que existe somente um polinômio p(x) com grau n-1 que interpole os n pontos dados.

Logo, se considerarmos n = 4 para fins de visualização, a relação de Girard nos permite afirmar que existe somente um
polinômio interpolador de grau 3 que passe pelos pontos dados. Ou seja, teremos que:

𝑝(𝑥 0) = 𝑎0+𝑎1.(𝑥 0) + 𝑎2.(𝑥 0)2 + 𝑎3.(𝑥 0)3

𝑝(𝑥 1) = 𝑎0+𝑎1.(𝑥 1)+𝑎2.(𝑥 1)2 + 𝑎3.(𝑥 3)3

𝑝(𝑥 2) = 𝑎0 + 𝑎1.(𝑥 2) + 𝑎2.(𝑥 2)2 + 𝑎3.(𝑥 2)3

𝑝(𝑥 3) = 𝑎0 + 𝑎1.(𝑥 3) + 𝑎2.(𝑥 3)2 + 𝑎3.(𝑥 3 )3

Assim, nós temos um sistema de equações lineares, nas quais as incógnitas são os coeficientes a0, a1, a2 e a3. Colocando este
sistema sob a forma de representação matricial, temos o produto matricial apresentado a seguir:
2 3
⎡1 x0 (x0 ) (x0 ) ⎤ a0 f(x0 )
⎡ ⎤ ⎡ ⎤
2 3
⎢ ⎥
⎢1 x1 (x1 ) (x1 ) ⎥ ⎢ a1 ⎥ ⎢ f(x1 ) ⎥
⎢ ⎥  ⎢ ⎥  =   ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ 2 3 ⎥ ⎢ a2 ⎥ ⎢ f(x2 ) ⎥
⎢1 x2 (x2 ) (x2 ) ⎥
⎣ ⎦ ⎣ ⎦
⎣ 2 3 ⎦ a3 f(x3 )
1 x3 (x3 ) (x3 )

Atenção! Aqui existe uma


videoaula, acesso pelo conteúdo online

Nas aulas anteriores, nós vimos diversas formas de resolver estes sistemas. No entanto, existem métodos mais eficientes,
como os de Lagrange e de Newton, que estudaremos na próxima seção. Venha comigo!

Métodos de interpolação
O primeiro método que estudaremos é o Método de Lagrange. Dados os n pontos originais (x0, f(x0)), (x1, f(x1)), (x2, f(x2)),… e (xn-
1, f(xn-1)), determinamos o polinômio interpolador p(x) a partir dos denominados polinômios de Lagrange Li(x), de tal forma que:

n −1
p(x)  =   ∑ L i (x) f(xi )
i = 0

Para se determinar os polinômios de Lagrange, utilizamos a seguinte fórmula geral:

(x − x 0 )(x − x1)…(x − x i−1 )(x − x i+1 )(x − x n−1 )


L i (x)  =  
(x i  − x 0 )(x i  − x 1 )…(x i  − x i−1 )(x i  − x i+1 )(x i  − x n−1 )

Conforme indicado em Moura (2017), temos que, com o modelo adotado, cada polinômio Li(x) não só contêm os pontos
originais como também atende à Relação de Girard. Além disto, é importante que você note que não foram incluídos os termos
(x – xi) no numerador, nem o termo (xi – xi) no denominador, pois isto anularia os valores do numerador e do denominador,
respectivamente.

Atenção! Aqui existe uma


videoaula, acesso pelo conteúdo online

Assim, temos que o polinômio interpolador da função f(x),


determinado a partir dos pontos originais (x0, f(x0)), (x1, f(x1)), (x2,
f(x2)),… e (xn-1, f(xn-1)), é dado pela fórmula apresentada no início
desta seção. Vamos ver um exemplo de aplicação, extraído de Moura
(2017)?

Dados os pontos (1,2), (3,5) e (4,6), determine o valor da função interpoladora para x = 2.

Como você pode perceber, não sabemos qual é a função original, pois temos apenas 3 pontos dados. Além disto, não temos o
valor da função para x = 2. Assim, em primeiro lugar, precisamos determinar a função interpoladora com os pontos dados:

Assim, montamos a tabela apresentada a seguir:


x f(x)

1 2

3 5

4 6

Com base nestes pontos dados, apresenta-se, a seguir, o valor de f(2), obtido a partir de interpolação polinomial mediante
emprego do Método de Lagrange. Assim, tem-se que:

(x − 3)(x − 4) (x − 3)(x − 4)
L 0 (x)  =     =  
(1 − 3)(1 − 4) 6

(x − 1)(x − 4) (x − 1)(x − 4)
L 1 (x)  =     =  
(3 − 1)(3 − 4) −2

(x − 1)(x − 3) (x − 1)(x − 3)
L 2 (x)  =     =  
(4 − 1)(4 − 3) 3

Assim, obter o valor interpolado de f(2) significa calcular p(2). Utilizando a expressão de Lagrange para o cálculo do polinômio
interpolador, temos que:

p(2)  =  L 0 (2) f(x0 )  +  L 1 (2) f(x1 )  +  L 2 (2) f(x2 )  =

2 (−2) (−1)
=    .  2  +    .  5  +    .  6  =
6 (−2) 3

2 11
=      +  5  −  2  =  
3 3

Atenção! Aqui existe uma


videoaula, acesso pelo conteúdo online

O segundo método que estudaremos nesta aula é o Método de Newton. Considere os mesmos n pontos originais (x0, f(x0)), (x1,
f(x1)), (x2, f(x2)),… e (xn-1, f(xn-1)). Assim, determinamos o polinômio interpolador p(x) a partir dos denominados polinômios de
Newton Pi(x), de tal forma que:

n −1
p(x)  =   ∑ ai  Pi (x)
i = 0

Onde:

P0(x) = 1

P1(x) = (x – x0)

P2(x) = (x – x0).(x – x1)

Pk(x) = (x – x0).(x – x1)...(x-xk-1)

Assim, por exemplo, quando temos n = 4, temos que

𝑃(𝑥 0 ) = 𝑎0 𝑃0 (𝑥 0 ) + 𝑎1 𝑃1 (𝑥 0 ) + 𝑎2 𝑃2 (𝑥 0 ) + 𝑎3 𝑃3 (𝑥 0 ) = 𝑓(𝑥 0 )

𝑃(𝑥 1 ) = 𝑎0 𝑃0 (𝑥 1 ) + 𝑎1 𝑃1 (𝑥 1 ) + 𝑎2 𝑃2 (𝑥 1 ) + 𝑎3 𝑃3 (𝑥 1 ) = 𝑓(𝑥 1 )

𝑃(𝑥 2 ) = 𝑎0 𝑃0 (𝑥 2 ) + 𝑎1 𝑃1 (𝑥 2 ) + 𝑎2 𝑃2 (𝑥 2 ) + 𝑎3 𝑃3 (𝑥 2 ) = 𝑓(𝑥 2 )

𝑃(𝑥 3 ) = 𝑎0 𝑃0 (𝑥 3 ) + 𝑎1 𝑃1 (𝑥 3 ) + 𝑎2 𝑃2 (𝑥 3 ) + 𝑎3 𝑃3 (𝑥 3 ) = 𝑓(𝑥 3 )


Da mesma forma que vimos no início desta aula, vemos que esta
notação equivale a um sistema de equações lineares, que pode ser
resolvido com as técnicas que estudamos nas Aulas 4 e 5.

Para auxiliá-lo a perceber esta relação, veja o mesmo sistema, só que agora representado sob a forma matricial:

P0 (x0 ) 0 0 0 a0 f(x0 )
⎡ ⎤ ⎡ ⎤ ⎡ ⎤

⎢ P0 (x1 ) P1 (x1 ) 0 0 ⎥ ⎢ a1 ⎥ ⎢ f(x1 ) ⎥


⎢ ⎥  ×   ⎢ ⎥  =   ⎢ ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢ P0 (x2 ) P1 (x2 ) P2 (x2 ) 0 ⎥ ⎢ a2 ⎥ ⎢ f(x2 ) ⎥

⎣ ⎦ ⎣ ⎦ ⎣ ⎦
P0 (x3 ) P1 (x3 ) P2 (x3 ) P3 (x3 ) a3 f(x3 )

Para ver como utilizar o método de Newton, vamos resolver o mesmo exemplo que estudamos no método de Lagrange. Assim,
considere o seguinte enunciado:

Dados os pontos (1,2), (3,5) e (4,6), determine o valor da função interpoladora para x = 2.

Como você pode perceber, não sabemos qual é a função original, pois temos apenas 3 pontos dados. Além disto, não temos o
valor da função para x = 2. Assim, em primeiro lugar, precisamos determinar a função interpoladora com os pontos dados:

Assim, montamos a tabela apresentada a seguir:

x f(x)

1 2

3 5

4 6

Com base nestes pontos dados, apresenta-se, a seguir, o valor de f(2), obtido a partir de interpolação polinomial mediante
emprego do Método de Newton. Deste modo, temos que:

P0(x) = 1

P1(x) = (x – 1)

P2(x) = (x – 1).(x – 3)

Em primeiro lugar, precisamos calcular os coeficientes do polinômio interpolador. A representação matricial do sistema de
equações lineares correspondente é:
P0 (1) 0 0 1 0 0 a0 2
⎡ ⎤ ⎡ ⎤ ⎡ ⎤ ⎡ ⎤

⎢ P0 (3) P1 (3) 0 ⎥  → ⎢ 1 2 0 ⎥  ×   ⎢ a1 ⎥  =   ⎢ 5 ⎥

⎣ ⎦ ⎣ ⎦ ⎣ ⎦ ⎣ ⎦
P0 (4) P1 (4) P2 (4) 1 3 3 a2 6

Resolvendo-se o SELA anterior com base no emprego dos métodos de Eliminação de Gauss e Substituição Retroativa, tem-se
que

3 −1
a0   =  2 ;  a1   =   ;  a2   =  
2 6

Deste modo, temos que

3 −1
p(x)  =  a0  P0  (x)  +  a1  P1  (x)  +  a2  P2  (x)  =  2. 1  +   (x  − 1)  +    (x  − 1) (x  − 3)
2 6

Substituindo a expressão obtida para x = 2, temos:

3 1 22 11
p(2)  = 2  +     +     =     =  
2 6 6 3

Como era de se esperar, o resultado obtido aqui com o Método de Newton


foi o mesmo que encontramos com o Método de Lagrange. Isto se dá porque
ambos os métodos apresentam técnicas distintas, mas com os mesmos
princípios – a aproximação de n pontos distintos dados em uma função
interpoladora de grau n-1, a qual é única, segundo a Relação de Girard.

Aplicação da linguagem Python


Vamos ver os códigos em Python destes dois métodos? Com isto, creio que você estará em condições de aplicar os
conhecimentos aprendidos em implementações computacionais que o ajudem a solucionar problemas em Engenharia.

O método de Lagrange pode ser resolvido com emprego do pacote scipy. Em particular, podemos empregar a função
scipy.interpolate.lagrange para obter uma função interpoladora. A entrada da função consiste em 2 vetores, um para
representar os valores de x e o outro para assinalar os valores correspondentes de f(x). A saída da função apresenta os
coeficientes da função interpoladora.

O código, a seguir, disponível em Scipy (2019), apresenta um exemplo para interpolação da função x3 em 3 pontos (x = 0, x = 1 e
x = 2):



nome_do_arquivo.html

>>> from scipy.interpolate import lagrange


>>> x = np.array([0, 1, 2])
>>> y = x**3
>>> poly = lagrange(x, y)
>>> from numpy.polynomial.polynomial import Polynomial
>>> Polynomial(poly).coef
array([ 3., -2., 0.])

Já o método de Newton pode ser empregado da seguinte forma:




nome_do_arquivo.html

>>>f = interpolate.BarycentricInterpolator(x, y)
>>> yn = f(xn)

Atividades
1. Assinale a única alternativa que apresenta a função de interpolação para os pontos (0,1), (2,5) e (4,17).

a) f(x) = x2 + 1
b) f(x) = x2 - 1
c) f(x) = x2 + 3
d) f(x) = x2 - 3
e) nenhuma das alternativas anteriores

2. Assinale a única alternativa que apresenta a função de interpolação para os pontos (1,3), (2,7) e (4,6).

a) f(x)  =  
−3x

2
  +  
17x

2
  −  4

b) f(x)  =  
−3x
  −  
17x
  −  4
2 2

c) f(x)  =  
3x
  +  
17x
  −  4
2 2

d) f(x) 
3x 17x
=     −     −  4
2 2

e) nenhuma das alternativas anteriores


3. Assinale a única alternativa que apresenta a função de interpolação para os pontos (1,3), (2,5) e (4,9).

a) f(x) = 2x + 1
b) f(x) = 2x - 1
c) f(x) = -2x - 1
d) f(x) = -2x + 1
e) nenhuma das alternativas anteriores

4. Assinale a única alternativa que apresenta a função de interpolação para os pontos (1,3), (2,10) e (4,16).

a) f(x)  =  
−4x

3
  +  11x  −
20

b) f(x)  =  
−4x

3
  +  11x  +
20

c) f(x)  =  
4x

3
  −  11x  −
20

d) f (x)  =  
4x

3
  +  11x  +
20

e) nenhuma das alternativas anteriores

5. Assinale a única alternativa que apresenta a função de interpolação para os pontos (1,3), (2,8) e (4,13).

a) f(x) 
−5x 15x 11
=     +     −  
6 2 3

b) f(x) 
5x 15x 11
=     +     −  
6 2 3

c) f(x) 
−5x 15x 11
=     −     −  
6 2 3

d) f(x)  =  
−5x

6
  +  
15x

2
  +  
11

e) nenhuma das alternativas anteriores

Notas
Referências

MOURA, D. F. C, Cálculo Numérico. Rio de Janeiro: SESES, 2017. 144 p.

SCIPY.ORG. Disponível em https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.lagrange.html, acesso em 23


de novembro de 2019.

SCIPY.ORG. Interpolation methods in Scipy. Disponível em https://mmas.github.io/interpolation-scipy, acesso em 23 de


novembro de 2019.

Próxima aula

Os métodos de ajuste de funções para funções polinomiais;


Implementar os métodos estudados em Python, aplicando-os em situações-problema típicas em Engenharia.

Explore mais

Assim, segue uma lista de sites na Internet para que você os consulte depois:

Fernandes, J. Aula 32 – Cálculo Numérico: Interpolação Polinomial – Método de Lagrange. Disponível em


https://www.youtube.com/watch?v=DZdSEz8lhPg, acesso em 23 de novembro de 2019.

Fernandes, J. Aula 33 – Cálculo Numérico: Interpolação Polinomial – Método de Newton. Disponível em


https://www.youtube.com/watch?v=l9Dha59GeUE, acesso em 23 de novembro de 2019.

Neri, I. Interpolação Polinomial – Vídeo 01 – Método de Lagrange. Disponível em https://www.youtube.com/watch?


v=Y9sa2S-ljX8, acesso em 23 de novembro de 2019.

Você também pode gostar