Está en la página 1de 7

Mtodo de la secante

Dos primeras iteraciones del mtodo de la secante.

En anlisis numrico el mtodo de la secante es un mtodo para encontrar los ceros de una funcin de
forma iterativa.

Es una variacin del mtodo de Newton-Raphson donde en vez de calcular la derivada de la funcin en
el punto de estudio, teniendo en mente la definicin de derivada, se aproxima la pendiente a la recta que
une la funcin evaluada en el punto de estudio y en el punto de la iteracin anterior. Este mtodo es de
especial inters cuando el coste computacional de derivar la funcin de estudio y evaluarla es
demasiado elevado, por lo que el mtodo de Newton no resulta atractivo.

En otras palabras, el mtodo de la secante es un algoritmo de la raz de investigacin que utiliza una
serie de races de las lneas secantes para aproximar mejor la raz de una funcin f. El mtodo de la
secante se puede considerar como una aproximacin en diferencias finitas del mtodo de Newton-
Raphson. Sin embargo, este mtodo fue desarrollado independientemente de este ltimo.

ndice
[ocultar]

1 El mtodo

2 Derivacin del mtodo

3 Convergencia

4 Comparacin con otros mtodos de bsqueda de races

5 Ejercicio de ejemplo

6 Cdigo en Fortran 90

7 Cdigo en Matlab
8 Enlaces externos

9 Referencias

[editar]El mtodo

El mtodo se define por la relacin de recurrencia:

Como se puede ver, este mtodo necesitar dos aproximaciones iniciales de la raz para poder
inducir una pendiente inicial.

[editar]Derivacin del mtodo

El mtodo se basa en obtener la ecuacin de la recta que pasa por los puntos (xn1, f(xn1)) y
(xn, f(xn)). A dicha recta se le llama secante por cortar la grfica de la funcin. En la imagen de
arriba a la derecha se toman los puntos iniciales x0 y x1, se construye una lnea por los puntos
(x0, f(x0)) y (x1, f(x1)). En forma punto-pendiente, esta lnea tiene la ecuacin mostrada
anteriormente. Posteriormente se escoge como siguiente elemento de la relacin de
recurrencia, xn+1, la interseccin de la recta secante con el eje de abscisas obteniendo la frmula, y
un nuevo valor. Seguimos este proceso, hasta llegar a un nivel suficientemente alto de precisin
(una diferencia lo suficientemente pequeas entre xn y xn-1).

[editar]Convergencia

El orden de convergencia de este mtodo, en un punto cercano a la solucin, es donde

es el nmero ureo, por lo que se trata de una convergencia superlineal inferior a la del mtodo
de Newton-Raphson. En caso de que la aproximacin inicial sea demasiado lejana o la raz no
sea simple, este mtodo no asegura la convergencia y tiene un comportamiento similar al de
Newton-Raphson.

[editar]Comparacin con otros mtodos de bsqueda de races

El mtodo de biseccin necesita de muchas iteraciones comparado con el mtodo de la


secante, ya que el proceso que ste sigue es mucho ms preciso que el de biseccin, el cual
solo divide por mitades sucesivamente hasta dar con un valor aproximado al real y por
consecuente conlleva un nmero significativamente mayor de iteraciones.
El mtodo de la regla falsa utiliza la misma frmula que el mtodo de la secante. Sin embargo,
no se aplica la frmula en xn1 y xn, como el mtodo de la secante, pero en xn y en la ltima
iteracin xk tal que f(xk) y f(xn) tiene un signo diferente. Esto significa que el mtodo de regla
falsa siempre converge.

La frmula de recurrencia del mtodo de la secante se puede derivar de la frmula para el


mtodo de Newton-Raphson:

utilizando la aproximacin de diferencias finitas:

Si comparamos el mtodo de Newton-Raphson con el mtodo de la secante, vemos


que el mtodo de Newton-Raphson converge ms rpido (para 2 en contra 1,6).
Sin embargo, el mtodo de Newton-Raphson requiere la evaluacin de ambos f y su
derivada en cada paso, mientras que el mtodo de la secante slo requiere la
evaluacin de f. Por lo tanto, el mtodo de la secante puede muy bien ser ms rpido
en la prctica.

