Você está na página 1de 20

Interpolação Polinomial

7
7.1 Introdução
Suponha que temos (n + 1) pontos distintos x0 , x1 , . . . , xn , chamados de nós, e que os
pontos y0 , y1 , . . . , yn foram obtidos por meio de alguma função f que é desconhecida ou é difícil
de manusear algebricamente, isto é, yi = f (xi ), i = 0, 1, . . . , n. Queremos conhecer ou estimar
f (xr ) para algum valor xr não tabelado. Podemos fazer isto interpolando f por uma função
polinomial.
Em muitos problemas concretos, conhecemos apenas os pares de pontos (xi , f (xi )) e não a
expressão de f , outras vezes é difícil trabalhar com a expressão matemática de f . Nesses
casos é preferível trabalhar com uma função interpolante g. Nesta seção veremos técnicas
para determinar a função polinomial interpolante g, conhecendo-se apenas os pares de pontos
(xi , f (xi )).

Antes apenas dois comentários: o primeiro comentário é se poderíamos pensar no polinômio


de Taylor como uma aproximação para a função. Mas como o polinômio de Taylor aproxima
f (x) em torno de um ponto x = a, fora daí a aproximação não é boa, desconsideramos essa
possibilidade. O outro comentário é se existe um tal polinômio. É natural esperar que um tal
polinômio interpolador exista, pois o Teorema 7.1.1 garante que toda função contínua pode ser
uniformemente aproximada por um polinômio.
Teorema 7.1.1 (Aproximação de Weierstrass) Seja f : [a, b] → R uma função contínua e
ε > 0. Então, existe um polinômio p(x) com a seguinte propriedade
|f (x) − p(x)| < ε, para todo x ∈ [a, b].
A demonstração deste resultado pode ser obtida em qualquer livro de Cálculo ou introdução à
Análise.

105
106 CAPÍTULO 7. INTERPOLAÇÃO POLINOMIAL

7.2 Existência do polinômio interpolador


Dados os n + 1 pontos (x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn )), onde x0 , x1 , . . . , xn são (n + 1)
pontos distintos, queremos determinar uma função polinomial pn (x), de grau máximo n, que
satisfaça
f (xi ) = pn (xi ), i = 0, 1, . . . , n. (7.2.1)

Como pn (x) tem a forma

pn (x) = an xn + an−1 xn−1 + · · · + a1 x + a0 ,

então (7.2.1) se transforma em

an xn0 + an−1 xn−1


0 + · · · + a 1 x 0 + a0 = f (x0 )
n n−1
an x1 + an−1 x1 + · · · + a1 x1 + a0 = f (x1 )
.. .. .
. . = ..
n n−1
an xn + an−1 xn + · · · + a1 xn + a0 = f (xn )

Escrevendo o sistema acima na forma matricial, obtemos


     
1 x0 x20 . . . xn0 a0 f (x0 )
 1
 x1 x21 . . . xn1 
 
 a1   f (x1 )
 


 .. .. .. ..  ·  ..  =  .. . (7.2.2)
 . . . ··· .   .   . 
1 xn x2n . . . xnn an f (xn )
| {z }
=A

Notemos que det A 6= 0, pois os pontos x0 , x1 , . . . , xn são distintos e A é uma matriz de Van-
dermonde. Assim, o sistema linear admite uma única solução a0 , a1 , . . . , an . Isto é, existe um
único polinômio pn (x) = an xn + an−1 xn−1 + · · · + a1 x + a0 de grau máximo n que interpola f .
Podemos então enunciar o seguinte resultado:

Teorema 7.2.1 Dados x0 , x1 , . . . , xn pontos distintos existe um único polinômio pn (x), de grau
máximo n, que interpola f nos pontos (xi , f (xi )), i = 0, . . . , n.

7.3 Métodos de Interpolação


Como vimos na seção anterior, já temos um método para determinar o polinômio interpolador:
basta resolver o sistema de equações lineares (7.2.2). Existem outros métodos, mais simples, de
obter o polinômio interpolador que não utilizam a resolução do sistema linear (7.2.2):
1i) O método de Lagrange,
2i) O método de Newton.
7.3. MÉTODOS DE INTERPOLAÇÃO 107

7.3.1 O Método de Lagrange


Consideremos dados (n + 1) pontos distintos x0 , x1 , . . . , xn e yi = f (xi ), i = 0, 1, . . . , n. Para
cada k = 0, 1, . . . , n sejam

(x − x0 )(x − x1 ) . . . (x − xk−1 )(x − xk+1 ) . . . (x − xn )


Lk (x) = .
(xk − x0 )(xk − x1 ) . . . (xk − xk−1 )(xk − xk+1 ) . . . (xk − xn )

Ou resumidamente,
n
Y x − xi
Lk (x) = , k = 0, 1, . . . , n. (7.3.3)
i=0,i6=k
xk − xi

É fácil observar que:


(1i) Lk (xk ) = 1,
(2i) Lk (xj ) = 0, se j 6= k,
(3i) Lk (x) é um polinômio de grau n.

