metodo de la secante en scilab

Post on 15-Apr-2017

697 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

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 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.

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á

top related