O Método de Newton tem convergência quadrática, mas exige a derivada f(x)f'(x) em todo passo e às vezes calculá-la é difícil. O Método da Secante resolve isso.

A ideia é: em vez de usar a tangente exata em xkx_k, aproxima-se f(xk)f'(x_k) pelo quociente de diferenças entre os dois últimos pontos:

f(xk)f(xk)f(xk1)xkxk1f'(x_k) \approx \frac{f(x_k) - f(x_{k-1})}{x_k - x_{k-1}}

Substituindo isso na fórmula de Newton:

xk+1=xkf(xk)f(xk)f(xk1)xkxk1=xkf(xk)xkxk1f(xk)f(xk1)x_{k+1} = x_k - \frac{f(x_k)}{\dfrac{f(x_k) - f(x_{k-1})}{x_k - x_{k-1}}} = x_k - f(x_k) \cdot \frac{x_k - x_{k-1}}{f(x_k) - f(x_{k-1})}

Essa é a relação de recorrência do Método da Secante. Para iniciá-la, são necessários dois pontos iniciais x0x_0 e x1x_1, só dois chutes próximos o suficiente da raiz.

A interpretação geométrica

Newton usa a reta tangente em um único ponto. A Secante usa a reta que passa pelos dois pontos mais recentes da sequência.

Dados (xk1,f(xk1))(x_{k-1}, f(x_{k-1})) e (xk,f(xk))(x_k, f(x_k)), a reta que passa pelos dois é uma secante à curva f(x)f(x). O zero dessa reta é xk+1x_{k+1}.

À medida que xk1x_{k-1} e xkx_k se aproximam da raiz, a secante se aproxima da tangente. O método converge pelo mesmo motivo que Newton, mas um passo atrás.

Método da Secante - f(x) = x·log10(x) − 1
Pontos iniciais x₀ = 2, x₁ = 3 · precisão ε = 10−5
-0.400.422.53x2x0x1
x0 (anterior)
2.00000000
x1 (atual)
3.00000000
x2 (próximo)
2.47984830
erro relativo
2.10e-1
Iteração 1 / 5
f(x) xk−1 (anterior) x_k (atual) reta secante| x_k+1 (zero da secante) raiz real ≈ 2.50618

Note como a primeira secante, entre x0=2x_0 = 2 e x1=3x_1 = 3, já aponta para perto da raiz. A partir daí, os dois pontos ficam cada vez mais próximos e a secante se estabiliza.

Implementando em Python

secante.py
1
import math
2
3
def f(x):
4
return x * math.log10(x) - 1
5
6
def secante(f, x0, x1, eps=1e-5):
7
k = 0
8
while True:
9
fx0, fx1 = f(x0), f(x1)
10
x2 = x1 - fx1 * (x1 - x0) / (fx1 - fx0)
11
erro = abs(x2 - x1) / abs(x2)
12
k += 1
13
print(f"Iteração {k:2d}: x = {x2:.8f}, f(x) = {f(x2):.2e}, erro = {erro:.2e}")
14
if erro < eps:
15
return x2
16
x0, x1 = x1, x2
17
18
raiz = secante(f, x0=2, x1=3)
19
print(f"\nRaiz encontrada: {raiz:.6f}")

Rodando com x0=2x_0 = 2, x1=3x_1 = 3:

1
Iteração 1: x = 2.47984830, f(x) = -2.19e-02, erro = 2.10e-01
2
Iteração 2: x = 2.50496429, f(x) = -1.02e-03, erro = 1.00e-02
3
Iteração 3: x = 2.50618751, f(x) = 2.80e-06, erro = 4.88e-04
4
Iteração 4: x = 2.50618415, f(x) = -3.55e-10, erro = 1.34e-06
5
6
Raiz encontrada: 2.506184

5 iterações para ε=105\varepsilon = 10^{-5}. Mais do que Newton (4), mas bem menos do que a bissecção (17). E sem precisar calcular nenhuma derivada.

Convergência superlinear

A ordem de convergência do Método da Secante é p=1+521,618p = \frac{1 + \sqrt{5}}{2} \approx 1{,}618. Não é linear (p=1p = 1) como a bissecção, nem quadrática (p=2p = 2) como Newton, mas fica no meio termo.

Esse valor sai da análise de como o erro se propaga quando se aproxima ff' pelo quociente de diferenças. A demonstração usa uma equação de recorrência que resulta naturalmente na razão áurea como solução.