Seja pn (x) o polinômio dado por

pn (x) = y0 L0 (x) + y1 L1 (x) + · · · + yn Ln (x). (7.3.4)

Podemos verificar que pn (x) satisfaz pn (xi ) = yi , i = 0, 1, . . . , n, isto é, pn (x) é um polinômio que
interpola f nos pontos xi . Como o polinômio interpolador é único, segue que este é o polinômio
interpolador. Resumindo temos o seguinte teorema:

Teorema 7.3.1 (Lagrange) Sejam x0 , x1 , . . . , xn pontos distintos e yi = f (xi ), i = 0, 1, . . . , n


dados. Então, existe um polinômio pn (x) de grau ≤ n que interpola f nesses pontos. Além
disso, pn (x) é dado por

pn (x) = y0 L0 (x) + y1 L1 (x) + · · · + yn Ln (x),

onde
n
Y x − xi
Lk (x) = , k = 0, 1, . . . , n.
i=0,i6=k
x k − xi

• Exemplo 7.3.2

Usando o método de Lagrange para determinar o polinômio que interpola os pontos

xk -1 0 1 2
yk 0 1 2 7
108 CAPÍTULO 7. INTERPOLAÇÃO POLINOMIAL

obtemos
(x − x1 )(x − x2 )(x − x3 ) −x(x − 1)(x − 2)
L0 (x) = =
(x0 − x1 )(x0 − x2 )(x0 − x3 ) 6
(x − x0 )(x − x2 )(x − x3 ) (x + 1)(x − 1)(x − 2)
L1 (x) = =
(x1 − x0 )(x1 − x2 )(x1 − x3 ) 2
(x − x0 )(x − x1 )(x − x3 ) −(x + 1)x(x − 2)
L2 (x) = =
(x2 − x0 )(x2 − x1 )(x2 − x3 ) 4
(x − x0 )(x − x1 )(x − x2 ) (x + 1)x(x − 1)
L3 (x) = = .
(x3 − x0 )(x3 − x1 )(x3 − x2 ) 6

Segue que o polinômio interpolador é dado por p(x) = y0 L0 (x) + y1 L1 (x) + y2 L2 (x) + y3 L3 (x) =
2 3
3
x + 31 x + 1
• Exemplo 7.3.3
Usando o método de Lagrange para determinar o polinômio que interpola os pontos, plotamos
os pontos e o polinômio interpolador p(x) = − 34 x4 + 6x3 − 61
4
x2 + 13x.
xk 0 1 2 3 4
yk 0 3 1 3 0

3.5

2.5

1.5

0.5

0 1 2 3 4
x

Figura 7.1: Gráfico do polinômio interpolador do exemplo 7.3.3

Teorema 7.3.4 (Estimativa para o erro) Sejam dados (n+1) nós distintos x0 , x1 , x2 , . . . , xn
no intervalo [a, b] e f : [a, b] → R função em C n+1 [a, b]. Então, para cada x ∈ [a, b] existe
ξx ∈ (a, b) tal que
f (n+1) (ξx )
f (x) = pn (x) + (x − x0 )(x − x1 ) · · · (x − xn ). (7.3.5)
(n + 1)!
7.3. MÉTODOS DE INTERPOLAÇÃO 109

Demonstração: Notemos que se x = xk para algum k = 0, 1, . . . , n então a igualdade acima


em (7.3.5) é satisfeita independentemente de ξx .
Tomemos então x 6= xk , k = 0, 1, . . . , n e definimos a função

(t − x0 )(t − x1 ) · · · (t − xn )
g(t) = f (t) − pn (t) − [f (x) − pn (x)] .
(x − x0 )(x − x1 ) · · · (x − xn )

É fácil ver que g ∈ C (n+1) [a, b], pois f tem esta propriedade, além disso g(xk ) = 0 para todo
k = 0, 1, . . . , n. Notemos também que g(x) = 0 e assim, g se anula em (n + 2) pontos distintos
de [a, b]. Pelo Teorema de Rolle generalizado, existe ξx ∈ (a, b) para o qual g (n+1) (ξx ) = 0. Logo,
temos
n
(n+1) (n+1) d(n+1) Y (t − xi )
g (ξx ) = f (ξx ) − p(n+1)
n (ξx ) − [f (x) − pn (x)] n+1 = 0.
dt i=0
(x − xi )

Como pn (x) é um polinômio de grau máximo n segue que sua derivada de ordem (n + 1) é nula.
n
Y (t − xi )
Como é um polinômio de grau (n + 1), sua derivada de ordem (n + 1) é constante
i=0
(x − x i )
e igual a
n
d(n+1) Y (t − xi ) (n + 1)!
= Q n .
dtn+1 i=0 (x − xi ) i=0 (x − xi )

Assim podemos escrever,

(n + 1)!
0 = f (n+1) (ξx ) − [f (x) − pn (x)] Qn ,
i=0 (x − xi )

de onde temos
n
f (n+1) (ξx ) Y
f (x) = pn (x) + (x − xi ).
(n + 1)! i=0

