metodo de la secante en scilab
TRANSCRIPT
Clase 4
Método de la Secante en Scilab para Raíces de Ecuaciones
Método de la Secante
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, 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.
Método de la Secante
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?
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 podemos aproximar su derivada de la
siguiente forma:
¿En qué consiste el método de la secante?
¿En qué consiste el método de la secante?
Ahora el método no hace uso de la tangente a la curva en un
punto como puede ser 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.
Fig 1. Primera iteración del método de la secante
¿En qué consiste el método de la secante?
El método necesita dos puntos iniciales , posteriormente se traza
una recta que une los puntos entonces el valor de la abscisa
donde esa nueva recta corta al eje será que en el ejemplo de a
figura 1 vemos que equivale a , posteriormente se repite el
proceso y la nueva recta se trazará desde el punto y el nuevo
será el nuevo corte que tenga la recta con el eje es decir en
nomenclatura será , generalizado este procedimiento se tiene
entonces.
Aproximación a la pendiente de la recta, o la derivada de la función:
Método de la Secante
Entonces relaciónela con el ejemplo de la figura 1,
para la primera iteración del método, entonces
es , es por lo tanto será , ahora ¿cómo quedaría
la ecuación para hallar a ?:
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.
Código en Scilab.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 que será la equivalente a
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.
Código en Scilab.
Código en Scilab.
Cuando ya se ha hecho la respectiva
visualización, se piden los datos 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.
Código en Scilab.
Código en Scilab.
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 la cual contiene la raíz que buscamos.
Código en Scilab.
Código en Scilab.
¡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 , la cual
mostramos aquí abajo.
Código en Scilab.
En 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().
Código en Scilab.
Código en Scilab.
Inmediatamente 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.
Código en Scilab.
Código en Scilab.
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.
Código en Scilab.
Código en Scilab.
Una 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.
Código en Scilab.
Código en Scilab.
Y si luego queremos comprobar el resultado
podemos evaluar ese valor en la propia función
como a continuación.
Código en Scilab.
si queremos más precisión le disminuimos la
tolerancia y ya está