[editar]Ejercicio de ejemplo

Utilice el mtodo de la secante para encontrar una raz real de la ecuacin


polinomial: F(x)=x3+2x2+10x-20=0.

Utilizando la ecuacin:

Obtenemos:

Y mediante x0=0 y x1=1 se calcula x2


Los valores posteriores son los siguientes:

Ahi tenemos el resultado, cuando

Comprobando el resultado graficando la funcin utilizando software


obtenemos:

Si bien no se converge a la raz tan rpido como resolvindolo utilizando


el mtodo Newton-Raphson, la velocidad de convergencia no es tan
lenta como resolvindolo por el mtodo de punto fijo; entonces se tiene
para este ejemplo una velocidad de convergencia intermedia.

[editar]Cdigo en Fortran 90
Programa escrito en Fortran 90 correspondiente al ejemplo f(x) = x3 +
2x2 + 10x - 20

PROGRAM Metodo_Secante
IMPLICIT NONE
REAL (KIND = 8) :: x0, x1, x, f0, f1, f, tol
= 1.0E-3
INTEGER (KIND = 1) :: i, ITER_MAX = 25
EXTERNAL f

x0 = 0. ! aproximacin
inicial 1
x1 = 1. ! aproximacin
inicial 2
f0 = f(x0)
f1 = f(x1)

DO i = 2, ITER_MAX
x = x1 - (x1 - x0)*f1/(f1 - f0)
IF (ABS(x - x1).LT.tol) THEN
PRINT*, 'La raz es:', x, 'en
iteracin No:', i
EXIT
END IF
x0 = x1
x1 = x
f0 = f1
f1 = f(x)
END DO

IF (i.GT.ITER_MAX) THEN
PRINT*, 'No se hall raz: cambiar
aprox. iniciales o aumentar ITER_MAX'
END IF

END PROGRAM Metodo_Secante

FUNCTION f(x) RESULT (funcion)


IMPLICIT NONE
REAL (KIND = 8) :: funcion, x
INTRINSIC :: cos

funcion = x**3 + 2.*x**2 + 10.*x - 20.


! funcin

END FUNCTION f

Para compilar en GNU/Linux con compilador de GNU, se escribe en una


terminal:

$ gfortran programa.f90 -o programa


$ ./programa

[editar]Cdigo en Matlab

Programa escrito en Matlab para ejecutar el mtodo de la secante.

% Una implementacin del mtodo de la secante para


bsqueda de raices en
% funciones continuas dentro de un intervalo.
%
% Por Gerardo Tinoco Guerrero
%
% Ejemplo:
% Ejecutar las siguientes lineas dentro de la ventana
de comandos:
%
% ff = @(x)(x.^2-4)
% x = secante(ff, 2, 5, 0.0001);
%
% Se buscar la raz de la funcin (x^2)-4 tomando
como puntos iniciales para
% el mtodo de la secante a = 2 y b = 5, con una
tolerancia tol = 0.0001.

function xs = secante(fun,a,b,tol)
fprintf('Mtodo de la secante\n\n');
i = 1;
fa = feval(fun, a);
fb = feval(fun, b);
xs = b - ((b - a) / (fb - fa))*fb;
error = abs(b - a);
fprintf('Iter. \t a \t \t b \t \t Xs \n');
fprintf('%2i \t %f \t %f \t %f \n', i, a, b, xs);

while error >= tol


b = a;
a = xs;
fb = feval(fun,b);
fa = feval(fun,a);
xs = b - ((b - a)/(fb - fa))*fb;
error = abs(b - a);
i = i + 1;
fprintf('%2i \t %f \t %f \t %f \n', i, a, b, xs);
end
w = feval(fun,xs);
fprintf('\n La mejor aproximacin a la raiz tomando
una tolerancia de %f es \n x = %f con \n f(x) = %f \n
y se realizaron %i iteraciones\n', tol, xs, w, i);
end

También podría gustarte