Vous êtes sur la page 1sur 16

Mtodo de Newton

De Wikipedia, la enciclopedia libre


Saltar a navegacin, bsqueda
En anlisis numrico, el mtodo de Newton (conocido tambin como el mtodo de
Newton-Raphson o el mtodo de Newton-Fourier) es un algoritmo eficiente para
encontrar aproximaciones de los ceros o races de una funcin real. Tambin puede ser
usado para encontrar el mximo o mnimo de una funcin, encontrando los ceros de su
primera derivada.

Contenido
[ocultar]
1 Historia
2 Descripcin del mtodo
3 Obtencin del Algoritmo
4 Convergencia del Mtodo
5 Estimacin del Error
6 Teorema de Convergencia Local del Mtodo de Newton
7 Ejemplo
8 Codigo en MatLab
9 Referencias

10 Enlaces externos

[editar] Historia
El mtodo de Newton fue descrito por Isaac Newton en De analysi per aequationes
nmero terminorum infinitas (escrito en 1669, publicado en 1711 por William Jones) y
en De metodis fluxionum et serierum infinitarum (escrito en 1671, traducido y publicado
como Mtodo de las fluxiones en 1736 por John Colson). Sin embargo, su descripcin
difiere en forma sustancial de la descripcin moderna presentada ms arriba: Newton
aplicaba el mtodo solo a polinomios, y no consideraba las aproximaciones sucesivas xn,
sino que calculaba una secuencia de polinomios para llegar a la aproximacin de la raz
x. Finalmente, Newton ve el mtodo como puramente algebraico y falla al no ver la
conexin con el clculo.
Isaac Newton probablemente deriv su mtodo de forma similar aunque menos precisa
del mtodo de Franois Vite. La esencia del mtodo de Vite puede encontrarse en el
trabajo del matemtico persa Sharaf al-Din al-Tusi.

[editar] Descripcin del mtodo

La funcin es mostrada en azul y la lnea tangente en rojo. Vemos que xn+1 es una
mejor aproximacin que xn para la raz x de la funcin f.
El mtodo de Newton-Raphson es un mtodo abierto, en el sentido de que su
convergencia global no est garantizada. La nica manera de alcanzar la convergencia
es seleccionar un valor inicial lo suficientemente cercano a la raz buscada. As, se ha de
comenzar la iteracin con un valor razonablemente cercano al cero (denominado punto
de arranque o valor supuesto). La relativa cercana del punto inicial a la raz depende
mucho de la naturaleza de la propia funcin; si sta presenta mltiples puntos de
inflexin o pendientes grandes en el entorno de la raz, entonces las probabilidades de
que el algoritmo diverja aumentan, lo cual exige seleccionar un valor supuesto cercano a
la raz. Una vez se ha hecho esto, el mtodo linealiza la funcin por la recta tangente en
ese valor supuesto. La abscisa en el origen de dicha recta ser, segn el mtodo, una
mejor aproximacin de la raz que el valor anterior. Se realizarn sucesivas iteraciones
hasta que el mtodo haya convergido lo suficiente.
Sea f : [a, b] -> R funcin derivable definida en el intervalo real [a, b]. Empezamos con
un valor inicial x0 y definimos para cada nmero natural n

Donde f ' denota la derivada de f.


Ntese que el mtodo descrito es de aplicacin exclusiva para funciones de una sola
variable con forma analtica o implcita cognoscible. Existen variantes del mtodo
aplicables a sistemas discretos que permiten estimar las races de la tendencia, as como
algoritmos que extienden el mtodo de Newton a sistemas multivariables, sistemas de
ecuaciones, etc.

[editar] Obtencin del Algoritmo


Tres son las formas principales por las que tradicionalmente se ha obtenido el algoritmo
de Newton-Raphson.

La primera de ellas es una simple interpretacin geomtrica. En efecto, atendiendo al


