Cálculo Numérico
Universidade Federal do Pará
Dispensam o confinamento da raiz: partem de uma (ou duas) estimativa inicial e iteram por uma fórmula de recorrência.
Reescreve-se \(f(x)=0\) como \(x = g(x)\) e itera-se \(x_{k+1} = g(x_k)\).
Convergência local se \(|g'(x^{*})| < 1\).
Quanto menor \(|g'(x^{*})|\), mais rápida a convergência (linear).
A escolha de \(g\) não é única e determina a convergência.
Aproxima \(f\) pela reta tangente em \(x_k\):
\[x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)}\]
Convergência quadrática próximo da raiz: o número de dígitos corretos dobra a cada passo.
Important
Falha se \(f'(x_k) \approx 0\) ou se a estimativa inicial estiver distante da raiz.
Substitui a derivada por uma diferença finita entre duas iterações:
\[x_{k+1} = x_k - f(x_k)\,\frac{x_k - x_{k-1}}{f(x_k) - f(x_{k-1})}\]
Tip
Útil quando a derivada é cara ou indisponível analiticamente.
import numpy as np
from scipy.optimize import newton
f = lambda x: x**3 - 2*x - 5
df = lambda x: 3*x**2 - 2
# Newton (com derivada)
r1 = newton(f, x0=2.0, fprime=df, tol=1e-12)
# Secante (sem derivada): omite-se fprime
r2 = newton(f, x0=2.0, x1=3.0, tol=1e-12)
print(r1, r2) # 2.0945514815423265 (ambos)Para \(\mathbf{F}(\mathbf{x}) = \mathbf{0}\) com \(\mathbf{x}\in\mathbb{R}^n\), o método de Newton usa a matriz Jacobiana:
\[\mathbf{x}_{k+1} = \mathbf{x}_k - J(\mathbf{x}_k)^{-1}\,\mathbf{F}(\mathbf{x}_k), \qquad J_{ij} = \frac{\partial F_i}{\partial x_j}\]
fsolve e diferentes estimativas iniciais.