[RECUERDA, EN ESTA PÁGINA EL CÓDIGO SE ENCUENTRA AL FINAL PARA SU DESCARGA]

Una de los usos mas importares en la aplicación de los métodos numéricos es el de hallar las raíces de ecuaciones o también llamados ceros de las funciones, ya sean funciones lineales o no lineales, como siempre, los métodos numéricos son usados en las ocasiones donde lo que necesitamos no requiere de la precisión exacta como cuando se hallan dichos valores analíticamente, es decir con papel y lápiz y hacer ciertos despejes, en algunos casos esto resulta trivial, pero en otros, no resulta tan fácil, y si se hicieran de forma simbólica, el costo computacional no permitiría que fuera para nada optimo, es aquí donde entran nuestros métodos numéricos a salvar nuestros diseños o cualquier trabajo que con base a esos datos estemos desarrollando.

Existe gran variedad de métodos para hallar dichas raíces de ecuaciones, algunos son originales, otros tantos son derivaciones de estos, o corrigen falencias presentadas por los originales, haciéndolos mas óptimos tanto computacionalmente hablando como más precisos en sus resultados.

En esta vez será de nuestro interés el desarrollo de un tipo de métodos, conocidos como “métodos de intervalo” partiendo del hecho que un intervalo, matemáticamente hablando es el conjunto que esta comprendido entre dos valores.

Los métodos de intervalo, sacan ventaja del hecho que una función normalmente cambia de signo en la vecindad de una raíz como se ve en la figura 1.

cambio de signo en la vecindad de una raíz.
cambio de signo en la vecindad de una raíz.

En la figura 1 se puede apreciar lo anteriormente dicho, donde en un intervalo comprendido entre XL (lower) y XU (upper) la función cambia de signo al cortar el eje x, es esta situación en particular la que aprovechan los métodos de intervalo.

El algoritmo de la bisección es muy básico y consta de los siguientes pasos:

  1. Escoger las estimaciones iniciales XL y Xu es decir, el intervalo, de tal forma que se cumpla que:

biseccion

       2.  Realizar una división del intervalo que corresponderá a un estimado de la raíz:

biseccion

       3.   Realizar las siguientes evaluaciones para determinar el intervalo en el cual esta la raíz:

  • Si f(XL)*f(Xr)<0 la raíz se encuentra en el intervalo inferior, entonces Xu=Xr, y se retorna al paso 2.
  • Si f(XL)*f(Xr)>0 la raíz se encuentra en el intervalo superior, entonces XL=Xr, y se retorna al paso 2.
  • Si f(XL)*f(Xr)=0 la raíz es igual a Xr (muy poco probable), se terminan las iteraciones.

Código en Matlab.

En nuestro caso, inicialmente podemos hacer una representación gráfica de la función para que se vea con mayor claridad el intervalo apropiado para iniciar las iteraciones. (para ver la imagen mejor, dar clic sobre ella).

biseccion

Seguidamente de la visualización de la respectiva gráfica de la función, se pretende que el usuario ingrese los limites: ya sea que la función reciba estos como parámetros o de la siguiente forma dentro de la función:

biseccion

Debido a la posibilidad que el usuario ingrese un intervalo no apropiado, es decir un intervalo donde no se cumpla que la función cambia de signo, es bueno enviar un mensaje de advertencia, avisando que el intervalo no es valido, esto lo hemos hecho de la siguiente forma: (para visualizar mejor la imagen darle clic).

biseccion

Finalmente se inicia el método de bisección, con un ciclo, un umbral de error que ya hemos definido previamente de 0.000001% y con las respectivas sentencias condicionales ( if ) para cada uno de los 3 posibles casos: (dar clic en la imagen para ver mejor).

biseccion

Cabe aclarar que para el correcto llamado de la función, debe de ser previamente definida una variable simbólica ‘X’ con el comando SYMS de Matlab, y posteriormente escribir la función ‘Y’ correspondiente, para pasarla como parámetro a la función ‘biseccion(Y)’ como ilustra la siguiente imagen.

biseccion

Finalmente, después de la ejecución del código  la función de Matlab llamada bisección, nos retorna una variable con el respectivo valor aproximado de la raíz, con una precisión del 0.000001% de error.

El método de bisección en particular sirve para encontrar una raíz simple en una función fácil de evaluar, pero debido a que principalmente los métodos numéricos son usados para ecuaciones que no son tan fáciles de evaluar, las funciones programadas requieren de bastantes lineas de código y  se deben evaluar muchas veces para ir cambiando los límites para finalmente “encontrar” la raíz, este método ya no es tan efectivo. Debido a factores de este tipo, es muy importante que los algoritmos numéricos hagan lo más mínimo posible el número de evaluaciones de la función. Es por esto que el método de bisección se hace ineficiente, ya que la función debe ser evaluada en cada ciclo.

El código respectivo del programa mostrado en las imágenes anteriores, puede ser descargado aquí  puedes comentar las preguntas que tengas con respecto a este código.

Comentar es una forma de agradecer.

Anuncios