Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Practica4 Newton Raph Resuelta
Practica4 Newton Raph Resuelta
(x
0
) +
(x x
0
)
2
2
f
(x
0
+ h)
con 0 < < 1.
Suponiendo que f
(x
0
)
Por tanto la solucin de la ecuacin f (x) = 0 (que es ) estar prxima a la solucin de f(x
0
) +
(x x
0
) f
(x
0
) = 0. Si llamamos x
1
a dicha solucin, entonces x
1
es una mejor aproximacin de que
x
0
. La solucin x
1
cumple que f(x
0
) + (x
1
x
0
) f
(x
0
) = 0 y por tanto:
x
1
= x
0
f(x
0
)
f
(x
0
)
1
De esta manera podemos generar la sucesin {x
i
}
n
i=1
con la frmula recurrente:
x
i+1
= x
i
f(x
i
)
f
(x
i
)
La obtencin del mtodo de Newton mediante una serie de Taylor resalta la importancia de una
buena aproximacin inicial. Si x
0
no est sucientemente prximo a , el mtodo de Newton puede
no ser convergente (ya que la solucin de f(x
0
) + (x x
0
) f
(x
0
) = 0 podra estar alejada de ).
Un posible inconveniente de este mtodo es la evaluacin de f
(x
i
) en cada iteracin, pero en caso
necesario, esto puede subsanarse con una modicacin que veremos ms adelante.
Convergencia del mtodo.
Teorema. Supongamos que [a, b] es solucin de f(x) = 0 y que f
() = 0 . Entonces, si
f C
2
([a, b]) y el valor inicial x
0
es sucientemente prximo a ( x
0
[ , + ] para algn
> 0), la sucesin x
n+1
= g(x
n
) denida por el mtodo de Newton, converge a .
Este teorema indica que, bajo suposiciones razonables, el mtodo de Newton converge siempre
que la condicin inicial est sucientemente prxima a la raz. No obstante, es un teorema poco til en
la prctica ya que normalmente no se sabe si el valor inicial est o no prximo a . La construccin de
una grca de f (x) puede ser de ayuda para localizar aproximaciones iniciales a la raiz. El siguiente
teorema nos da condiciones sucientes para la convergencia del algoritmo:
Teorema. (Condicin suciente), Supongamos que f C
2
([a, b]) tal que:
(i) f(a)f(b) < 0 (la funcin cambia de signo en los extremos del intervalo [a, b])
(ii) f
(x) = 0 x [a, b]
(iii) f
(x) = 0 x [a, b]
Entonces existe una nica raz de f en [a, b], y la sucesin {x
n
} generada por el mtodo de
Newton converge hacia , para cualquier valor inicial x
0
[a, b] que cumpla que:
f(x
0
)f
(x
0
) 0.
Implementacin del mtodo de Newton-Raphson en Matlab-Octave.
La implementacin en Matlab/Octave el algoritmo de Newton-Raphson es muy simple. El programa
que implemente dicho algoritmo debe recibir como argumentos:
(a) La funcin f (x) cuya raz se va a calcular.
(b) Una aproximacin inicial x
0
de dicha raiz.
(c) La derivada f
(x) de la funcin.
(d) La tolerancia o error mximo .
Sugerencia: Para denir la funcin f (x) y su derivada f
(x), x
0
y . Calcular f (x
0
) y f
(x
0
). Hacer k = 0.
2. Hacer k = k + 1. En cada etapa k 1 calcular la nueva aproximacin x
k
= x
k1
f(x
k1
)
f
(x
k1
)
3. Si |x
k
x
k1
| < terminar: la raz aproximada es = x
k
; en caso contrario volver al paso 2.
Mtodo de Newton-Raphson modicado.
Es anlogo al anterior con la diferencia de que el valor de la derivada slo se calcula en el punto
inicial; por tanto la frmula a utilizar en el paso 2 es x
k
= x
k1
f(x
k1
)
f
(x
0
)
. Esta modicacin converge
ms lentamente y en general slo se utiliza cuando hay problemas para calcular la derivada de f (x).
Mtodo de la secante.
Es otra variacin del mtodo de Newton-Raphson, en la que el clculo de la derivada se sustituye
por su aproximacin numrica:
f
(x
k
) =
f(x
k
) f(x
k1
)
x
k
x
k1
Por tanto, el paso 2 del algoritmo es:
x
k
= x
k1
f(x
k1
)
f(x
k1
)f(x
k2
)
x
k1
x
k2
= x
k1
(x
k1
x
k2
) f(x
k1
)
f(x
k1
) f(x
k2
)
=
x
k2
f(x
k1
) x
k1
f(x
k2
)
f(x
k1
) f(x
k2
)
Adems, para aplicar el mtodo de la secante es necesario partir de dos aproximaciones iniciales
x
0
y x
1
.
Ejercicios.
1. Implementar los tres algoritmos anteriores en MATLAB/OCTAVE en sendas funciones, que debe-
rn llamarse, respectivamente newtonRaphson, newtonRahsonMod y secante. Las dos primeras
funciones deben recibir como argumentos la funcin cuyo cero se quiere calcular, su derivada, la
solucin inicial y la tolerancia o error de aproximacin . La tercera funcin (secante) debe recibir
adems una segunda aproximacin x
1
. De esta forma, la funcin newtonRaphson debe poder
invocarse mediante:
newtonRaphson(f, fp, x0, tol)
donde las funciones f y fp se denirn previamente mediante comandos inline. Por ejemplo, para
hallar el cero de la funcin f(x) = 2x
2
10x+3 partiendo de la aproximacin inicial x
0
= 1, con
error inferior a una milsima, el algoritmo de biseccin deber invocarse mediante:
f=inline(2*x^2-10*x+3)
fp=inline(4*x-10)
newtonRaphson(f, fp, 1, 1e-8)
Solucin:
El cdigo para la implementacin del algoritmo de Newton-Raphson es: (Pinchar aqu para des-
cargar el archivo .m)
function raiz=newtonRaphson( f, fp, x0, tol)
if ( f(x0) ==0)
raiz=x0;
else
x1=x0f(x0) /fp(x0) ;
while ( ( f(x1) ~=0)&&abs( x1x0) >tol)
x0=x1;
x1=x0f(x0) /fp(x0) ;
end%while
raiz=x1;
end%if
raiz;
end%function
Lo aplicamos a la funcin denida en el ejemplo anterior, especicando previamente format long
para que Matlab/Octave nos muestre el resultado con mayor precisin:
>>> format long
>>> f=inline(2*x^2-10*x+3)
f =
f(x) = 2*x^2-10*x+3
>>> fp=inline(4*x-10)
fp =
f(x) = 4*x-10
>>> newtonRaphson(f, fp, 1, 1e-8)
ans = 0.320550528229663
Comprobamos que este valor es efectivamente raz de f (x) = 2x
2
10x + 3
>>> f( 0.320550528229663)
ans = 1.77635683940025e-15
Si representamos esta funcin entre -2 y 6, vemos que hay otra raz entre 4 y 5:
>>> fplot(f,[-2,6])
-10
0
10
20
30
40
-2 -1 0 1 2 3 4 5 6
2.*x.
2
-10.*x+3
Para hallar esta raz por el mtodo de Newton-Raphson simplemente tomamos como valor inicial
el x
0
= 4:
>>> newtonRaphson(f, fp, 4, 1e-8)
ans = 4.67944947177034
Comprobamos que efectivamente este valor es solucin de f (x) = 0:
>>> f(4.67944947177034)
ans = 2.84217094304040e-14
2. Aplicar los algoritmos anteriores a la bsqueda de soluciones de las siguientes ecuaciones. En
todos los casos hacer una grca de la funcin y explorar la convergencia a partir de distintos
valores iniciales.
a) x
6
x 1 = 0 (Sugerencia: hacer una grca de la funcin en el intervalo [-1,2]). Explorar
qu ocurre si se toma como valor inicial x
0
= 0,69 o x
0
= 0,7.
b) x
2
x 0,5 = 0.
c) sin(x + 1)
x = 0.
d) log(x) cos(x + 1) = 3/2.
e) xe
x/2
= 1
3. Matlab/Octave disponen de las funciones roots (para hallar las races de polinomios) y fzero
(para hallar races de una funcin no lineal). Utiliza la ayuda de Matlab/Octave (o los recursos
de internet) para investigar cmo operan estas funciones y utilizalas tambin para obtener las
soluciones de las ecuaciones del problema anterior. Compara los resultados.