desarrollo geomtrico del mtodo de la secante, podra pensarse en que si los puntos de
iteracin estn lo suficientemente cerca (a una distancia infinitesimal), entonces la
secante se sustituye por la tangente a la curva en el punto. As pues, si por un punto de
iteracin trazamos la tangente a la curva, por extensin con el mtodo de la secante, el
nuevo punto de iteracin se tomar como la abscisa en el origen de la tangente (punto de
corte de la tangente con el eje X). Esto es equivalente a linealizar la funcin, es decir, f
se reemplaza por una recta tal que contiene al punto (x0, f (x0)) y cuya pendiente
coincide con la derivada de la funcin en el punto, f'(x0). La nueva aproximacin a la
raz, x1, se logra la interseccin de la funcin lineal con el eje X de abscisas.
Matemticamente:

Ilustracin de una iteracin del mtodo de Newton (la funcin f se demuestra en azul y
la lnea de la tangente est en rojo). Vemos que xn + 1 es una aproximacin mejor que xn
para la raz x de la funcin f.
En la ilustracin adjunta del mtodo de Newton se puede ver que xn + 1 es una mejor
aproximacin que xn para el cero (x) de la funcin f.
Una forma alternativa de obtener el algoritmo es desarrollando la funcin f (x) en serie
de Taylor, para un entorno del punto xn:

Si se trunca el desarrollo a partir del trmino de grado 2, y evaluamos en xn + 1:

Si adems se acepta que xn + 1 tiende a la raz, se ha de cumplir que f(xn + 1) = 0, luego,


sustituyendo en la expresin anterior, obtenemos el algoritmo.

Finalmente, hay que indicar que el mtodo de Newton-Raphson puede interpretarse


como un mtodo de iteracin de punto fijo. As, dada la ecuacin f(x) = 0, se puede
considerar el siguiente mtodo de iteracin de punto fijo:

Se escoge h (x) de manera que g'(r)=0 (r es la raz buscada). Dado que g'(r) es:

Entonces:

Como h (x) no tiene que ser nica, se escoge de la forma ms sencilla:

Por tanto, imponiendo subndices:

Expresin que coincide con la del algoritmo de Newton-Raphson

[editar] Convergencia del Mtodo


El orden de convergencia de este mtodo es, por lo menos, cuadrtico. Sin embargo, si
la raz buscada es de multiplicidad algebraica mayor a uno (i.e, una raz doble,
triple, ...), el mtodo de Newton-Raphson pierde su convergencia cuadrtica y pasa a ser
lineal de constante asinttica de convergencia 1-1/m, con m la multiplicidad de la raz.
Existen numerosas formas de evitar este problema, como pudieran ser los mtodos de
aceleracin de la convergencia tipo de Aitken o el mtodo de Steffensen. Derivados
de Newton-Raphson destacan el mtodo de Ralston-Rabinowitz, que restaura la
convergencia cuadrtica sin ms que modificar el algoritmo a:

Evidentemente, este mtodo exige conocer de antemano la multiplicidad de la raz, lo


cual no siempre es posible. Por ello tambin se puede modificar el algoritmo tomando
una funcin auxiliar g(x) = f(x)/f'(x), resultando:

Su principal desventaja en este caso sera lo costoso que pudiera ser hallar g(x) y g'(x) si
f(x) no es fcilmente derivable.
Por otro lado, la convergencia del mtodo se demuestra cuadrtica para el caso ms
habitual en base a tratar el mtodo como uno de punto fijo: si g'(r)=0, y g' '(r) es distinto
de 0, entonces la convergencia es cuadrtica. Sin embargo, est sujeto a las
particularidades de estos mtodos.
Ntese de todas formas que el mtodo de Newton-Raphson es un mtodo abierto: la
convergencia no est garantizada por un teorema de convergencia global como podra
estarlo en los mtodos de falsa posicin o de biseccin. As, es necesario partir de una
aproximacin inicial prxima a la raz buscada para que el mtodo converja y cumpla el
teorema de convergencia local.

[editar] Estimacin del Error


Se puede demostrar que el mtodo de Newton-Raphson tiene convergencia cuadrtica:
si es raz, entonces:

para una cierta constante C. Esto significa que si en algn momento el error es menor o
igual a 0,1, a cada nueva iteracin doblamos (aproximadamente) el nmero de
decimales exactos. En la prctica puede servir para hacer una estimacin aproximada
del error:
Error relativo entre dos aproximaciones sucesivas:

