No post sobre o Método do Ponto Fixo terminei com a observação de que a vantagem real do MPF não é velocidade, mas sim que ele serve de base para métodos mais rápidos, por exemplo, o método de newton.

A ideia central do MPF é construir uma função de iteração φ(x)\varphi(x) tal que ∣φ′(ξ)∣<1|\varphi'(\xi)| < 1 na vizinhança da raiz. Quanto menor ∣φ′(ξ)∣|\varphi'(\xi)|, mais rápida a convergência. Então o que acontece se a gente escolher φ\varphi de forma que φ′(ξ)=0\varphi'(\xi) = 0 exatamente?

Derivando a fórmula

Toda função de iteração válida tem a forma

φ(x)=x+A(x)⋅f(x)\varphi(x) = x + A(x) \cdot f(x).

Derivando:

φ′(x)=1+A′(x)f(x)+A(x)f′(x)\varphi'(x) = 1 + A'(x)f(x) + A(x)f'(x)

Na raiz ξ\xi, f(ξ)=0f(\xi) = 0, então

φ′(ξ)=A(ξ)f′(ξ)+1\varphi'(\xi) = A(\xi)f'(\xi) + 1.

Para que φ′(ξ)=0\varphi'(\xi) = 0:

A(ξ)f′(ξ)+1=0  ⟹  A(ξ)=−1f′(ξ)A(\xi)f'(\xi) + 1 = 0 \implies A(\xi) = -\frac{1}{f'(\xi)}.

Assumindo essa forma para todo xx, ou seja, A(x)=−1/f′(x)A(x) = -1/f'(x), e substituindo:

φ(x)=x−f(x)f′(x)\varphi(x) = x - \frac{f(x)}{f'(x)}

Essa é a função de iteração do Método de Newton. A relação de recorrência fica:

xk+1=xk−f(xk)f′(xk),k=0,1,2,…x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)}, \quad k = 0, 1, 2, \ldots

A interpretação geométrica

Tem uma forma mais intuitiva de chegar na mesma fórmula. A reta tangente à curva f(x)f(x) no ponto (xk,f(xk))(x_k, f(x_k)) é:

rk(x)=f(xk)+f′(xk)(x−xk)r_k(x) = f(x_k) + f'(x_k)(x - x_k)

O zero dessa reta, ou seja, onde ela cruza o eixo xx:

rk(x)=0  ⟹  x=xk−f(xk)f′(xk)r_k(x) = 0 \implies x = x_k - \frac{f(x_k)}{f'(x_k)}

Que é exatamente xk+1x_{k+1}. Newton está aproximando a função por sua tangente a cada iteração e usando o zero dessa reta como próxima estimativa. Se a função for “bem comportada” perto da raiz, a tangente é uma boa aproximação local e o método avança rápido.

-0.400.422.53x1x0
x0 = 2.00000000x1 = 2.54117607f(x0) = -3.979e-1erro relativo = 2.13e-1
iteração 0 de 4
Método de Newton para f(x) = x·log10(x) − 1. Ponto inicial x₀ = 2, precisão ε = 10−5.━ f(x)● ponto atual xₖ┄ reta tangente| xₖ₊₁ (zero da tangente)┊ raiz ≈ 2.50618

Veja como as iterações saltam direto para perto da raiz. A partir do segundo passo, já está na 5ª casa decimal.

Convergência quadrática

O que faz Newton especial é a ordem de convergência. Para o MPF, em geral, a ordem é linear (p=1p = 1): o erro cai por um fator constante a cada iteração. Para Newton, como φ′(ξ)=0\varphi'(\xi) = 0, a análise da convergência mostra que o erro satisfaz:

∣xk+1−ξ∣≈∣f′′(ξ)∣2∣f′(ξ)∣⋅∣xk−ξ∣2|x_{k+1} - \xi| \approx \frac{|f''(\xi)|}{2|f'(\xi)|} \cdot |x_k - \xi|^2

Ordem p=2p = 2: o erro na iteração seguinte é proporcional ao quadrado do erro atual. Na prática, isso significa que o número de dígitos corretos dobra a cada iteração.

A derivada de φ\varphi do método de Newton é φ′(x)=f(x)f′′(x)/[f′(x)]2\varphi'(x) = f(x)f''(x)/[f'(x)]^2. Na raiz, f(ξ)=0f(\xi) = 0, logo φ′(ξ)=0\varphi'(\xi) = 0, que é justamente o que queríamos quando derivamos a fórmula.

Implementando em Python

newton.py
1
import math
2
3
def f(x):
4
return x * math.log10(x) - 1
5
6
def df(x):
7
return math.log10(x) + 1 / math.log(10)
8
9
def newton(f, df, x0, eps=1e-5):
10
x = x0
11
k = 0
12
while True:
13
fx = f(x)
14
dfx = df(x)
15
x_novo = x - fx / dfx
16
erro = abs(x_novo - x) / abs(x_novo)
17
k += 1
18
print(f"Iteração {k:2d}: x = {x_novo:.8f}, f(x) = {f(x_novo):.2e}, erro = {erro:.2e}")
19
if erro < eps:
20
return x_novo
21
x = x_novo
22
23
raiz = newton(f, df, x0=2)
24
print(f"\nRaiz encontrada: {raiz:.6f}")

Rodando para a mesma f(x)=x⋅log⁡10(x)−1f(x) = x \cdot \log_{10}(x) - 1 do post da bissecção, a partir de x0=2x_0 = 2:

1
Iteração 1: x = 2.54117607, f(x) = 2.93e-02, erro = 2.13e-01
2
Iteração 2: x = 2.50630938, f(x) = 1.04e-04, erro = 1.39e-02
3
Iteração 3: x = 2.50618415, f(x) = 1.36e-09, erro = 5.00e-05
4
Iteração 4: x = 2.50618415, f(x) = 0.00e+00, erro = 6.51e-10
5
6
Raiz encontrada: 2.506184

4 iterações para ε=10−5\varepsilon = 10^{-5}. A bissecção precisou de 17 para o mesmo resultado.

O padrão de convergência quadrática aparece nas colunas de erro: de 1.39e-02 para 1.06e-04 é uma queda de 10410^4, não 10210^2 como seria no caso linear, porque o erro já está pequeno o suficiente para o termo quadrático dominar.

A influência do chute inicial

Para ver na prática o que o teorema diz, considere f(x)=x3−x−1f(x) = x^3 - x - 1, com f′(x)=3x2−1f'(x) = 3x^2 - 1.

a) Chute inicial x1=1x_1 = 1