Isto conclui a demonstração do teorema. 


Segue que podemos estimar o erro cometido na interpolação polinomial quando trocamos f (x)
por pn (x):
n
f (n+1) (ξx ) Y
En (x) = f (x) − pn (x) = (x − xi )
(n + 1)! i=0
(7.3.6)
Observe que a utilização da fórmula do erro na interpolação é bastante restrita. De fato, uma
estimativa para o erro só é possível se conhecemos uma limitação para f (n+1) (x). Veja a seção
§7.8 para um comentário sobre o erro e o fenômeno Runge.

• Exemplo 7.3.5
110 CAPÍTULO 7. INTERPOLAÇÃO POLINOMIAL

Sejam xk = 0.1k e yk = f (xk ), k = 0, 1, . . . , 10 = n, obtidos de f (x) = exp(x). Para x ∈ [0, 1],


vamos estimar o erro
f (n+1) (ξ)
|f (x) − Pn (x)| = | (x − x0 )(x − x1 ) . . . (x − xn )|.
(n + 1)!

Notemos que maxx∈[0,1] f (n+1) (x) = e, assim

f (n+1) (ξx )
|En (x)| = | (x − x0 )(x − x1 ) . . . (x − xn )|
(n + 1)!
e
≤ |(x − 0)(x − 0.1) . . . (x − 10)|.
11!
Se x = 0.55, obtemos
e
|En (x)| ≤ |(0.55 − 0)(0.55 − 0.1) . . . (0.55 − 1)|
11!
e
≤ | − 0.4796520993 × 10−7 | = 0.326638 × 10−14 .
11!

7.3.2 O método de Lagrange para pontos igualmente espaçados


Se os pontos dados x0 < x1 < x2 < . . . < xn são igualmente espaçados, isto é, xi+1 − xi = h, i =
0, 1, 2, . . . , n − 1, o polinômio interpolador dado pelo método de Lagrange pode ser escrito de
x − x0
uma forma mais simples. Dado x ∈ [x0 , xn ] seja u = . Segue que x = x0 + uh e portanto
h
tem-se

x − xk = (u − k)h,
xr − xs = (r − s)h.

Substituindo estas informações no polinômio interpolador dado pelo método de Lagrange, obte-
mos
n n  
X Y u−i
pn (u) = yk .
k=0 i=0,i6=k
k − i
(7.3.7)

7.4 Usando Maple: o método de Lagrange


O procedimento em Maple a seguir calcula o polinômio interpolador usando o método de
Lagrange e plota os pontos juntamente com o polinômio interpolador. A sintaxe é Inter-
poLa(pontos);.
> restart:
> interpoLa:=proc(pts) local i,j,k,polin,gr1,gr2,‘check arguments‘;
> if type(pts,‘list‘) = false then
7.5. O MÉTODO DE NEWTON 111

ERROR(‘o argumento deve ser uma lista de pontos do R^2‘) fi;


> ‘check arguments‘:=(pt)-> if type(pt,‘list‘) = false or nops(pt) <> 2
then ERROR(‘o argumento não é um ponto do R^2‘,pt) else pt fi;
> map(‘check arguments‘,pts);
> polin:=sort(expand(sum(product((x-pts[j][1])/(pts[i][1]-pts[j][1]),j=1..i-1)
*product((x-pts[k][1])/(pts[i][1]-pts[k][1]),k=i+1..nops
(pts))*pts[i][2],i=1..nops(pts))),x);
print(polin);
gr1:=plot(polin,x=0..pts[nops(pts)][1]);
> gr2:=plot(pts,style=point,symbol=circle, color=blue);
> plots[display]({gr1,gr2});
> end:
#Exemplo
> interpoLa( [ [0, 5], [1, 3], [2, 1], [3, 3], [4, -3] ] );

7.5 O Método de Newton


No cálculo do polinômio interpolador pelo método de Lagrange, a adição de mais um ponto
(xn+1 , yn+1 ) nos obriga a refazer todos os cálculos dos novos polinômios Lk (x), i = 0, 1, . . . , n+1.
O método de Newton para o polinômio interpolador, com diferenças divididas, não há esse
problema. Podemos acrescentar ou retirar pontos obtendo novos polinômios interpoladores de
modo mais simples.
Nesse método o polinômio interpolador é obtido de uma construção recursiva simples utilizando
um operador de diferença dividida.
Para obtermos a forma de Newton para o polinômio interpolador pn (x) que interpola f nos
pontos x0 , x1 , . . . , xn precisamos do operador de diferenças divididas que passaremos a expor
agora.
O operador diferenças divididas é definido por

f [x0 ] = f (x0 ), (ordem zero)


f [x1 ] − f [x0 ] f (x1 ) − f (x0 )
f [x0 , x1 ] = = , (ordem 1)
x1 − x0 x1 − x0
f [x1 , x2 ] − f [x0 , x1 ]
f [x0 , x1 , x2 ] = , (ordem 2)
x2 − x0
f [x1 , x2 , x3 ] − f [x0 , x1 , x2 ]
f [x0 , x1 , x2 , x3 ] = , (ordem 3)
x3 − x0
.. .
. = ..
f [x1 , x2 , x3 , . . . , xn ] − f [x0 , x1 , x2 , . . . , xn−1 ]
f [x0 , x1 , x2 , x3 , . . . , xn ] = , (ordem n)
xn − x0

