Método de la Secante en Matlab (código).

[Recuerda que en este Blog los enlaces para la descarga del código se encuentran al final del artículo.]

Continuamos con los métodos utilizados para hallar raíces de ecuaciones y hoy es el turno del conocido método de la secante, cómo vimos anteriormente el Método de Newton-Raphson es uno (sino el) método mas usado para hallar las raíces de una función real bien definida, pero uno de los potenciales inconvenientes de implementar este algoritmo es el echo de tener que evaluar la derivada de la función, esto naturalmente no representa un problema si hablamos de polinomios y otras funciones simples, pero en algunos casos nos encontramos con ciertas funciones que no son tan elementales y la función es complicada y difícil de evaluar y claramente de derivar, para evitar un poco el costo computacional de hallar dichas derivadas, estas pueden ser aproximadas mediante diferencias finitas.

(recuerden que el código se encuentra al final para su descarga)

Como en publicaciones anteriores, intentaré explicar e ilustrar el método fácilmente, entonces la pregunta es ¿en que consiste el método de la secante? muy bien, este método por lo regular es enseñado después del método de Newton-Raphson por lo que podemos partir del echo de que también se intenta llegar a la raíz mediante una recta que en el caso de Newton es tangente a la curva en el punto [Xn,F(Xn)] pero cómo el nombre lo dice este método se basa en una aproximación a esa tangente que se obtenía con la derivada y que ahora será una secante a la curva definida por la función, no se preocupen, lo veremos en la siguiente figura.

Imagen

Primera iteración del método de la secante.

El método necesita de dos valores iniciales, Xo y X1 para el ejemplo de la imagen, entonces se traza una recta para [X0,F(Xo)] y [X1, F(X1)] , cuando se tiene esta recta entonces la abscisa Xn+1 viene dada por el lugar donde la recta corta al eje X, en el ejemplo de la figura, como vemos, la abscisa Xn+1 será X2 y es claro que X2 es el lugar donde la recta cortó el eje X, luego el proceso se repite y la siguiente recta que se traza será entre el punto [X1,F(X1)] y [X2, F(X2)] y Xn+1 será el lugar donde esta nueva recta corte al eje.

Hablando matemáticamente tenemos la aproximación de la derivada F'(X) para la figura mediante diferencias finitas como:

secante

Con la fórmula de Newton-Raphson:

newton2

entonces reemplazando en ella la aproximación de diferencias finitas llegamos a:

secante

si se siente perdido con la formula anterior entonces la puede relacionar con el ejemplo que hemos tratado donde las variables son entonces X0 X1 y X2, así:

secante

el resto del método depende ya de elegir una nivel de precisión aceptable y de realizar algún tipo de visualización para que el usuario pueda determinar los valores iniciales X0 y X1.

CÓDIGO EN MATLAB.

Luego de haber visto algo de “teoría” y comprender cómo funciona el método no queda mas que implementarlo en Matlab (a eso vinimos ¿no?) entonces inicialmente declaramos a X como variable simbólica (syms) y en segundo lugar  cómo siempre me gusta (al igual que en los demás métodos donde se necesita de un valor inicial), realizar una visualización del comportamiento de la función para que de esta forma se pueda hacer una elección adecuada de los valores, recordemos que la convergencia de estos métodos se ve bastante afectada por la elección de esos valores, entonces:

secante

A continuación, luego de que el usuario ha ingresado la función y después de ver el comportamiento de la curva que esta define, procedemos a pedir los valores para Xo y X1:

secante

Sabiendo que el usuario ya ha establecido los valores iniciales necesarios, entonces definimos los valores iniciales de la constante de ‘tolerancia’ y el error, estos son valores arbitrarios, es decir para que al menos se cumpla el primer ciclo while, el valor de la tolerancia o precisión puede ser definido por nosotros o el usuario, y debe ser un valor bastante bueno, aunque depende de nuestra aplicación.

Sin título

Finalmente dentro del bucle while aplicamos la formula de la secante para calcular el Xn+1, posteriormente, con este nuevo valor calculamos el error de la aproximación y para terminar reasignamos los valores de las variables y listo, el valor retornado debería ser el valor aproximado de la raíz si la hay.

EJEMPLO.

Ahora estaría bien, al igual que en los artículos anteriores, comprobar el comportamiento del código que desarrollamos, y para eso proponemos hallar la raíz de la función:

secante

Esta función ya la hemos tratado en métodos anteriores y sabemos que su raíz se encuentra en X=0.56714329, entonces sin mas preámbulo, lo que hacemos a continuación es llamar la función ‘Secante’ en la command window, asegurándonos de tener el directorio con la dirección correcta donde se encuentra el archivo, así:

secante

Inmediatamente después de ingresar la función, el programa nos pedirá un par de limites, superior e inferior respectivamente, aunque este paso no pertenece al método me parece una buena práctica cuando de estimaciones se trata, pero de igual forma ustedes pueden modificar esa parte el código.

sin2

Para este ejemplo escogimos los limites convenientemente como 0 y 2, así podemos apreciar bien el lugar de corte de la función con el eje X (raíz), resultado la siguiente gráfica:

Sin título

A continuación el programa nos pedirá ahora que ingresemos las dos estimaciones, para Xo y X1, en nuestro caso, luego de observar la gráfica anterior, los valores serán 0 y 1 respectivamente, luego de ingresar este par de valores y dar ‘ENTER’ el programa nos arrojará el valor de la raíz que muestra la imagen.

sin2

cómo les había comentado anteriormente el número de decimales que muestra Matlab puede ser modificado, en mi caso he puesto que muestre bastantes para hacer mayor claridad sobre la precisión, cómo era de esperar el valor que nos entregó el programa es el valor de la raíz con una buena precisión, para confirmar si evaluamos este valor en la función obtenemos:

secante

Un 1 con 13 ceros a la izquierda, para mi un muy buen aproximado, de esta forma terminamos lo referente a la implementación y explicación de este importante método, como siempre el código de esta práctica lo pueden encontrar en este enlace para su descarga y espero que este articulo les sea de ayuda. Recuerden que “tomarse el tiempo para comentar, es una forma de agradecer el tiempo del autor para realizar este documento”.

4 comentarios en “Método de la Secante en Matlab (código).

  1. Pingback: Método de la Secante en Scilab para Raices de Ecuaciones | El Blog de Programación para Ingenierías

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s