kkxkx_kf(xk)f(x_k)f′(xk)f'(x_k)xk+1x_{k+1}
11.000000−1.0000002.0000001.500000
21.5000000.8750005.7500001.347826
31.3478260.1006814.4499051.325200
41.3252000.0020574.2684631.324718
51.324718≈ 04.2646341.324718

Raiz x≈1,324718x \approx 1{,}324718 com 6 casas decimais, convergida em 5 iterações.

b) Chute inicial x1=0,6x_1 = 0{,}6

A derivada f′(x)=3x2−1f'(x) = 3x^2 - 1 se anula em x=1/3≈0,577x = 1/\sqrt{3} \approx 0{,}577. O ponto x1=0,6x_1 = 0{,}6 está exatamente nessa vizinhança crítica:

f(0,6)=−1,384,f′(0,6)=0,08f(0{,}6) = -1{,}384, \quad f'(0{,}6) = 0{,}08
x2=0,6−−1,3840,08≈17,9x_2 = 0{,}6 - \frac{-1{,}384}{0{,}08} \approx 17{,}9

A derivada quase nula faz a reta tangente ficar quase horizontal, disparando x2x_2 para longe da raiz. O método não diverge, ele encontra a raiz, mas leva 12 iterações para chegar lá, contra 5 do chute x1=1x_1 = 1:

kkxkx_kf(xk)f(x_k)
10.600000−1.3840
217.9000005716.44
311.9468021692.17
47.985520500.24
55.356909147.37
63.62499643.01
72.50558912.22
81.8201293.210
91.4610440.658
101.3393230.063
111.3249130.000831
121.324718≈ 0

Desvantagens

O método exige f′(xk)≠0f'(x_k) \neq 0 em todo passo. Se a derivada for zero ou muito próxima de zero, a divisão explode e o método diverge.

A convergência também não é garantida globalmente. O teorema diz que existe um intervalo Iˉ\bar{I} em torno de ξ\xi tal que, para qualquer x0∈Iˉx_0 \in \bar{I}, o método convergel, mas não especifica o tamanho desse intervalo. Em funções com muitos zeros ou regiões planas, um chute inicial ruim pode levar o método para longe da raiz que você quer encontrar.

Para esses casos, a estratégia comum é usar a bissecção primeiro para isolar a raiz num intervalo pequeno, e então entregar esse intervalo para Newton refinar rapidamente.

Próximo: Método da Secante