Chamamos de f [x0 , x1 , x2 , . . . , xk ] de diferença dividida de ordem k entre os k + 1 pontos


112 CAPÍTULO 7. INTERPOLAÇÃO POLINOMIAL

x0 , x1 , x2 , . . . , xk . As diferenças divididas f [x0 , x1 , x2 , . . . , xk ] são invariantes para qualquer per-


mutação dos índices, isto é, são funções simétricas nos seus argumentos.
Dados x0 , x1 , x2 , . . . , xn pontos distintos, podemos assumir que estão ordenados em ordem cres-
cente, x0 < x1 < . . . < xn . Podemos construir a seguinte tabela de diferenças divididas

xk f [xk ] f [xk , xk+1 ] f [xk , xk+1 , xk+2 ] f [xk , xk+1 , xk+2 , xk+3 ]
x0 f [x0 ]
f [x0 , x1 ]
x1 f [x1 ] f [x0 , x1 , x2 ]
f [x1 , x2 ] f [x0 , x1 , x2 , x3 ]
x2 f [x2 ] f [x1 , x2 , x3 ]
f [x2 , x3 ]
x3 f [x3 ]

No caso geral temos:

xk Ordem 0 Ordem 1 Ordem 2 Ordem 3 ... Ordem n


x0 f [x0 ]
f [x0 , x1 ]
x1 f [x1 ] f [x0 , x1 , x2 ]
f [x1 , x2 ] f [x0 , x1 , x2 , x3 ]
x2 f [x2 ] f [x1 , x2 , x3 ]
f [x2 , x3 ] f [x1 , x2 , x3 , x4 ]
x3 f [x3 ] f [x2 , x3 , x4 ]
..
f [x3 , x4 ] . ... f [x0 , x1 , x2 , . . . , xn ]
.. .. ..
x4 f [x4 ] . . .
· · f [xn−2 , xn−1 , xn ]
· · f [xn−1 , xn ]
xn f [xn ]

Apresentaremos agora a construção do polinômio pn (x) que interpola f (x) nos pontos x0 , x1 ,
x2 , . . . , xn segundo o método de Newton. A construção é feita por indução, iniciamos com
7.5. O MÉTODO DE NEWTON 113

o polinômio que interpola f (x) em x = x0 e assim sucessivamente, construíremos pk (x) que


interpola f (x) em x0 , x1 , x2 , . . . , xk , k = 0, 1, . . . , n.
Seja, então p0 (x) o polinômio de grau zero, que interpola f (x) em x = x0 . Segue que p0 (x) =
f [x0 ].
Para x 6= x0 e x ∈ [a, b], temos que
f [x] − f [x0 ] f (x) − f (x0 )
f [x0 , x] = = ,
x − x0 x − x0
donde se obtém
f (x) = f (x0 ) + (x − x0 )f [x0 , x] .
| {z } | {z }
p0 (x) E0 (x)

Chamamos de E0 (x) = f (x) − p0 (x) de erro cometido ao se aproximar f (x) por p0 (x).
Seja, p1 (x) o polinômio de grau ≤ 1 que interpola f (x) em x0 e x1 . Temos que
f [x, x0 ] − f [x1 , x0 ] f (x) − f (x0 ) − (x − x0 )f [x1 , x0 ]
f [x0 , x1 , x] = f [x1 , x0 , x] = = ,
x − x1 (x − x0 )(x − x1 )
donde se obtém
f (x) = f (x0 ) + (x − x0 )f [x1 , x0 ] + (x − x0 )(x − x1 )f [x0 , x1 , x] .
| {z } | {z }
p1 (x) E1 (x)

Assim,
p1 (x) = p0 (x) + (x − x0 )f [x0 , x1 ],
e
E1 (x) = (x − x0 )(x − x1 )f [x0 , x1 , x].
Analogamente, obtemos
p2 (x) = p1 (x) + (x − x0 )(x − x1 )f [x0 , x1 , x2 ]
e
E2 (x) = (x − x0 )(x − x1 )(x − x2 )f [x0 , x1 , x2 , x].
Repetindo sucessivamente o argumento acima, obtemos que

f (x) = f (x0 ) + (x − x0 )f [x1 , x0 ] + · · · + (x − x0 )(x − x1 ) · · · (x − xn−1 )f [x0 , x1 , · · · , xn ]


| {z }
pn (x)

+ (x − x0 )(x − x1 ) · · · (x − xn )f [x0 , x1 , . . . , xn , x] .
| {z }
En (x)

Assim,
pn (x) = f (x0 ) + (x − x0 )f [x0 , x1 ] + (x − x0 )(x − x1 )f [x0 , x1 , x2 ] + · · · +
(x − x0 )(x − x1 ) · · · (x − xn−1 )f [x0 , x1 , · · · , xn ]
114 CAPÍTULO 7. INTERPOLAÇÃO POLINOMIAL

