Está en la página 1de 5

Semana 3 - Solución de Ecuaciones no Lineales

Método de Newton-Raphson

Método de Newton-Raphson

Se encuentra la raíz partiendo de una estimación inicial, utilizando las rectas


tangentes que se evalúan analíticamente. El método de Newton se puede aplicar a
partir del desarrollo de Taylor.

Funcionamiento:

Supongamos que el problema es encontrar la raíz de f(x) = 0, el desarrollo de


Taylor en torno a una estimación x0 truncado en términos de orden superior, es:

f(x) = 0 = f(x 0 ) + f' (x 0 )(x − x 0 ) + O(h 2 ) (3.1)

Dónde: h = x - x0, es el intervalo de avance.


x0, es una estimación inicial para la raíz.

Al despejar x en la ecuación (3.1) no se obtiene el valor exacto debido al error por


truncamiento, pero la solución se aproxima a el valor exacto de x si utilizamos el valor
obtenido como aproximación mejorada de x0; por ello, lo siguiente es obtener la
función lineal que pasa por (x0, y0) y aproximar por iteración.

La intersección de la recta tangente con el eje x, se denota como x1 y se


considera una segunda aproximación de la raíz. Se repite el mismo procedimiento
utilizando el valor actualizado para el siguiente ciclo de iteración.
La recta tangente que pasa por (x0, f(x0)), es:

g(x) = f' (x 0 )(x − x 0 ) + f(x 0 ) (3.2)

La raíz de g(x), denotada por x1, satisface:

f' (x 0 )(x1 − x 0 ) + f(x 0 ) = 0 (3.3)

Despejando x1, se tiene:

f(x 0 )
x1 = x 0 − (3.4)
f' (x 0 )

Por lo tanto las aproximaciones sucesivas a la raíz, se pueden escribir como:

f(x i −1 )
x i = x i −1 − (3.5)
f' (x i −1 )
El proceso de aproximación, puede observarse en la figura (3.1).

Figura (3.1). Aproximación iterativa en el método de Newton. Tomado de: Nakamura,


S. (1992); “Métodos Numéricos Aplicados con Software”.

La primera derivada de la función puede obtenerse, usando una aproximación por


diferencias centrales de segundo orden.

f(x 0 + h) − f(x 0 - h)
f' (x 0 ) = (3.6)
2h

En el proceso iterativo la ecuación (3.6), puede escribirse como:

f(x i −1 + h) − f(x i −1 − h)
f' (x i −1 ) = (3.7)
2h

Dónde: h, es un número real que cumple lo siguiente: 10-3 ≤ h ≤ 10-1, y se define


de antemano.

En este caso se ha optado por utilizar como elemento de convergencia un


valor de tolerancia (TOL), el cual define la máxima diferencia en valor absoluto que se
permitirá entre los valores evaluados funcionalmente para x0 y x1; mientras menor sea
esta diferencia mayor será la aproximación al valor de raíz buscado. Generalmente se
emplea un valor para TOL que cumple lo siguiente: 10-3 ≤ TOL ≤ 10-1
Algoritmo:

(i) Ingresar x0 y Tol


(ii) Evaluar f’(x0) usando la ecuación (3.6)
(iii) Calcular x1 usando (3.4)
(iv) Evaluar |f(x0) - f(x1)| ≤ Tol
• Si se cumple entonces, x1 es la raíz aproximada
• Si no se cumple entonces hacer x0 = x1 y volver al paso ii)

Limitaciones:

• El método de Newton requiere una buena estimación inicial de la raíz. De


otro modo la solución puede divergir o converger a una solución irrelevante.
• El método puede encontrar raíces complejas si las variables se definen
como complejas.

Ejemplo:

Calcular la raíz más próxima a 0.1 de la función y = -x + cos(x2), con una


tolerancia de 0.01, mostrando 5 decimales de aproximación.

1.500

1.000

0.500

0.000
0.000 0.500 1.000 1.500 2.000 2.500
-0.500

-1.000

-1.500

-2.000

Figura (3.2). Grafica de la función y = -x + cos(x2), desde 0 hasta 2 con un avance de


0.1 unidades.
Los resultados computacionales para este ejemplo son:

RAIZ DE UNA FUNCION (METODO DE NEWTON_RAPHSON)


==============================================

INGRESO DE DATOS
==================================
INGRESE X0 Y TOL
0.1 0.01

RESULTADOS NEWTON-RAPHSON

N X0 X1 DFX ABS(F(X0)-F(X1))
1 0.10000 0.99814 -1.00202 1.35465
2 0.99814 0.82820 -2.67578 0.40034
3 0.82820 0.80167 -2.04922 0.05319
4 0.80167 0.80107 -1.96104 0.00118

LA RAIZ HALLADA ES: 0.80107 APROXIMACION = 0.00118

La raíz obtenida luego de 4 iteraciones, con una diferencia en valor absoluto de .00118
y una aproximación de cinco decimales fue: 0.80107

Codificación:

La codificación empleada para obtener estos resultados fue la siguiente:

PROGRAM NEWTON_RAPHSON

REAL(4) X0,X1,TOL,DFX,E

5 WRITE(*,*)''
WRITE(*,*)' RAIZ DE UNA FUNCION (METODO DE NEWTON_RAPHSON)'
WRITE(*,*)' =============================================='
WRITE(*,*)''
WRITE(*,*)' INGRESO DE DATOS'
WRITE(*,*)' =================================='
WRITE(*,*)' INGRESE X0 Y TOL'
READ(*,*)X0,TOL
WRITE(*,*)'RESULTADOS NEWTON-RAPHSON'
WRITE(*,*)' N X0 X1 DFX ABS(F(X0)-F(X1))'
H=0.01
N=0
10 N=N+1
DFX=(F(X0+H)-F(X0-H))/(2*H)
X1=X0-F(X0)/DFX
E=ABS(F(X0)-F(X1))
IF(E.GT.TOL)THEN
WRITE(*,22)N,X0,X1,DFX,E
X0=X1
GOTO 10
ELSE
WRITE(*,22)N,X0,X1,DFX,E
WRITE(*,20)X1,E
END IF
20 FORMAT(' LA RAIZ HALLADA ES: ',F9.5,1x,'APROXIMACION = ',F9.5)
22 FORMAT(1X,I2,4(F9.5,1X))
END

FUNCTION F(X)
F=-x+cos(x**2)
RETURN
END

En el caso de que f’(xi) = 0, el método no se puede aplicar. De hecho,


geométricamente que esto significa que la recta tangente es horizontal y por lo tanto
no intersecta al eje x en ningún punto, a menos que coincida con éste, en cuyo caso xi
mismo es una raíz de f(x).

También podría gustarte