Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorial de Scilab
Tutorial de Scilab
Qu es Scilab?
Scilab fue desarrollado para aplicaciones de control de sistemas y
procesamiento de seales. Es un formato de cdigo distribuido libremente.
Scilab fue creado con tres partes distintas: un interpretador, libreras de
funciones (procedimientos Scilab) y libreras de Fortran y C.
Uno de los conceptos bsicos de la sintaxis Scilab es su habilidad de manejar
matrices: con manipulaciones bsicas como concatenacin, extraccin o
transposicin que son llevadas a cabo inmediatamente tan bien como las
operaciones bsicas como suma y multiplicacin. Scilab tambin maneja
objetos ms complejos que matrices numricas. Por ejemplo, para
aplicaciones de control se requiere manipular matrices racionales o
polinomiales. Esto es hecho en Scilab manipulando listas y escribindolas, lo
que permite una representacin simblica natural de objetos matemticos
complicados como funciones de transferencia.
Scilab provee una variedad de poderosas funciones para el anlisis de sistemas
no lineales. La integracin de modelos dinmicos explcitos a implcitos puede
ser llevada a cabo numricamente. La barra de herramientas scicos permite
una definicin grfica y simulacin de sistemas hbridos interconectados.
Existen facilidades de optimizacin numrica para la optimizacin no lineal
(incluyendo optimizacin no diferencial), optimizacin cuadrtica y lineal.
Scilab tiene una programacin ambiental abierta en donde la creacin de
funciones y libreras de funciones estn completamente en las manos del
usuario. Las funciones son reconocidas como objetos de datos in Scilab y
pueden ser manipulados o creados como otros objetos de informacin. Por
ejemplo, funciones pueden ser definidas en Scilab y pasadas como una entrada
o salida de argumentos de otras funciones. Adems, Scilab acepta caracteres
que permiten la creacin de funciones en lnea. Las matrices de caracteres
tambin son manupiladas como matrices ordinarias.
Finalmente, Scilab es fcilmente interfasado con Fortan o programas de C.
Esto permite utilizar paquetes estandarizados y libreras en el ambiente de
Scilab.
La filosofa general de Scilab es proveer el siguiente tipo de ambiente
computacional:
Tener tipos de datos que sean variables y flexibles con una sintaxis
natural y fcil de usar.
Proveer un set razonable de funciones que sirva como base para una
extensa variedad de clculos.
Tener un ambiente abierto de programacin en donde nuevas funciones
puedan ser adheridas.
El objetivo de este tutorial es dar al usuario una introduccin a los comandos y
estructuras bsica de Scilab para que empiece a utilizarlo. Para informacin o
tutoriales en temas especializados como control, existen varios tutoriales y
documentos accesibles por internet.
Instalacin de Scilab en Windows.
Puede obtenerse una versin lista para instalar, con interface grfica, de la
siguiente direccin:
http://www.scilab.org/download/
Para MS Windows, baja e instala la versin:
scilab-4.1.2 installer for binary version
Podemos obtener una lista de las variable existentes con el comando who:
>who
yourvariablesare...
uAbascicos_pal
%scicos_menu%scicos_short%scicos_help
%scicos_display_modemodelica_libs
scicos_pal_libs%scicos_lhb_list%CmenuTypeOneVector
%helps
WSCIhomeSCIHOMECreateScilabHomeDir
PWDTMPDIRMSDOSSCIguilibsparselib
xdesslibpercentlibpolylibintlibelemlib
utillibstatslibalglibsigliboptlibautolib
roblib
soundlibmetalibarmalibtkscilibtdcslibs2flib
mtlblib%F%T%z%s%nan
%inf
COMPILER%gtk%gui%pvm%tk$
%t%f%eps%io%i%e
using31767elementsoutof5000000.
and62variablesoutof9231
yourglobalvariablesare...
LANGUAGE%helpsdemolist%browsehelpLCC
%toolboxes%toolboxes_dir
using1165elementsoutof11000.
and7variablesoutof767
Tipos de Datos
Constantes predefinidas.
Scilab provee como constantes predefinidas %i, %pi, %e, y %eps. La
constante %irepresenta 1 , %pies = 3.1415927, %ees l nmero de
Euler e=2.7182818... y %epses una constante que representa la precisin de
la mquina (%epses el numero ms grande para el que 1+%eps=1). %inf
y %nanson para Infinito y NounNumero respectivamente. Otras
constantes son %ty %fque son para verdadero (trae) y falso (false)
respectivamente.
Estas constantes estn protegidas y no pueden ser borradas ni modificadas por
el usuario.
Escalares y Matrices
La estructura fundamental en Scilab son las matrices, como se ver a
continuacin. Pero antes es necesario definir que es un escalar para Scilab.
Escalares.
Los escalares son nmeros reales o complejos. Los valores de los escalares
pueden ser asignados a nombres de variable escogidos por el usuario.
>a=5+2*%i
a=
5.+2.i
>B=2+%i;
>b=43*%i
b=
4.3.i
>a*b
ans=
26.7.i
>a*B
ans=
12.+i
Observa que Scilab evala inmediatamente lneas que terminan con espacio.
Las instrucciones que terminan con punto y coma son evaluadas pero no se
despliegan en pantalla.
Matrices.
Las matrices son la estructura fundamental en Scilab. Una matriz es un
arreglo rectangular donde cada elemento puede localizarse con don ndices, el
nmero de rengln y el nmero de columna. Conocer el manejo de matrices es
fundamental para el uso eficiente de Scilab.
Creacin de una matriz.
La forma ms fcil para crear una matriz es especificando directamente sus
elementos. Observa que los elementos de cada rengln pueden separarse con
espacios o con comas, y para indicar un nuevo rengln se utiliza el punto y
coma. Los elementos deben especificarse dentro de parntesis cuadrados.
-->A = [1 2 4; 5 7 9]
A =
1.
5.
2.
7.
4.
9.
-->B = [2,7;5,1]
B =
2.
5.
7.
1.
2.
8.
3.
9.
5.
3.
Observa que para acceder a los elementos de una matriz se utilizan parntesis
normales, no cuadrados!
Para extraer todos los elementos de la primera columna utilizamos:
-->A(:,1)
ans =
1.5
2.7
1.
2.
3.
4.
5.
Este comando podemos leerlo como: regresa la submatriz formada por los
elementos correspondientes desde el segundo rengln hasta el tercer rengln,
y desde la primera columna hasta la tercera columna.
Formacin de matrices a partir de otras matrices.
Podemos componer matrices a partir de otras matrices, mientras las
dimensiones sean congruentes. Por ejemplo:
-->A = [ 1 2 3; 5 7 9; 2 8 7]
A =
1.
5.
2.
2.
7.
8.
3.
9.
7.
-->B = [ 1; 5; 9]
B =
1.
5.
9.
-->C = [A B]
C =
1.
5.
2.
2.
7.
8.
3.
9.
7.
1.
5.
9.
Observa que A y B tienen que tener el mismo nmero de renglones para poder
hacer esta composicin.
Como ejercicio, explica como se forma la siguiente matriz compuesta:
-->D = [C; [A(3,:) B(2,1)]]
D =
1.
5.
2.
2.
2.
7.
8.
8.
3.
9.
7.
7.
1.
5.
9.
5.
Matrices especiales.
Scilab tiene varios comandos para generar algunas matrices especiales de uso
comn. Observa los siguientes ejemplos:
Generacin de una matriz con todos sus elementos igual a uno:
-->C = ones(4,3)
C =
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
1.
0.
0.
0.
0.
0.
0.
0.
0.
0.
1.
0.
0.
0.
0.
0.
1.
0.
0.
0.
0.
0.
1.
0.
0.
0.
0.
0.
1.
0.
1.
0.
0.
0.
0. 0.
0. 0.
0. 0.
0. - 1.
0. 0.
0.
0.
0.
0.
2.
0.
0.
2.
0.
0.
0.
0.
0.
3.
0.
0.
0.
0.
0.
4.
0.
0.
0.
0.
0.
0.3321719
0.5935095
0.5015342
3.
2.
8.
7.
-->B = A'
B =
1.
3.
8.
5.
2.
7.
5.
7.
9.
4.
-->C = 2*B
C =
4.
6.
10.
14.
18.
8.
3.
5.
7.
1.
9.
25.
37.
7.
-->C=A+B
C =
10. 28.
7. 38.
12. 16.
-->D=A-B
D =
- 6. - 22.
3. - 36.
2. 2.
Multiplicacin de matrices.
La multiplicacin de matrices se representa con el smbolo *. Recuerda que
para que dos matrices puedan multiplicarse, deben ser conformes (el nmero
de columnas de la primera matriz tiene que ser igual al nmero de columnas
de la segunda matriz), y que la multiplicacin de matrices no es conmutativa.
El resultado tiene el mismo nmero de renglones que la primer matriz, y el
mismo nmero de renglones que la segunda.
->F = [2, 5, 9; 1, 7, 2]
F =
2.
1.
5.
7.
9.
2.
5.
7.
5.
2.
3.
8.
4.
9.
-->B = [0 0 25; 7 1 2; 2 1 3; 7 2 1]
B =
0.
7.
2.
7.
0.
1.
1.
2.
25.
2.
3.
1.
-->C = A .* B
C =
0. 0. 75.
14. 7. 16.
6. 5. 12.
0. 4. 9.
-->D = B .* A
D =
0. 0. 75.
14. 7. 16.
6. 5. 12.
0. 4. 9.
Vectores.
Un caso especial muy importante de matrices en Scilab son los vectores, que
se manejan como una matriz de un solo rengln (vector rengln) o de una sola
columna (vector columna). Los elementos de un vector pueden accederse
utilizando solo un ndice. Observa los siguientes ejemplos:
-->X = [1 5 7 9]' // Vector columna
X =
1.
5.
7.
9.
-->X(3)
ans =
7.
-->Y = [2 4 6 8] // Vector rengln
Y =
2.
4.
6.
8.
-->Y(4)
ans =
8.
-->X=0:10
X =
0.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
0.5
9.5
1.
1.5
2.
2.5
3.
3.5
4.
4.5
5.
5.5
6.
6.5
7.
7.5
8.
8.5
column 21
10.
Funciones en Scilab
Las funciones son otro de los componentes fundamentales de Scilab. Existen
cientos de funciones predefinidas, y el usuario puede definir sus propias
funciones fcilmente.
Por ejemplo, algunas de las mas utilizadas son: log(), sin(), cos(), tan(), asin,
acos, atan, exp(), abs(), sqrt().
Algo muy importante que debes recordar es que la mayora de las funciones
matemticas en Scilab aplican tanto a nmero reales como complejos.
Ejemplos:
-->sin(0.5)
ans =
0.4794255
-->c=sqrt(-9)
c =
3.i
-->exp(-3.2)
ans =
0.0407622
-->log(10)
ans =
2.3025851
Puede encontrarse informacin sobre lo que hace una funcin con el comando
help, por ejemplo:
-->help log
Calling Sequence
y=log(x)
Parameters
Description
log(x)
logm .
Examples
exp(log([1,%i,-1,-%i]))
See Also
exp
, logm , ieee ,
4.
6.
7.
5.
2.
-->det(A)
ans =
- 95.
9.
4.
8.
En Scilab, una funcin pude regresar una matriz o un vector. Tmbin pude
regresar mas de un resultado. Un ejemplo muy til es la funcin size(), que
nos sirve para determinar el orden de una matriz. Observa los siguientes
ejemplos:
B =
1.
2.
3.
5.
7.
5.
2.
3.
9.
4.
8.
2.
-->size(B)
ans =
4.
3.
-->[reng,cols]=size(B)
cols =
3.
reng =
4.
8.
64.
-->cubica(A)
ans =
3.
2.
4.
Observa que si utilizamos nuesta funcin con una matriz, la aplica a cada uno
de los elementos de sta!
Enseguida vamos a declarar una funcin que reciba como parmetro el radio
de un crculo, y regrese el valor del permetro y del rea.
function [p,a] = circulo(r)
// Regresa el perimetro del circulo de radio r en p,
// y el area en a.
p = 2 * %pi * r;
a = %pi * r * r;
endfunction
IMPORTANTE
Es muy importante dejar al menos una lnea en blanco al final del archivo,
ya que el interpretador de Scilab lo requiere!
Despus de cargar la funcin en Scilab, podemos utilizarla:
-->[perimetro,area] = circulo(3)
area =
28.274334
perimetro =
18.849556
Mtodos Numricos
Scilab incluye funciones pre-programadas para diversos mtodos numricos.
En seguida presentamos algunos de los mas utilizados.
Solucin de sistemas de ecuaciones lineales.
Resolver sistemas de ecuaciones lineales es muy sencillo con Scilab. La mejor
forma de mostrarlo es con un ejemplo:
Resolver el sistema:
5 x1 2 x 2 5 x3 2 x 4 5 x5 12
2 x1 12 x 2 5 x3 2 x 4 5 x5 2
4 x1 x 2 5 x3 22 x 4 5 x5 1
3 x1 2 x 2 5 x3 2 x 4 8 x5 5
3 x1 2 x 2 15 x3 3 x 4 21x5 5
2. - 5.
2. - 5.
22. - 5.
3.
3.
2. - 5. 2. - 8.
2. 15. 3. - 21.
Comprobacin:
-->A*X
ans =
12.
- 2.
- 1.
5.
5.
-->X = A \ b
X =
2.4985607
- 0.4645941
0.0540779
- 0.4553828
0.0481673
x sen(30 x)
dx
x 2
1 (
)
2
Observa que fsolve requiere una aproximacin inicial de la raz, en este caso
utilizamos 1.0.
Ahora utlizaremos la funcin fsolve para encontrar una raz del siguiente
sistema de ecuciones no lineales:
x2 y2
5 0
8 16
y 2 5sen( x ) 0
>fsolve([1.0,1.0]',Fxy)
ans=
6.3177262
0.4155362
Observa como tuvimos que pasar un vector con dos condiciones iniciales. El
resultado es un vector, donde el primer elemento correspode al valor de x, y el
segundo al valor a y, respetando el orden en que los asignamos al declarar la
funcin.
La funcin fsolve( ) tiene varias opciones, las cuales puedes explorar
utilizando el comando help.