e
En (x) = (x − x0 )(x − x1 ) · · · (x − xn )f [x0 , x1 , . . . , xn , x].
Note que o coeficiente principal do polinômio interpolador é dado por f [x0 , x1 , · · · , xn ].
Resumindo acabamos de provar o seguinte resultado.
Teorema 7.5.1 A forma de Newton para o polinômio pn (x) que interpola f (x) em x0 , x1 ,
x2 , . . . , xn pontos distintos, é dado por
pn (x) = d0 + d1 (x − x0 ) + d2 (x − x0 )(x − x1 ) + · · · + dn (x − x0 )(x − x1 ) · · · (x − xn−1 ),
onde dk são as diferenças divididas de ordem k dadas por
dk = f [x0 , x1 , x2 , . . . , xk ].
Além disso, se f é (n + 1) vezes diferenciável no intervalo [a, b] que contém os pontos xi , o erro
En (x) é dado por
En (x) = f (x) − pn (x) = (x − x0 )(x − x1 ) · · · (x − xn )f [x0 , x1 , . . . , xn , x].

Algumas propriedades das diferenças divididas:


(1i) Uma propriedade importante é
n
X yi
f [x0 , x1 , x2 , . . . , xn ] = Qn .
i=0 j=0,j6=i (xi − xj )

(2i) Sendo f (x) uma função n vezes diferenciável num intervalo [a, b] que contém n + 1 pontos
distintos x0 , x1 , x2 , . . . , xn , então

f (n) (ξ)
f [x0 , x1 , x2 , . . . , xn ] = , (7.5.8)
n!
para algum ξ ∈ (a, b).
Vamos verificar (2i). Definindo g(x) = f (x) − pn (x) temos que
g(xi ) = 0, i = 0, 1, . . . , n.
Usando o Teorema generalizado de Rolle, existe um número ξ ∈ (a, b) com
g (n) (ξ) = 0.
(n) (n)
Logo, f (n) (ξ) = pn (ξ). Como pn (x) tem grau máximo n, temos que a derivada pn (x) é con-
stante e igual a n!f [x0 , x1 , x2 , . . . , xn ]. Disto segue o resultado.

Em vista de (7.5.8) a expressão para o erro pode ser escrita como


f (n+1) (ξ)
En (x) = (x − x0 )(x − x1 ) · · · (x − xn ) ,
(n + 1)!
para algum ξ ∈ (a, b). Veja a seção §7.8 para um comentário sobre o erro e o fenômeno Runge.
7.5. O MÉTODO DE NEWTON 115

• Exemplo 7.5.2
Usando o método de Newton determine o polinômio que interpola os pontos
xk -1 0 1 2
yk 0 1 2 7
Vamos construir a tabela de diferenças divididas

xk Ordem 0 Ordem 1 Ordem 2 Ordem 3


-1 0
1
0 1 0
2
1 3

1 2 2
5
2 7
Assim,o polinômio interpolador é dado por
p3 (x) = d0 + d1 (x − x0 ) + d2 (x − x0 )(x − x1 ) + d3 (x − x0 )(x − x1 )(x − x2 )
2
= (x + 1) + (x + 1)x(x − 1).
3

7.5.1 Outra demonstração para o polinômio de Newton


Sejam dados x0 < x1 < x2 < . . . < xn pontos distintos. O polinômio que interpola f nos pontos
(xi , f (xi )) é da forma
Xn
Pn (x) = di pi (x),
i=0
onde
p0 (x) = 1,
p1 (x) = (x − x0 ),
p2 (x) = (x − x0 )(x − x1 ),
... = ...
i−1
Y
pi (x) = (x − x0 )(x − 1) · · · (x − xi−1 ) = (x − xj ),
j=0
... = ...
n−1
Y
pn (x) = (x − x0 )(x − 1) · · · (x − xn−1 ) = (x − xj ).
j=0
116 CAPÍTULO 7. INTERPOLAÇÃO POLINOMIAL

Notemos que se k < i, então pi (xk ) = 0.


Substituindo os pontos no polinômio, obtemos

Pn (x0 ) = d0 p0 (x0 ) = y0 ,
Pn (x1 ) = d0 p0 (x1 ) + d1 p1 (x1 ) = y1 ,
Pn (x2 ) = d0 p0 (x2 ) + d1 p1 (x2 ) + d2 p2 (x2 ) = y2 ,
Pn (x3 ) = d0 p0 (x3 ) + d1 p1 (x3 ) + d2 p2 (x3 ) + d3 p3 (x3 ) = y3 ,
... = ...
Pn (xn ) = d0 p0 (xn ) + d1 p1 (xn ) + d2 p2 (x2 ) + · · · dn pn (xn ) = yn ,

Num sistema de equações lineares, temos


    
p0 (x0 ) 0 0 ... 0 d0 y0
 p0 (x1 ) p1 (x1 ) 0 ··· 0  d1   y1 
    
 p0 (x2 ) p1 (x2 ) p2 (x2 ) · · · 0  d2   y2 
  = 
 .. .. .. .. ..  ..   .. 
 . . . . .  .   . 
