| | | |

Matemática numérica I

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

5.3 Diferenças divididas de Newton

Dado um conjunto de pontos {(xi,yi)}i=1n, o Método das Diferenças Divididas de Newton444Isaac Newton, 1642 - 1727, matemático, físico, astrônomo, teólogo e autor inglês. Fonte: Wikipédia: Isaac Newton. busca determinar o polinômio interpolador da forma

p⁢(x)=a1+a2⁢(x−x1)
+a3⁢(x−x1)⁢(x−x2)
+⋯+an⁢(x−x1)⁢⋯⁢(x−xn−1). (5.33)

Por uma abordagem direta, temos que p⁢(xi)=yi, i=1,2,…,n, o que nos leva ao seguinte sistema triangular inferior

a1=y1, (5.34)
a1+a2⁢(x2−x1)=y2, (5.35)
a1+a2⁢(x3−x1)+a3⁢(x3−x1)⁢(x3−x2)=y3, (5.36)
⋮
a1+a2⁢(xn−x1)+⋯+an⁢(xn−x1)⁢⋯⁢(xn−xn−1)=yn. (5.37)

Entretanto, existe uma forma mais eficiente de se determinar os coeficientes ai, i=1,2,…,n.

Denotemos por p⁢[xj,xj+1,…,xk]⁢(x) o polinômio interpolador do conjunto de pontos {(xi,yi)}i=jk. Então, temos a seguinte recursão

p⁢[xj]=yj, (5.38)

para j=1,2,…,n e

p⁢[xj,xj+1,…,xk]⁢(x) (5.39)
=(x−xj)⁢p⁢[xj+1,…,xk]⁢(x)−(x−xk)⁢p⁢[xj,…,xk−1]⁢(x)xk−xj, (5.40)

para todo n≥k>j≥1.

De fato, (5.38) é trivial. Agora, denotando por r⁢(x) o lado direito da equação (5.40), vemos que r⁢(x) tem grau menor ou igual a k−j, o mesmo de p⁢[xj,xj+1,…,xk]⁢(x). Desta forma, para mostrar (5.40), basta verificarmos que r⁢(x) interpola o conjunto de pontos {(xi,yi)}i=jk. O que de fato ocorre

r⁢(xj)=−(xj−xk)⁢yjxk−xj=yj, (5.41)
r⁢(xl)=(xl−xj)⁢yl−(xl−xk)⁢ylxk−xj=yl,
l=j+1,…,k−1, (5.42)
r⁢(xk)=(xk−xj)⁢ykxk−xj=yk. (5.43)

Logo, pela unicidade do polinômio interpolador555Consulte o E.5.3.5, temos demonstrado (5.40).

Observando que o polinômio interpolador p⁢(x) é igual a p⁢[x1,…,xn]⁢(x), temos que (5.38)-(5.40) nos fornece uma forma de computar p⁢(x) de forma recursiva. Além disso, observemos que p⁢[xj,…,xk−1]⁢(x) e p⁢[xj,…,xk] diferem por um polinômio de grau k−j com zeros xj, xj+1, …, xk−1. Logo, temos

p⁢[xj,…,xk]⁢(x)=p⁢[xj,…,xk−1]⁢(x)
+f⁢[xj,…,xk]⁢(x−xj)⁢⋯⁢(x−xk−1), (5.44)

onde f⁢[xj,…,xk] são coeficientes a determinar. Ainda, tomando p⁢[xi]=f⁢[xi], temos

p⁢[xj,…,xk]⁢(x)=f⁢[xj]+f⁢[xj,xj+1]⁢(x−xj)
+f⁢[xj,…,xk]⁢(x−xj)⁢⋯⁢(x−xk−1). (5.45)

Por fim, a recursão (5.38)-(5.40) nos mostra que as Diferenças Divididas Newton podem ser obtidas de

f⁢[xj]=yj,j=1,2,…,n, (5.46)
f⁢[xj,…,xk]=f⁢[xj+1,…,xk]−f⁢[xj,…,xk−1]xk−xj, (5.47)

para todo n≥k>j≥1. E, temos o polinômio interpolador do conjunto de pontos {(xi,yi)}i=1n dado por

p⁢[x1,…,xn]⁢(x)=f⁢[x1]+f⁢[x1,x2]⁢(x−x1)
+⋯+f⁢[x1,…,xn]⁢(x−x1)⁢⋯⁢(x−xn). (5.48)
Observação 5.3.1.

