viernes, 14 de marzo de 2014

PROGRAMACIÓN DE MÉTODOS NUMÉRICOS EN SCILAB

Bienvenidos a este nuevo espacio donde aprenderemos a resolver las raíces de las ecuaciones mediante métodos numéricos utilizando el método analítico y el programa scilab.

QUE ES SCILAB?

Scilab es un software matemático, con un lenguaje de programación de alto nivel, para cálculo científico, interactivo de libre uso y disponible en múltiples sistemas operativos (Mac OS X, GNU/Linux, Windows). Desarrollado por INRIA (Institut National de Recherche en Informatique et en Automatique) y la ENPC (École Nationale des Ponts et Chaussées) desde 1990, por Scilab Consortium dentro de la fundación Digiteo desde 2008, Scilab es ahora desarrollado por Scilab Enterprises desde julio 2012.

Scilab fue creado para hacer cálculos numéricos aunque también ofrece la posibilidad de hacer algunos cálculos simbólicos como derivadas de funciones polinomiales y racionales. Posee cientos de funciones matemáticas y la posibilidad de integrar programas en los lenguajes más usados (Fortran, Java, C y C++). La integración puede ser de dos formas: por ejemplo, un programa en Fortran que utilice Scilab o viceversa. Scilab fue hecho para ser un sistema abierto donde el usuario pueda definir nuevos tipos de datos y operaciones entre los mismos.

Scilab viene con numerosas herramientas: gráficos 2-D y 3-D, animación, álgebra lineal, matrices dispersas, polinomios y funciones racionales, Simulación: programas de resolución de sistemas de ecuaciones diferenciales (explícitas e implícitas), Xcos: simulador por diagramas en bloque de sistemas dinámicos híbridos, Control clásico, robusto, optimización LMI, Optimización diferenciable y no diferenciable, Tratamiento de señales, Grafos y redes, Scilab paralelo empleando PVM, Estadísticas, Creación de GUIs, Interfaz con el cálculo simbólico (Maple, MuPAD), Interfaz con TCL/TK.

Además se pueden agregar numerosas herramientas o toolboxes hechas por los usuarios como Grocer una herramienta para Econometría u Open FEM (Una caja de Herramientas para Elementos Finitos), hecha por INRIA.
                                          
                                           CLICK PARA DESCARGAR SCILAB 5.4.1

MÉTODOS CERRADOS

Para resolver las  raíces de ecuaciones se ocupa de métodos que aprovechan el hecho de que una función cambia de signo en la vecindad de una raíz. A estas técnicas se les llama métodos cerrados, o de intervalos, porque se necesita de dos valores iniciales para la raíz. Como su nombre lo indica, dichos valores iniciales deben "encerrar", o estar a ambos lados de la raíz. Los métodos particulares descritos aquí emplean diferentes estrategias para reducir sistemáticamente el tamaño del intervalo y así converger a la respuesta correcta.
Como preámbulo de estas técnicas se analizarán los métodos gráficos para representar tanto las funciones como sus raíces. Además de la utilidad de los métodos gráficos para determinar valores iniciales, también son útiles para visualizar las propiedades de las funciones y el comportamiento de los diversos métodos numéricos.

MÉTODO DE LA BISECCIÓN

Cuando f(x) cambió de signo a ambos lados de la raíz. En general, si f(x) es real y continúa en el

intervalo que va desde xl hasta xu y f(x1) y f(xu) tienen signos opuestos, es decir:


                                                      f(x1),f(xu)< 0     
                      
Entonces hay al menos una raíz real entre x1 y xu.
Los métodos de búsqueda incremental aprovechan esta característica localizando un intervalo en el que la función cambie de signo. Entonces, la localización del cambio de signo (y, en consecuencia, de la raíz) se logra con más exactitud al dividir el intervalo en varios subintervalos. Se investiga cada uno de estos subintervalos para encontrar el cambio de signo. El proceso se repite y la aproximación a la raíz mejora cada vez más en la medida que los subintervalos se dividen en intervalos cada vez más pequeños.