p0 (xn ) p1 (xn ) · · · · · · pn (xn ) dn yn

Por substituição direta e utilizando a definição de diferenças divididas obtemos que

d0 = y0
d1 = f [x0 , x1 ]
.. .
. = ..
di = f [x0 , x1 , . . . , xi ]
.. .
. = ..
dn = f [x0 , x1 , . . . , xn ].

Isto conclui a prova. 

7.6 Usando Maple: interpolação pelo método de Newton


O procedimento em Maple a seguir calcula a tabela das diferenças divididas e o polinômio
interpolador pelo método de Newton. Você entra com X e F Xin as duas listas, o número de
elementos n e a variável de saída x.

> restart:
> Newtondd:=proc(X,FXin,n) local FX,i,j,pol,mult;
FX:=FXin; for i from 1 to n-1
7.6. USANDO MAPLE: INTERPOLAÇÃO PELO MÉTODO DE NEWTON 117

do print(FX[i..n],‘ ordem‘,i-1);
for j from n by -1 to i+1
do FX[j] := (FX[j] - FX[j-1])/(X[j]-X[j-i]);
od; od; print(FX[n..n],‘ ordem‘,i-1);
pol:=FX[1]; mult:=1; for i from 2 to n
do mult:=mult*(x-X[i-1]);
pol:=pol+mult*FX[i]; od;
print(evalm(FX));print(pol); end:
##Exemplo
>Newtondd([0,1,2,3,4],[5,3,1,3,-3],5,x);

7.6.1 O método de Newton para pontos igualmente espaçados


Dados os pontos x0 < x1 < x2 < . . . < xn igualmente espaçados, isto é, xi+1 − xi = h, i =
0, 1, 2, . . . , n − 1, o polinômio interpolador dado pelo método de Newton assume uma forma
mais simples chamada de Newton-Gregory.
Definimos o operador diferença ordinária (adiantada) por

∆0 f (x) = f (x)
∆f (x) = f (x + h) − f (x)
∆2 f (x) = ∆(∆f (x))
.. .
. = ..
n
∆ f (x) = ∆(∆(n−1) f (x))

Lema 7.6.1 Para k ≥ 0 temos

∆k f (x0 )
f [x0 , x1 , . . . , xk ] = .
k!hk

Demonstração: A prova é por indução. Se k = 1, temos

f (x1 ) − f (x0 ) ∆f (x0 )


f [x0 , x1 ] = = .
x1 − x0 h

Agora assuma que o resultado é válido para k ≤ r, vamos provar que o resultado ainda vale
para r + 1.
118 CAPÍTULO 7. INTERPOLAÇÃO POLINOMIAL

Assim, segue que,


f [x1 , x2 , . . . , xr+1 ] − f [x0 , x1 , . . . , xr ]
f [x0 , x1 , . . . , xr+1 ] =
x − x0
 r r+1 
1 ∆ f (x1 ) ∆r f (x0 )
= −
(r + 1)h r!hr r!hr
r r
∆ f (x1 ) − ∆ f (x0 )
=
r!(r + 1)hhr
∆r+1 f (x0 )
= .
(r + 1)!hr+1
Isso conclui a prova do lema. 
x − x0
Dado x ∈ [x0 , xn ] seja s = . Segue que x − x0 = sh e portanto tem-se
h
x − xr = x − (x0 + rh) = (x − x0 ) − rh = sh − rh = (s − r)h.

Do lema acima, podemos concluir que, para pontos igualmente espaçados

d0 = f [x0 ]
∆f (x0 )
d1 = f [x0 , x1 ] =
h
∆2 f (x0 )
d2 = f [x0 , x1 , x2 ] =
2!h2
.. ..
. = .
∆k f (x0 )
dk = f [x0 , x1 , . . . , xk ] =
k!hk
.. ..
. = .
∆n f (x0 )
dn = f [x0 , x1 , . . . , xn ] =
n!hn
Substituindo no polinômio interpolador de Newton, obtemos
n
X ∆r f (x0 )
pn (s) = s(s − 1) · · · (s − (r − 1)) .
r=0
r!

Usando a notação
   
s s s(s − 1) · · · (s − (r − 1))
= 1, = ,r ≥ 1
0 r r!
o polinômio pode ser escrito como
n   n  
X s r
X s
pn (s) = ∆ f (x0 ) = f (x0 ) + ∆r f (x0 ).
r r
r=0 r=1
7.7. EXEMPLOS 119

Este é polinômio interpolador de Newton-Gregory.


x − x0
Podemos efetuar a mesma substituição, s = , na expressão do erro
h

f (n+1) (ξ)
En (x) = (x − x0 )(x − x1 ) · · · (x − xn )
(n + 1)!

para obter
f (n+1) (ξ)
En (s) = s(s − 1)(s − 2)(s − 3) · · · (s − n)hn+1 ,
(n + 1)!
onde ξ ∈ (0, n).

