Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ecuaciones
Método de Newton-Raphson
𝑥𝑘+1 − 𝑥𝑘 2
′
𝑓 𝑥𝑘+1 = 𝑓 𝑥𝑘 + 𝑓 𝑥𝑘 𝑥𝑘+1 − 𝑥𝑘 + 𝑓" 𝑥𝑘 +⋯
2!
𝑓 𝑥𝑘+1 = 𝑓 𝑥𝑘 + 𝑓 ′ 𝑥𝑘 𝑥𝑘+1 − 𝑥𝑘 = 0
𝑓 𝑥𝑘
𝑥𝑘+1 = 𝑥𝑘 − ′
𝑓 𝑥𝑘
𝑓 ′ 𝑥𝑘 ≠ 0
Método de Newton-Raphson
Interpretación geométrica:
𝑓 𝑥𝑘
𝑥𝑘+1 = 𝑥𝑘 − ′
𝑓 𝑥𝑘
Algoritmo preliminar del método de Newton-Raphson
k=0
Evaluar fx=f(x0)
While(fx≠0)
Evaluar dfx=f’(xk)
IF(dfx=0) → Error: pendiente cero encontrada en xk
xk+1 = xk - fx/dfx
k = k+1
Evaluar fx=f(xk)
End
→ Solución en xk
Método de Newton-Raphson
Dificultades del método
Tomando en cuenta los errores aritméticos y las posibles fallas, se obtiene una versión
práctica del algoritmo. Las condiciones son:
Evaluar fx=f(x0)
IF(|fx|<e1) → Solución en x0
For(k=0 to MAXIT, step 1)
Evaluar dfx=f’(xk)
IF(|dfx|<EPS) → Error: pendiente cero encontrada en xk
xk+1 = xk - fx/dfx
Evaluar fx=f(xk+1)
IF(|fx|<e1) → Solución en xk
IF(|xk+1-xk|/max(|xk+1|,|xk|)<e2) → Algoritmo estancado
End
→ Número máximo de iteraciones alcanzado
Empleando derivadas numéricas hacia adelante, el algoritmo de Newton-Raphson se
puede formular de la siguiente manera:
Evaluar fx=f(x0)
IF(|fx|<e1) → Solución en x0
For(k=0 to MAXIT, step 1)
Evaluar dfx = [f(xk + h)-fx]/h
IF(|dfx|<EPS) → Error: pendiente cero encontrada en xk
xk+1 = xk - fx/dfx
Evaluar fx=f(xk+1)
IF(|fx|<e1) → Solución en xk
IF(|xk+1-xk|/max(|xk+1|,|xk|)<e2) → Algoritmo estancado
End
→ Número máximo de iteraciones alcanzado
La gran ventaja del método, es que tiene convergencia cuadrática cuando se está
cerca de la raíz.
Excepto en los casos en que f(x) es tangente al eje de las abscisas en el valor de la raíz,
ya que en dicho punto tanto f(x) como f´(x) son nulas.
Método Secante
𝑓 𝑥𝑘
𝑥𝑘+1 = 𝑥𝑘 −
𝑚𝑘
𝑓 𝑥𝑘 − 𝑓 𝑥𝑘−1
𝑚𝑘 =
𝑥𝑘 − 𝑥𝑘−1
Método Secante
Interpretación geométrica:
𝑓 𝑥𝑘
𝑥𝑘+1 = 𝑥𝑘 −
𝑚𝑘
𝑓 𝑥𝑘 − 𝑓 𝑥𝑘−1
𝑚𝑘 =
𝑥𝑘 − 𝑥𝑘−1
Algoritmo práctico del método secante
Evaluar fx=f(x0)
IF(|fx1|<e1) → Solución en x0
x1=x0+h
Evaluar fx1=f(x1)
For(k=1 to MAXIT, step 1)
Evaluar mk=(fx1-fx)/(xk-xk-1)
IF(|mk|<EPS) → Error: pendiente cero encontrada en xk
xk+1 = xk – fx1/mk
fx = fx1
Evaluar fx1=f(xk+1)
IF(|fx1|<e1) → Solución en xk+1
IF(|xk+1-xk|/max(|xk+1|,|xk|)<e2) → Algoritmo estancado
End
→ Número máximo de iteraciones alcanzado
Algoritmos modificados
Evaluar fx=f(x0)
IF(|fx|<e1) → Solución en x0
For(k=0 to MAXIT, step 1)
Evaluar dfx = [f(xk + h)-fx]/h
IF(|dfx|<EPS) → Error: pendiente cero encontrada en xk
xk+1 = xk - fx/dfx
Evaluar fx1=f(xk+1)
While(|fx1|≥|fx|)
xk+1 = (xk+1 + xk )/2
Evaluar fx1=f(xk+1)
End
fx = fx1
IF(|fx|<e1) → Solución en xk
IF(|xk+1-xk|/max(|xk+1|,|xk|)<e2) → Algoritmo estancado
End
→ Número máximo de iteraciones alcanzado
Algoritmo secante con backtracking
Evaluar fx=f(x0)
IF(|fx1|<e1) → Solución en x0
x1=x0+h
Evaluar fx1=f(x1)
For(k=1 to MAXIT, step 1)
Evaluar mk=(fx1-fx)/(xk-xk-1)
IF(|mk|<EPS) → Error: pendiente cero encontrada en xk
xk+1 = xk – fx1/mk
fx = fx1
Evaluar fx1=f(xk+1)
While(|fx1|≥|fx|)
xk+1 = (xk+1 + xk )/2
Evaluar fx1=f(xk+1)
End
IF(|fx1|<e1) → Solución en xk+1
IF(|xk+1-xk|/max(|xk+1|,|xk|)<e2) → Algoritmo estancado
End
→ Número máximo de iteraciones alcanzado
Para medir la eficiencia de los métodos se debe tomar en cuenta lo siguiente,
suponiendo que los algoritmos realizan en total k iteraciones:
2
3. Resolver 3𝑒 2 cos 𝑥 sin(2𝑥 − 1)
Otras modificaciones
Algunas versiones del método de Newton utilizan el mismo valor de pendiente durante un cierto
número fijo de iteraciones (normalmente pequeño), lo que puede reducir el número total de
evaluaciones de la función
Evaluar fx=f(x0)
IF(|fx|<e1) → Solución en x0
For(k=0 to MAXIT, step 1)
IF(k%P=0)
Evaluar dfx = [f(xk + h)-fx]/h
End IF
IF(|dfx|<EPS) → Error: pendiente cero encontrada en xk
xk+1 = xk - fx/dfx
Evaluar fx=f(xk+1)
IF(|fx|<e1) → Solución en xk
IF(|xk+1-xk|/max(|xk+1|,|xk|)<e2) → Algoritmo estancado
End
→ Número máximo de iteraciones alcanzado
Otras modificaciones
Para evitar el error de pendiente, se puede emplear la pendiente de la iteración anterior
Evaluar fx=f(x0)
IF(|fx|<e1) → Solución en x0
Evaluar dfx = [f(x0 + h)-fx]/h
IF(|dfx|<EPS) → Error: pendiente cero encontrada en x0
dfx1 = dfx
For(k=0 to MAXIT, step 1)
xk+1 = xk - fx/dfx1
Evaluar fx=f(xk+1)
IF(|fx|<e1) → Solución en xk
IF(|xk+1-xk|/max(|xk+1|,|xk|)<e2) → Algoritmo estancado
Evaluar dfx1 = [f(xk+1 + h)-fx]/h
IF(|dfx1|<EPS)
dfx1 = dfx
Else
dfx = dfx1
End IF
End
→ Número máximo de iteraciones alcanzado