Con lo cual se toma el error relativo como si la ltima aproximacin fuera el valor
exacto. Se detiene el proceso iterativo cuando este error relativo es aproximadamente
menor que una cantidad fijada previamente.

[editar] Teorema de Convergencia Local del Mtodo de


Newton
Sea
tal que si

. Si

,
y
, entonces la sucesin xn con

, entonces existe un r>0


verifica que:

para todo n y xn tiende a p cuando n tiende a infinito.

Si adems

, entonces la convergencia es cuadrtica.

[editar] Ejemplo
Consideremos el problema de encontrar un nmero positivo x tal que cos(x) = x3.
Podramos tratar de encontrar el cero de f(x) = cos(x) - x3.
Sabemos que f '(x) = -sin(x) - 3x2. Ya que cos(x) 1 para todo x y x3 > 1 para x>1,
deducimos que nuestro cero est entre 0 y 1. Comenzaremos probando con el valor
inicial x0 = 0,5

Los dgitos correctos estn subrayados. En particular, x6 es correcto para el nmero de


decimales pedidos. Podemos ver que el nmero de dgitos correctos despus de la coma
se incrementa desde 2 (para x3) a 5 y 10, ilustando la convergencia cuadrtica.
En pseudocdigo, esto es:
function newtonIterationFunction(x) {
return x - (cos(x) - x^3) / (-sin(x) - 3*x^2)
}
var x := 0,5
for i from 0 to 99 {
print "Iteraciones: " + i
print "Valor aproximado: " + x
xold := x
x := newtonIterationFunction(x)
if x = xold {
print "Solucin encontrada!"
break
}
}

[editar] Codigo en MatLab


Programa escrito en Matlab para hallar las races usando el mtodo de NEWTONRAPHSON
disp ('NEWTON-RAPHSON')

xo=input('Valor inicial =');


n=input ('numero de iteraciones=');
salida=ones(n,4); % matiz de salida de datos
for i=1:n
x1=xo-[(exp(-xo)-xo)]/[(-exp(-xo)-1)];
vsal=[xo;x1];
er=[[abs((xo-x1)/xo)]]*100; % error relativo porcentual
ea=[[abs((x1-xo)/x1)]]*100; % error
xo=x1;
salida(i,1)=i;
salida(i,2)=x1;
salida(i,3)=er;
salida(i,4)=ea;

end
disp('ite raiz er ea');
disp(num2str(salida));

El programa siguiente hace el clculo para una superficie.