El método de bisección, conocido también como de corte binario, de partición de intervalos o de Bolzano, es un tipo de búsqueda incremental en el que el intervalo se divide siempre a la mitad. Si la función cambia de signo sobre un intervalo, se evalúa el valor de la función en el punto medio. La posición de la raíz se determina situándola en el punto medio del subintervalo, dentro del cual ocurre un cambio de signo. El proceso se repite hasta obtener una mejor aproximación. 

EJEMPLO
Determine las raíces reales de la  función f(x)= (0.8-0.3x)/x.
Utilice el método de la bisección para localizar la raíz más pequeña. Use los valores iniciales xa= 1 y xb=3 con un error máximo de 0.1.

DATOS 
xa=1  (Limite inferior de la función xi)
xb=3 (Limite superior de la función xs)
error anterior = 0
emax=0.1

MÉTODO ANALÍTICO

Primera Iteracción
xr=(xa+xb)/2
xr=(1+3)/2
xr=2
error=|(xr-error anterior)/xr|* 100%
error=|(2-0)/2|*100%
error=100%
Segunda Iteracción
xr=(2+3)/2
xr=2.5
error=|(2.5-2)/2.5|*100%
error=20%
Tercera Iteracción
xr=(2.5+3)/2
xr=2.75
error=|(2.75-2.5)/2.75|*100%
error=9.09091%
Cuarta Iteracción
xr=(2.5+2.75)/2.5
xr= 2.625
error=|(2.625-2.75)/2.625|*100%
error=4.76190%
Quinta Iteracción
xr=(2.625+2.75)/2.625
xr= 2.68750
error=|(2.68750-2.625)/2.68750|*100%
error=2.32558%
Sexta Iteracción
xr=(2.625+2.68750)/2.625
xr= 2.65625
error=|(2.65625-2.68750)/2.65625|*100%
error=1.17647%
Septima Iteracción
xr=(2.625+2.68750)/2.625
xr= 2.67188
error=|(2.67188-2.65635)/2.67188|*100%
error=0.58480%
Octava Iteracción
xr=(2.625+2.67188)/2.625
xr= 2.66406
error=|(2.66406-2.67188)/2.66406|*100%
error=0.29326%
Novena Iteracción
xr=(2.66406+2.67188)/2.66406
xr= 2.66797
error=|(2.66797-2.66406)/2.66797|*100%
error=0.14641%
Decima Iteracción
xr=(2.66406+2.66797)/2.66406
xr= 2.66602
error=|(2.66602-2.66797/2.66602|*100%
error=0.07326%

UTILIZANDO EL PROGRAMA SCILAB 

Realizaremos a continuación estos sencillos pasos.
1) Debemos de tener instalado el programa de scilab en nuestro ordenador....
2) Luego de descargar y descomprimir el programa, procedemos a abrir el archivo Bisección_caso1.sce



3) Nos aparecerá una pantalla como se muestra a continuación.


4) Hacemos click en Ejecutar archivo sin eco....


5) Finalmente nos saldrá una pantalla como se muestra a continuación......

Donde  nos pedirá ingresar la función f(x), el límite Inferior xa, el límite Superior xb y el error Máximo emax como parámetros..... En este caso tomaremos los datos del ejemplo de arriba. 


Gráfica Error vs Iteracción 
Nota: 
-Prueba con otras funciones f(x) no solo con las que te mostramos en el ejemplo. 
-Recuerda al momento de ingresar el limite inferior y el limite superior debes ser un intervalo que contenga a la raíz,  
-Si te descargas Método de la Bisección por error, el error será la variable a  que controle el programa, si por el contrario encojes Método de la Bisección por iteracción será logico que ahora nuestra variable será controlada por la iteracción.

!Espero que te sirva de mucha ayuda!.

                           CLICK AQUI PARA DESCARGAR MÉTODO BISECCIÓN POR ERROR

                          CLICK AQUI PARA DESCARGAR MÉTODO BISECCIÓN POR ITERACCIÓN 

LINKS DE INTERÉS 
  • Métodos Numéricos para Ingenieros – Steven Chapra, Raymond P. – 5ta
                                             CLICK AQUI PARA DESCARGAR EL LIBRO
  • Manual en español de Programación Scilab 
                                CLICK AQUI PARA DESCARGAR EL MANUAL DE SCILAB