Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
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
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:
Se escoge h (x) de manera que g'(r)=0 (r es la raz buscada). Dado que g'(r) es:
Entonces:
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.
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.
. Si
,
y
, entonces la sucesin xn con
Si adems
[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
end
disp('ite raiz er ea');
disp(num2str(salida));
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
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);