A recursão (5.46)–(5.47) pode ser adequadamente organizada em uma matriz da forma

[𝒇⁢[𝒙𝟏]0…0f⁢[x2]𝒇⁢[𝒙𝟏,𝒙𝟐]…0f⁢[x3]f⁢[x2,x3]…0⋮⋮…⋮f⁢[xn]f⁢[xn−1,xn]…𝒇⁢[𝒙𝟏,…,𝒙𝒏]] (5.49)

onde os elementos da diagonal correspondem aos coeficientes do polinômio interpolador na forma (5.48).

Exemplo 5.3.1.

Consideramos o problema de encontrar o polinômio interpolador do conjunto de pontos {(−1,−1),(0,1),(1,1/2)}. Usando o Método das Diferenças Divididas de Newton, escrevemos o polinômio na forma

p⁢(x)=f⁢[x1]+f⁢[x1,x2]⁢(x−x1)+f⁢[x1,x2,x3]⁢(x−x1)⁢(x−x2). (5.50)

Então, computamos seus coeficientes pela recursão (5.46)–(5.47). Ou seja, temos

f⁢[x1]=−1, (5.51)
f⁢[x2]=1, (5.52)
f⁢[x3]=1/2. (5.53)

Daí, segue

f⁢[x1,x2]=f⁢[x2]−f⁢[x1]x2−x1=2 (5.54)
f⁢[x2,x3]=f⁢[x3]−f⁢[x2]x3−x2=−12 (5.55)

e, por fim, que

f⁢[x1,x2,x3]=f⁢[x2,x3]−f⁢[x1,x2]x3−x1 (5.57)
=−1.25. (5.58)

Logo, o polinômio interpolador é

p⁢(x)=0.5+2⁢(x+1)−1.25⁢(x+1)⁢(x−1), (5.59)

ou, equivalentemente,

p⁢(x)=−1.25⁢x2+0.75⁢x+1. (5.60)
1import numpy as np
2
3def interpDDF(x, y):
4 n = x.size
5 M = np.empty((n,n))
6 M[:,0] = y
7 for j in range(1,n):
8 for i in range(j,n):
9 M[i,j] = (M[i,j-1] - M[i-1,j-1]) \
10 / (x[i]-x[i-j])
11 return np.diag(M)
12
13def poliDDF(x, p, xpts):
14 n = p.size
15 pval = p[0]
16 aux = 1.
17 for i in range(1,n):
18 aux *= (x-xpts[i-1])
19 pval += p[i]*aux
20 return pval
21
22xpts = np.array([-1., 0, 1])
23ypts = np.array([-1., 1, 1/2])
24p = interpDDF(xpts, ypts)
25print(poliDDF(xpts, p, xpts))

5.3.1 Exercícios

E. 5.3.1.

Use o Método das Diferenças Divididas de Newton para obter o polinômio interpolador do conjunto de pontos {(−1,−1),(−0.5,1),(1,2)}.


−1,6¯⁢x2+1.5⁢x+2.1⁢6¯

E. 5.3.2.

Use o Método das Diferenças Divididas de Newton para obter o polinômio interpolador do conjunto de pontos {(−1,−1),(0,1),(1,1/2),(2,1)}.


0.58⁢3¯⁢x3−1.25⁢x2+0.1⁢6¯⁢x+1.

E. 5.3.3.

Use o Método das Diferenças Divididas de Newton para obter o polinômio interpolador do conjunto de pontos {(−1,−1),(0,1),(1,1/2),(2,1),(2.5,1)}.


−0.26190476⁢x4⁢1.10714286⁢x3−0.98809524⁢x2−0.35714286⁢x⁢1.

E. 5.3.4.

Use o método das diferenças divididas de Newton para encontrar o polinômio interpolador que aproxima a função f⁢(x)=ex pelos pontos x1=0, x2=1, x3=1.5 e x4=2.


p⁢(x)=0.54⁢x3−0.15⁢x2+1.3⁢x+1.

Análise numérica

E. 5.3.5.

Dado um conjunto de pontos distintos {(xi,yi)}i=1n, mostre que é único o polinômio interpolador do conjunto.


Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Pedro H A Konzen
| | | |