Scilab

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Scilab
Escilab.png
Scilab 5.2.2
Desarrollador
Scilab Enterprises
www.scilab.org, www.scilab-enterprises.com
Información general
Última versión estable 5.5.0 (info)
11 de abril de 2014; hace 4 meses (2014-04-11)
Género Computación técnica
Programado en C
Sistema operativo Windows
GNU/Linux
Mac OS X
Plataforma 32 bits (excepto Mac)
64 bits
Licencia CeCILL
Idiomas Inglés
En español No No

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.[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.[2] [3] [4]

Historia[editar]

Ejemplos en 3D, en Scilab 4.0.

Scilab fue creado en 1990 por investigadores del INRIA y de la École nationale des ponts et chaussées (ENPC). El Consorcio Scilab (Scilab Consortium en inglés) fue creado en mayo de 2003 para ampliar y promover Scilab como software de referencia en todo el mundo en el mundo académico y la industria.[5] En julio de 2008, con el fin de mejorar la transferencia de tecnología, el Scilab Consortium se unió a la Fundación Digiteo.

Desde julio de 2012, Scilab Enterprises desarrolla y publica Scilab.

Sintaxis[editar]

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

Scilab permite la operación de matrices. Ejemplo del uso de matrices:

A = \begin{bmatrix}
\frac{2}{3} & \frac{3}{5} \\
21 & 7 \\
\end{bmatrix}
--> A=[2/3 3/5; 21 7]

Gráficos[editar]

Gráfico de la función y=f(t)=sen(t)

t = [0 : 0.001 : 2 * %pi]
y = sin(t)
xlabel("eje X"); ylabel("Eje y"); title("Título del gráfico")
plot(t, y)
Senox.jpg

Gráfico de una función de dos variables w=f(x,y)=5x^2-y^2\cdot

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)
Meshgridscilab.jpg

Este programa integra numéricamente el sistema de ecuaciones diferenciales conocido como Oscilador de van der Pol:

\dot x=y

\dot y=-x+y(1-x^2)

Lo primero es crear una función que de cuenta de las anteriores ecuaciones (es decir que al ingresarle x ,y y t esta devuelva \dot x y \dot 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

Luego se ejecuta el siguiente script que usa la función anteriormente creada, invoca a la función ode de scilab y finalmente muestra la gráfica (que hace parte de la imagen mostrada en esta página):

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[editar]

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:

y=f(x)=5\cdot x^3+\frac{1}{2}\cdot x-3

Se utilizan los siguientes comandos (nótese que los coeficientes del polinomio se insertan del término con menor orden x^0 hasta el término de orden mayor x^3 poniendo ceros en los términos no existentes:

y = poly([-3 1/2 0 5], "x", "coeff")

Para hallar las raíces de un polinomio dado, se utiliza el comando roots que se emplea de la siguiente forma:

s = roots(poly([-3 1/2 0 5], "x", "coeff"))

o si ya se tiene definido un polinomio (en el ejemplo se ha definido como y')':

s = roots(y)

El vector s guarda las raíces del polinomio, sean estas reales o complejas.

Se pueden hacer operaciones simbólicas entre los polinomios. Por ejemplo si se quiere hacer la siguiente operación:

z=((x+1)\cdot (x-1))^2=(x^2-1)^2=x^4-2\cdot x^2+1

podemos proceder con las siguientes órdenes:

p1 = poly([1 1], "x", "coeff")
p2 = poly([-1 1], "x", "coeff")
oper1 = p1 * p2
oper2 = oper1 ^ 2

Si se desea evaluar el anterior polinomio en un punto determinado y guardar su valor en una variable f, se pueden utilizar los siguientes comandos:

f = horner(oper2, 3)

Nótese que se ha evaluado el polinomio en el punto x=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:

G(\bold{s})=\frac{\bold{s}}{\bold{s}^2+1}; H(\bold{s})=\frac{1}{\bold{s}}
G(\bold{s})\cdot H(\bold{s})=\frac{1}{\bold{s}^2+1}

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

Los polinomios se pueden declarar también por sus raíces no incluyendo la opción "coeff" en el comando "poly", como se hizo en el ejemplo anterior al definir \bold{s} como un polinomio con raíz en cero.

Fracciones parciales[editar]

El programa también tiene opciones para cálculo simbólico. Por ejemplo, sí se tiene la siguiente función racional:

G(s)=\frac{s^2}{(s+1)^3-2}

puede ser introducida por los siguientes comandos:

s = poly(0, "s")
g = s ^ 2 / ((s + 1) ^ 3 - 2)

El numerador y el denominador de la función G(s) 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[editar]

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.

Xcos-ejemplo.png

Paquetes disponibles para Scilab (Toolbox)[editar]

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.

Atoms.png

Programas similares[editar]

Referencias[editar]

  1. Modeling and Simulation in Scilab/Scicos. Stephen L. Campbell, Jean-Philippe Chancellier and Ramine Nikoukhah
  2. The Present and Future of Scilab’s Engineering Application. Zhe Peng, Longhua Ma. http://www.equalis.com/resource/dynamic/forums/20101012_150034_22180.pdf
  3. Scicos Hardware In The Loop http://www-scicos.inria.fr/scicoshil.html
  4. Articulo que describe una aplicación http://www-scicos.inria.fr/ScicosHIL/angers2006eng.pdf
  5. Gomez, Claude (julio de 2003). «SCILAB Consortium launched» (en inglés). Consultado el 28 de marzo de 2011.

Enlaces externos[editar]

Wikilibros