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.1 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.
En el pasado Scilab podía ser utilizado en el análisis de sistemas, pero no podía interactuar con el exterior. Hoy en día se pueden construir interfaces para que desde Scilab se pueda manejar un dispositivo, se conecte a la red a través de Tcp (Protocolo de Control de Transmisión) o Udp (User Datagram Protocol), etc. Esto brinda la posibilidad de conectar una placa de adquisición de datos a Scilab y de esta forma el control de una planta on-line.
Historia
Ejemplos en 3D, en Scilab 4.0.
Desde julio de 2012, Scilab Enterprises desarrolla y publica Scilab.
Sintaxis
Scilab posee su propio lenguaje de programación, orientado al uso de matrices y vectores. Es un lenguaje interpretado. Scilab incorpora su propio editor llamado SciNotes, aunque está disponible también Scipad. La extensión de estos archivos es *.sce o *.sci. Ejemplo del programa hola mundo:
// línea de comentario, como en C++ clc // limpia la pantalla disp("Hola Mundo") // imprime Hola Mundo
--> A=[2/3 3/5; 21 7]
Gráficos
Gráfico de la función
t = [0 : 0.001 : 2 * %pi] y = sin(t) xlabel("eje X"); ylabel("Eje y"); title("Título del gráfico") plot(t, y)
i = [-2 : 0.05 : 2] j = [-3 : 0.1 : 3] [u,v] = meshgrid(i,j) w = 5 * u .^ 2 - v .^ 2 plot3d(u, v, w)
Lo primero es crear una función que de cuenta de las anteriores ecuaciones (es decir que al ingresarle,
y
esta devuelva
y
) esta puede crearse con SciPad y se puede guardar con el nombre de vdp.sci y contiene lo siguiente:
function fxy = vdp(x, y) fxy = zeros(2,1) fxy(1) = y(2) fxy(2) = -y(1) + y(2) * (1 - y(1) * y(1)) endfunction
getf vdp.sci//"getf" ya no existe a partir de la versión 5.3. Utilícese "exec" en su lugar x0 = 0.01 y0 = [0.00001; 0.00001] t = [0.01 : 0.01 : 5000 * 0.01] yt = ode(y0, x0, t, vdp) x = yt(1, :) y = yt(2, :) plot2d(x, y, 2)
Polinomios y cálculo simbólico
Scilab tiene funciones diseñadas especialmente para el tratamiento de polinomios y cálculo simbólico (aunque existen otros que facilitan la transcripción de texto como Máxima). Por ejemplo para insertar el polinomio:
Se utilizan los siguientes comandos (nótese que los coeficientes del polinomio se insertan del término con menor ordenhasta el término de orden mayor
poniendo ceros en los términos no existentes:
y = poly([-3 1/2 0 5], "x", "coeff")
s = roots(poly([-3 1/2 0 5], "x", "coeff"))
s = roots(y)
Se pueden hacer operaciones simbólicas entre los polinomios. Por ejemplo si se quiere hacer la siguiente operación:
podemos proceder con las siguientes órdenes:
p1 = poly([1 1], "x", "coeff") p2 = poly([-1 1], "x", "coeff") oper1 = p1 * p2 oper2 = oper1 ^ 2
f = horner(oper2, 3)
Estos procedimientos sirven y funcionan de igual forma para funciones racionales, lo cual es muy útil en la teoría de control. Por ejemplo se puede obtener el producto (la suma, la diferencia o el cociente) de dos funciones definidas como siguen:
;
Lo que en Scilab se realiza de la siguiente forma (nótese la forma de definir las funciones, de forma similar como se hace en Matlab:
s = poly(0, "s") // se define la variable s como un polinomio de orden 1 g = s / (s ^ 2 + 1) h = 1 / s gh = g * h
como un polinomio con raíz en cero.
Fracciones parciales
El programa también tiene opciones para cálculo simbólico. Por ejemplo, sí se tiene la siguiente función racional:
puede ser introducida por los siguientes comandos:
s = poly(0, "s") g = s ^ 2 / ((s + 1) ^ 3 - 2)
puede ser recuperado en variables mediante los siguientes comandos:
-->numerador = numer(g) numerador = 2 s -->denominador = denom(g) denominador = 2 3 - 1 + 3s + 3s + s
Xcos
El programa Scilab tiene un entorno similar a Simulink de Matlab para simulación de sistemas dinámicos y resolución de sistemas de ecuaciones diferenciales. Este entorno posee varios paquetes que incluye algunas herramientas para simulación sencilla de circuitos eléctricos y termo hidráulica.
Para lanzar el entorno desde Scilab basta con poner el siguiente comando:
xcos
Se lanza una nueva ventana, desde en la cual se insertan y conectan todos los bloques a voluntad del usuario.
Paquetes disponibles para Scilab (Toolbox)
A partir de la versión 5.2 se puede consultar: http://atoms.scilab.org/ para obtener un listado de módulos que extienden las capacidades de Scilab.
Para instalar módulos, podemos abrir Atoms haciendo click en Applications->Module Manager ATOMS, seleccionamos la aplicación y ATOMS la descarga de internet y la instala.
Programas similares
Referencias
- Modeling and Simulation in Scilab/Scicos. Stephen L. Campbell, Jean-Philippe Chancellier and Ramine Nikoukhah
- The Present and Future of Scilab’s Engineering Application. Zhe Peng, Longhua Ma. http://www.equalis.com/resource/dynamic/forums/20101012_150034_22180.pdf
- Scicos Hardware In The Loop http://www-scicos.inria.fr/scicoshil.html
- Articulo que describe una aplicación http://www-scicos.inria.fr/ScicosHIL/angers2006eng.pdf
No hay comentarios:
Publicar un comentario