Método de la Secante en Scilab para Raices de Ecuaciones

[RECUERDA, EN ESTE BLOG LOS CÓDIGOS SE ENCUENTRAN AL FINAL PARA SU DESCARGA.]

Hace un tiempo habíamos estado hablando de los métodos numéricos más importantes para hallar raíces de ecuaciones, algunos de intervalo y otro que solo necesitaban un valor inicial para comenzar a trabajar, antes hablábamos del conocido método de la secante para Matlab en este post, y luego de un tiempo de haber comenzado a conocer más sobre Scilab decidimos comenzar a hacer nuestras implementaciones en este poderoso software libre.

A continuación explicaremos a grandes rasgos el algoritmo o los pasos que sigue este método para dar con la raíz de la función que estamos buscando.

¿En qué consiste el método de la secante?

Anteriormente cuando hablamos del método de Newton-Raphson, nos encontramos con el ‘inconveniente’ que para llevar a cabo este método necesitábamos conocer la derivada de la función que íbamos a procesar. En el método de la secante no necesitamos la derivada, la podemos aproximar por diferencias finitas, es decir que si tengo una función f(x) podemos aproximar su derivada de la siguiente forma:

secanteAhora el método no hace uso de la tangente a la curva en un punto como era el caso de Newton-Raphson sino que se hace uso, como su nombre lo indica de una recta secante para lo cual se necesitan dos puntos, esto lo vemos en la figura 1.

secante

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

El método necesita dos puntos iniciales Xo y X1, posteriormente se ‘traza una recta que une los puntos [Xo,F(Xo)] y [X1,F(X1)] entonces el valor de la abscisa donde esa nueva recta corta al eje X será Xn+1 que en el ejemplo de a figura 1 vemos que equivale a X2, posteriormente se repite el proceso y la nueva recta se trazará desde el punto [X1,F(X1)] a [X2,F(X2)] y el nuevo Xn+1 será el nuevo corte que tenga la recta con el eje X es decir en nomenclatura será X3, generalizado este procedimiento se tiene entonces.

Aproximación a la pendiente de la recta, o la derivada de la función:

secanteCon la ecuación de Newton-Raphson:

newton2

Y reemplazando la derivada en la ecuación de Newton-Rpahson, llegamos a la ecuación para el método de la secante:

secante

Si se siente confundido con la ecuación anterior entonces relaciónela con el ejemplo de la figura 1, para la primera iteración del método, entonces Xn-1 es Xo, Xn es X1 por lo tanto XN+1 será X2, ahora ¿cómo quedaría la ecuación para hallar a X2?:

secante

Y eso es todo, así iremos entonces calculando cada nuevo Xn+1 en este método y al final este será el valor aproximado de la raíz.

Código en Scilab.

Para este código, definimos una función a la cual llamaremos secante.sci, la cual puede o no recibir parámetros, en nuestro caso no recibirá parámetros. El funcprot(0) que ven al inicio es para evitar que Scilab nos muestre Warnings cuando modificamos y redefinimos dicha función (es para evitar la molestia), posteriormente definimos también la variable que será retornada Xa que será la equivalente a Xn+1 y que será donde retornemos el valor de la raíz, luego, como hemos hecho con muchos de los métodos donde es necesario que se ingresen los valores de un intervalo, se hace una visualización del comportamiento de la gráfica y a partir de ahí se pueden escoger mejor los límites, todo esto se ve a continuación.

scisecante1

Cuando ya se ha hecho la respectiva visualización, se piden los datos Xo y X1 para comenzar el método, luego instanciamos las variables error (err) y tolerancia al error, con estas se determinará cuando termina el programa, entre menor sea la tolerancia al error mayor será la precisión.

scisecante2

Finalmente cuanto todas las variables necesarias están instanciadas, se da inicio a las iteraciones como se ve a continuación, donde se aplica la formula que vimos anteriormente para el método de la secante, cuando el error es menor que la tolerancia que le hemos dado, entonces el ciclo termina y se retorna la variable Xa la cual contiene la raíz que buscamos.

scisecante3

¡Un ejemplo!

A continuación te mostramos como es el funcionamiento del código anterior, vamos a buscar cuando se hace 0 la función f(x)=exp(-x²)-x, la cual mostramos aquí abajo.

secanteEn primer lugar debemos asegurarnos de tener el archivo secante.sci en el folder donde nos encontramos trabajando en scilab para que este lo reconozca a la hora de cargar la función en el worspace, después de verificado lo anterior procedemos a cargar dicha función al espacio de trabajo de Scilab, lo hacemos mediante el comando exec(‘secante.sci’,-1) damos ‘enter’ y luego usamos la sentencia deff() para definir la función que vamos a usar, y así cada vez que vayamos a cambiar la función, en este caso f(x)=exp(-x)-x. Finalmente llamamos a la función secante().

scisecante4Inmediatamente iniciamos la función se nos pide ingresar un valor inferior del eje X y otro superior para realizar la visualización del comportamiento de la función en ese tramo, a lo que, en este caso ingresamos 0 y 3, entonces se crea una ventana gráfica como se ve a continuación.

scisecante5

Y la gráfica que se muestra para este caso es la siguiente, donde podemos ver aproximadamente donde se produce el corte con X uqe es aproximadamente 0.6.

plotUna vez visualizada la gráfica (y sin cerrar la ventana del dibujo) se nos pedirá ingresar los dos valores que necesita el método, por lo que ingresaremos dos valores arbitrarios, por ejemplo -3 y 3 respectivamente, una vez damos ‘enter’ el programa rápidamente nos retornará la raíz de la función.

scisecante6

Y si luego queremos comprobar el resultado podemos evaluar ese valor en la propia función como a continuación.

errComo pueden ver el resultado es un número con exponente -8 eso es como 0.0000000015 y si queremos más precisión le disminuimos la tolerancia y ya está.

Hasta aquí este artículo, espero que les haya servido, como siempre el código lo pueden descargar desde aquí para que lo puedan manipular.

Si te ha servido este artículo, compártelo para que les llegue a mas personas y apoyar el uso de este software libre, saludos.

Autor: Julio Mrulanda.

Un comentario en “Método de la Secante en Scilab para Raices de Ecuaciones

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