| | | |

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(xx1)
+a3(xx1)(xx2)
++an(xx1)(xxn1). (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(x2x1)=y2, (5.35)
a1+a2(x3x1)+a3(x3x1)(x3x2)=y3, (5.36)
a1+a2(xnx1)++an(xnx1)(xnxn1)=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)
=(xxj)p[xj+1,,xk](x)(xxk)p[xj,,xk1](x)xkxj, (5.40)

para todo nk>j1.

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 kj, 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)=(xjxk)yjxkxj=yj, (5.41)
r(xl)=(xlxj)yl(xlxk)ylxkxj=yl,
l=j+1,,k1, (5.42)
r(xk)=(xkxj)ykxkxj=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,,xk1](x) e p[xj,,xk] diferem por um polinômio de grau kj com zeros xj, xj+1, …, xk1. Logo, temos

p[xj,,xk](x)=p[xj,,xk1](x)
+f[xj,,xk](xxj)(xxk1), (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](xxj)
+f[xj,,xk](xxj)(xxk1). (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,,xk1]xkxj, (5.47)

para todo nk>j1. 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](xx1)
++f[x1,,xn](xx1)(xxn). (5.48)
Observação 5.3.1.

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

[𝒇[𝒙𝟏]00f[x2]𝒇[𝒙𝟏,𝒙𝟐]0f[x3]f[x2,x3]0f[xn]f[xn1,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](xx1)+f[x1,x2,x3](xx1)(xx2). (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]x2x1=2 (5.54)
f[x2,x3]=f[x3]f[x2]x3x2=12 (5.55)

e, por fim, que

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

Logo, o polinômio interpolador é

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

ou, equivalentemente,

p(x)=1.25x2+0.75x+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.5x+2.16¯

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.583¯x31.25x2+0.16¯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.26190476x41.10714286x30.98809524x20.35714286x1.

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.54x30.15x2+1.3x+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
| | | |