syms x1
syms x2
syms x3
V=['sin(x1)+2^x2+log(x3)-7';'3*x1+2*x2-x3^3+1
';'x1+x2+x3-5
'];
%se calcula el jacobiano:
DV(1,:)=[diff(V(1,:),x1), diff(V(1,:),x2),diff(V(1,:),x3)];
DV(2,:)=[diff(V(2,:),x1), diff(V(2,:),x2),diff(V(2,:),x3)];
DV(3,:)=[diff(V(3,:),x1), diff(V(3,:),x2),diff(V(3,:),x3)];
%se da el valor de partida:
x1=0;
x2=4;
x3=2;
x_1o=[x1;x2;x3];
%se calcula H en ese punto
Vo(1,:)=eval(V(1,:));
Vo(2,:)=eval(V(2,:));
Vo(3,:)=eval(V(3,:));
%Se calcula el Jacobiano en ese punto
DV1=eval(DV);
%se calcula la Inversa del JAcobiano en ese punto
DV_1=DV1^-1;
%se calcula el siguiente valor de iteracin
x_1=[x1;x2;x3]-DV_1*Vo;
%cantidad de iteraciones maxima:
n=50;
%se define a = n, si se cumple condicion de error antes, cambia
a=n;
for i=1:n
%error relativo entre aproximaciones sucecivas
er=norm(x_1-x_1o)/norm(x_1);
if er<.0001
a=i;
break; end
x1=x_1(1);
x2=x_1(2);
x3=x_1(3);
x_1o=[x1;x2;x3];
Vo(1,:)=eval(V(1,:));

Vo(2,:)=eval(V(2,:));
Vo(3,:)=eval(V(3,:));
DV1=eval(DV);
DV_1=DV1^-1;
x_1=[x1;x2;x3]-DV_1*Vo;
end
a
x_1

[editar] Referencias

Tjalling J. Ypma, Historical development of the Newton-Raphson method, SIAM


Review 37 (4), 531551, 1995.
P. Deuflhard, Newton Methods for Nonlinear Problems. Affine Invariance and
Adaptive Algorithms. Springer Series in Computational Mathematics, Vol. 35.
Springer, Berlin, 2004. ISBN 3-540-21099-7.
C. T. Kelley, Solving Nonlinear Equations with Newton's Method, no 1 in
Fundamentals of Algorithms, SIAM, 2003. ISBN 0-89871-546-6.
J. M. Ortega, W. C. Rheinboldt, Iterative Solution of Nonlinear Equations in
Several Variables. Classics in Applied Mathematics, SIAM, 2000. ISBN 089871-461-3.
W. H. Press, B. P. Flannery, S. A. Teukolsky, W. T. Vetterling, Numerical
Recipes in C: The Art of Scientific Computing, Cambridge University Press,
1992. ISBN 0-521-43108-5 (available free online, with code samples: [1]),
sections 9.4 [2] and 9.6 [3].
W. H. Press, B. P. Flannery, S. A. Teukolsky, W. T. Vetterling, Numerical
Recipes: The Art of Scientific Computing, Cambridge University Press, 2007.
ISBN 0-521-88068-8 (available for a fee online, with code samples [4]).
W. H. Press, B. P. Flannery, S. A. Teukolsky, W. T. Vetterling, Numerical
Recipes in Fortran, Cambridge University Press, 1992. ISBN 0-521-43064-X
(online, with code samples: [5])
Endre Sli and David Mayers, An Introduction to Numerical Analysis,
Cambridge University Press, 2003. ISBN 0-521-00794-1.
Weisstein, Eric W., Newton's method and Convergence (en ingls),
MathWorld, Wolfram Research,
http://mathworld.wolfram.com/NewtonsMethod.html, consultado el 29 de
agosto.

[editar] Enlaces externos

function x = biseccion(fun,a,b,tol)
% Aproxima por el mtodo de la biseccin una raz de la ecuacin
fun(x)=0
disp('Mtodo de la biseccin');
u=feval(fun,a);
v=feval(fun,b);
n=1;
if sign(u)==sign(v)
disp('Error la funcin debe cambiar de signo en (a,b)');
break;
end
while ((b-a)*0.5>tol)
c=(b+a)/2; w=feval(fun,c);
disp(['n=', num2str(n)]);
disp(['c=', num2str(c)]);
disp(['f(c)=', num2str(w)]);
if sign(u)==sign(w)
a = c; u=w;
else
b=c; v=w;
end
n=n+1;
end;
x=c

function x = regula_falsi(fun,a,b,maxiter)
% Aproxima por el mtodo de la regula falsi una raz de la ecuacin
fun(x)=0
fprintf(1, 'Mtodo de la regula falsi\n');
fprintf(1,'\n');
n=1;
u=feval(fun,a);
v=feval(fun,b);
if sign(u)==sign(v)
disp('ERROR:la funcion debe cambiar signo en a,b');
break;
end;
for n=1:1:maxiter
c=a-(u*(b-a)/(v-u));
w=feval(fun,c);
fprintf(1, 'n= %i, c= %f, f(c)= %e
if sign(u)==sign(w)
a = c; u=w;
else
b=c; v=w;
end
n=n+1;
end;
x=c

\n',n, c,w);

function p=pfijo(fun,p0,tol,maxiter)
% Aproxima por el mtodo del punto fijo una raiz de la ecuacion
fun(x)=x
%cercana p0, tomando como criterio de parada abs(fun(x)-x)<tol o la
cota sobre
% el numero de iteraciones dada por maxiter.
%
% Variables de entrada:
%
fun(x): funcion a iterar, se debe introducir con notacin
simbolica (eg. 'g')
%
x0: estimacin inicial para el proceso de iteracin
%
tol: tolerancia en error absoluto para la raiz
%
maxiter: maximo numero de iteraciones permitidas
%
% Variables de salida:
%
p: valor aproximado de la raiz
p(1)=p0;
for n=2:maxiter;
p(n)=feval(fun,p(n-1));
err=abs(p(n)-p(n-1));
if err<tol
break;
end
disp(['n=',num2str(n)]);
disp(['f(x)=',num2str(p(n))]);
disp(['abs(f(x)-x)=',num2str(err)]);
end
if n==maxiter
disp('se ha excedido el nmero de iteraciones')
end
p'

function a =secante(fun,x0,x1,tol,maxiter)
% Aproxima por el mtodo de la secante una raiz de la ecuacion
fun(x)=0
%cercana a x0, tomando como criterio de parada abs(fun(x))<tol o la
cota sobre
%el numero de iteraciones dada por maxiter.
%
% Variables de entrada:
%
fun: funcion a calcular la raiz, se introduce en modo simbolico
'fun'
%
x0, x1: estimaciones iniciales para el proceso de iteracin
%
tol: tolerancia en error absoluto para la raiz
%
maxiter: maximo numero de iteraciones permitidas
%
% Variables de salida:
%
a: valor aproximado de la raiz
fprintf(1, 'Metodo de la secante \n');
f0=subs(fun,x0);
f1=subs(fun,x1);
iter=1;
while(abs(f1)>tol) & (iter<maxiter)
a = x1-f1*((x1-x0)/(f1-f0));
% formula
de iteracion
f0=f1; f1=subs(fun,a);
%Actualiza f0 y f1
fprintf(1, 'iter= %i, a= %x0,f= %e \n', iter,a ,f1)
iter = iter + 1;
% Cuenta
los pasos
x0=x1; x1=a;
% actualiza x
end
% Salida

function [C,L]=lagran(X,Y)
%variables de entrada
%
- X es un vector que contiene las
%
abcisas de los puntos
%
- Y es un vector que contiene las
%
ordenadas de los puntos
%variables de salida
%
- C es una matriz cuyas entradas son
%
los coeficientes del polinomio
%
de interpolacin de Lagrange (VECTOR COLUMNA)
%
- L es una matriz cuyas entradas son
%
los coeficientes del polinomio
%
de interpolacin de Lagrange
w=length(X);
n=w-1;
L=zeros(w,w);
%Formacin de los coeficientes del polinomio
for k=1:n+1
V=1;
for j=1:n+1
if k~=j
V=conv(V,poly(X(j)))/(X(k)-X(j));
end
end
L(:,k)=V;
end
%Clculo de los coeficientes del polinomio
%interpolador de Lagrange
L
C=L*Y'

function [C,L]=lagran(X,Y)
%variables de entrada
%
- X es un vector que contiene las
%
abcisas de los puntos
%
- Y es un vector que contiene las
%
ordenadas de los puntos
%variables de salida
%
- C es una matriz cuyas entradas son
%
los coeficientes del polinomio
%
de interpolacin de Lagrange (VECTOR COLUMNA)
%
- L es una matriz cuyas entradas son
%
los coeficientes del polinomio
%
de interpolacin de Lagrange
w=length(X);
n=w-1;
L=zeros(w,w);
%Formacin de los coeficientes del polinomio
for k=1:n+1
V=1;
for j=1:n+1
if k~=j
V=conv(V,poly(X(j)))/(X(k)-X(j));
end
end
L(:,k)=V;
end
%Clculo de los coeficientes del polinomio
%interpolador de Lagrange
L
C=L*Y'

function area=trapecios(fun,a,b,m)
%Aproxima por la regla de los trapecios compuesta el valor de la
integral
%de una funcin fun(x) en un intervalo de extremos a y b tomando m+1
puntos equiespaciados.
%Variables de entrada:
%
fun(x): funcion que se quiere integrar y que debe
%
introducirse con notacin simbolica (eg. 'g').
%
a: extremo izquierdo del intervalo
%
b: extremo derecho del intervalo
%
m: nmero de puntos memos uno.
% Variables de salida:
%
area: integral aproximada
h=(b-a)/m;
x=a:h:b;
sum=0;
for i=2:m
sum=sum+feval(fun,x(i));
end
area=(h/2)*(feval(fun,a)+feval(fun,b)+2*sum);

Vous aimerez peut-être aussi