7.7 Exemplos

Construa a tabela de diferenças ordinárias dos seguintes pontos, onde f (x) = x.

xk 2 2.1 2.2 2.3 2.4


f (xk ) 1.414214 1.449138 1.483240 1.516575 1.549193

Use o polinômio interpolador na forma de Newton para aproximar 2.15 (com 6 casas decimais)
com um polinômio de:
(a) grau 1,
(b) grau 2,
(c) grau 3,
(d) grau 4.

xk ∆0 f ∆1 f ∆2 f ∆3 f ∆4 f
2.0 1.414214
0.034924
2.1 1.449138 −0.000822
0.034102 0.000055
2.2 1.483240 −0.000767 −0.000005
0.033335 0.00005
2.3 1.516575 −0.000717
0.032618
2.4 1.549193
120 CAPÍTULO 7. INTERPOLAÇÃO POLINOMIAL

x − x0
Chamando α = , da tabela temos que,
h
∆2 f (x0 ) ∆3 f (x0 )
p4 (α) = 1.414214 + α∆f (x0 ) + α(α − 1) + α(α − 1)(α − 2)
2! 3!
4
∆ f (x0 )
+α(α − 1)(α − 2)(α − 3) .
4!
2.15−2.0
Dado x = 2.15 temos que α = 0.1
= 1.5, assim temos sucessivamente:

p1 (α) = 1.414214 + α∆f (x0 ) = 1.414214 + α × 0.034924


= 1.414214 + 1.5 × 0.034924 ≈ 1.4666.

∆2 f (x0 )
p2 (α) = 1.414214 + α∆f (x0 ) + α(α − 1)
2!
0.000822
≈ 1.4666 − × 1.5 × 0.5 ≈ 1.466292.
2

∆2 f (x0 ) ∆3 f (x0 )
p3 (α) = 1.414214 + α∆f (x0 ) + α(α − 1) + α(α − 1)(α − 2)
2! 3!
1.5 × 0.5 × (−0.5) × 0.000055
= p2 (1.5) + ≈ 1.466288.
6
E finalmente,

p4 (α) ≈ 1.466288.

Comparando os valores obtidos com 2.15 ≈ 1.4662878 temos a seguinte tabela

grau k=1 k=2 k=3 k=4


pk (1.5) 1.4666 1.466292 1.466288 1.466288

| 2.15 − pk (1.5)| 0.3122 × 10−3 0.42 × 10−5 0.2 × 10−6 0.2 × 10−6

Agora vamos estimar os erros usando a expressão para o erro


1
E4 (x) ≤ max{|(x − x0 )(x − x1 )(x − x2 )(x − x3 )(x − x4 )f (5) (x); x ∈ [a, b]|}
(n + 1)!

ou na variável α
1
E4 (α) ≤ max{|α(α − 1)(α − 2)(α − 3)(α − 4)f (5) (α); α ∈ [0, 4]|},
(n + 1)!
7.8. O FENÔMENO RUNGE 121

x − x0
onde α = .
h √
As derivadas da função x são dadas por
1
f (1) (x) = 1/2 √ , f (2) (x) = −1/4 x−3/2 , f (3) (x) = 3/8 x−5/2
x
15 −7/2 (5) 105 −9/2
f (4) (x) = − x , f (x) = x
16 32
Para estimar os erros precisamos estudar os máximos das funções f (2) , f (3) , f (4) , f (5) , no intervalo
[2, 2.4]
Os valores máximos para os erros são (dez dígitos e arredondamento):

|E1 (x)| ≤ 0.11 × 10−3


|E2 (x)| ≤ 0.4 × 10−5
|E3 (x)| ≤ 0.2 × 10−6
|E4 (x)| ≤ 0.4 × 10−7

Uma análise dos gráficos pode ajudar nas majorações acima.

Observação 7.7.1 Para pontos igualmente espaçados, xj = x0 +jh, a expressão do erro envolve
funções do tipo
Ψn (x) = (x − x0 )(x − x1 )(x − x2 ) · · · (x − xn ).
2
No caso de n = 1, temos Ψ1 (x) = (x − x0 )(x − x1 ) cujo máximo no intervalo [x0 , x1 ] é h4 .
No

caso de n = 2, temos Ψ2 (x) = (x − x0 )(x − x1 )(x − x2 ) cujo máximo no intervalo [x0 , x2 ] é
2 3 h3
9
.
No caso de n = 3, temos Ψ3 (x) = (x − x0 )(x − x1 )(x − x2 )(x − x3 ) cujo máximo no intervalo
[x0 , x3 ] é h4 .

Exercício: Repita o exemplo acima com os pontos abaixo, onde f (x) = x exp(x) e estime o
erro de f (0.7) ≈ 1.409626895 (com pelo menos 6 casas decimais).

xk 0.2 0.4 0.6 0.8 1.0


f (xk ) 0.2442805516 0.5967298792 1.093271280 1.780432742 2.718281828

7.8 O Fenômeno Runge


