O método de Newton-Raphson é utilizado para a Resolução de equações não lineares. Esse método é resultado da aplicação do Teorema de Taylor com o Método do Ponto Fixo, resultando em um método que converge mais rápido para a solução, porém com mais condições de convergência.
Para este método, escreve-se a função da seguinte maneira:
Sendo assim, é gerada uma sequência na forma:
Assim como no método do ponto fixo, a sequência converge para o valor da solução .
Note que é assumido que para todos os componentes da sequência gerada. Sendo assim, a função tem que ter uma Derivada contínua e esta derivada não pode se anular no intervalo de busca da solução. Além disso, por conta do Teorema de Taylor, o ponto inicial deve estar próximo da solução para que a convergência seja garantida.
import numpy as np
import math
def f(x):
return x * np.sin(x)
def df(x):
return np.sin(x) + x * np.cos(x)
p0 = 0.9
list = [p0]
i = 1
max = 8
while i <= max:
pn = list[i - 1]
pnext = pn - (f(pn) / df(pn))
list.append(pnext)
print("Iteração %d: %.6f" % (i, pnext))
# print("|p%d - p%d| = %.5f" % (i, i - 1, math.fabs(pnext - pn)))
if list[i] == list[i - 1]:
break
i = i + 1