Algumas observações devem ser feitas sobre interpolação polinomial. A primeira delas é que
em geral não melhoramos a precisão aumentando a quantidade de pontos ou nós e, portanto
aumentando o grau do polinômio interpolador. O que obtemos nesse caso é a melhora de precisão
na região central do intervalo, mas há perdas grandes na aproximação na região dos extremos
do intervalo. A esse fenômeno chamamos de “fenômeno Runge”: o erro é menor na zona central
122 CAPÍTULO 7. INTERPOLAÇÃO POLINOMIAL

do intervalo e maior nos extremos. Devido a esse fenômeno devemos escolher um intervalo em
que o ponto que queremos aproximar seja central.
A segunda observação é que não devemos usar o polinômio interpolador para aproximar valores
que estejam fora do intervalo de interpolação. A isso denominamos extrapolação.
1
Para ilustrar o fenômeno Runge, consideremos a função típica f (x) = e o intervalo
1 + 25x2
[−1, 1].

0.8

0.6

0.4

0.2

–1 –0.8 –0.6 –0.4 –0.2 0 0.2 0.4 0.6 0.8 1


x

1
Figura 7.2: gráfico de f (x) =
1 + 25x2

Tomemos, respectivamente 7 e 13 nós igualmente espaçados e os respectivos polinômios inter-


poladores de grau 6 e grau 12 que interpola f nos pontos (xi , f (xi )). Vemos que a medida que
aumentamos o grau do polinômio, o erro aumenta nas regiões dos extremos do intervalo. Repare
o comportamento do polinomio interpolador na região dos extremos do intervalo.
Para evitar o fenômeno Runge podemos considerar outro enfoque como por exemplo, considerar
pontos não igualmente espaçados juntamente com polinômios ortogonais, splines ou aproximação
por mínimos quadrados.
Exercício 7.8.1

1. Use polinômio apropriado de Lagrange de graus 1, 2 e três para aproximar f (8.4) se

x 8.1 8.3 8.6 8.7


f (x) 16.94410 17.56492 18.50515 18.8209

2. Use polinômio apropriado de Lagrange de graus 1, 2 e três para aproximar f (0.25) se


7.8. O FENÔMENO RUNGE 123

1
x
–1 –0.8 –0.6 –0.4 –0.2 0.2 0.4 0.6 0.8 1
0.8 0

0.6
–1

0.4

–2
0.2

–1 –0.8 –0.6 –0.4 –0.2 0 0.2 0.4 0.6 0.8 1


–3

Figura 7.3: grau 6 Figura 7.4: grau 12

x 0.1 0.2 0.3 0.4


f (x) 0.62049958 -0.28398668 0.00660095 0.24842440

3. Os dados dos dois exercícios anteriores foram gerados pelas funções f (x) = x ln(x) e
f (x) = x cos(x) − 2x2 + 3x − 1, respectivamente. Use a fórmula do erro para encontrar
uma limitação.

4. Use polinômio interpolador dado pelo método de Newton de graus 1, 2 e três para
aproximar f (−1/3) se

x -0.75 -0.5 -0.25 0.0


f (x) -0.07181250 -0.02475000 0.33493750 1.10100000

5. Use polinômio interpolador dado pelo método de Newton de graus 1, 2 e três para
aproximar f (0.25) se

x 0.1 0.2 0.3 0.4


f (x) -0.62049958 -0.28398668 0.00660095 0.24842440

6. Construa o polinômio interpolador de grau 4 para os pontos não igualmente espaçados

x 0 0.1 0.3 0.6 1.0


f (x) -6.00000 -5.89843 -5.65014 -5.17788 -4.28172

Acrescente o par (1.1; −3.99583) na tabela e contrua o polinômio de grau 5.

7. Use o método de Newton para construir o polinômio interpolador de grau 4 para os


pontos (xk , f (xk ))
124 CAPÍTULO 7. INTERPOLAÇÃO POLINOMIAL

x 0 0.5 1.0 1.5 2.0


f (x) 1.00 1.649 2.718 4.482 7.389

Use este polinômio para estimar f (1.75).

8. Use o método de Newton para construir o polinômio interpolador de grau 4 para os


pontos (xk , f (xk ))

x 0 0.5 1.0 1.5 2.0


f (x) 1.320 1.65 2.34 3.47 4.56

Use este polinômio para estimar f (1.85).

9. Use o método de Newton para construir o polinômio interpolador de grau 4 para os


pontos (xk , f (xk ))

x 0 0.5 1.0 1.5 2.0


f (x) 1.00 1.649 2.718 4.482 7.389

Use este polinômio para estimar f (1.75).


Z 2
Avalie a integral f (x)dx, para isso substitua f pelo polinômio acima.
0

7.9 Resumo do capítulo


Neste capítulo provamos que dados n+1 pares de pontos (xi , yi ) com distintos xi , existe um
único polinômio interpolador passando por esses pontos. Apresentamos o método de Lagrange
e o método de Newton para o determinar o polinômio interpolador. Apresentamos também
expressões para o erro na interpolação e estudamos o efeito Runge.

Você também pode gostar