Está en la página 1de 35

1

TUTORIAL BSICO DE SCILAB


Gustavo Adolfo Ovalles Rodrguez
Departamento de Matemticas y Estadstica - Universidad Francisco de Paula Santander

INTRODUCCIN 2
1. INICIANDO UNA SESIN EN SCILAB .. 3
1.1 SINTAXIS BSICA .. 3
1.2 OPERACIONES Y FUNCIONES BSICAS ... 5
1.3 POLINOMIOS ... 6

2. VECTORES Y MATRICES 7
2.1 OPERACIONES BSICAS CON MATRICES .. 9
2.2 SOLUCIN DE SISTEMAS LINEALES . 12

3. FUNCIONES DEFINIDAS POR EL USUARIO 13
3.1 PROGRAMACIN .. 17
3.1.1 COMANDOS FOR Y WHILE 17
3.1.2 COMANDO IF . 18

4. GRFICAS 19
4.1 GRFICAS EN DOS DIMENSIONES 19
4.2 GRFICAS EN TRES DIMENSIONES .. 25

5. MTODOS NUMRICOS 28
5.1 RACES DE ECUACIONES NO LINEALES . 28
5.2 INTEGRACIN NUMRICA .. 31
5.3 INTERPOLACIN LINEAL .. 31
5.4 ECUACIONES DIFERENCIALES ORDINARIAS 33

6. BIBLIOGRAFA .. 35
2

INTRODUCCIN

SCILAB es un entorno de programacin flexible que combina herramientas de anlisis numrico y
grfico. Es un software libre que se distribuye bajo licencia GPL y se encuentra disponible en
mltiples sistemas operativos como Windows, Unix y GNU/Linux. Fue desarrollado por INRIA
(Institut National de Recherche en Informatique et Automatique) y la ENPC (cole Nationale des
Ponts et Chausses), institutos de investigacin franceses desde 1990.

SCILAB se puede descargar de la pgina web: http://www.scilab.org/download/. Es un software
similar a MATLAB y a otros paquetes de clculo numrico que forman parte del software propietario.
Dentro de sus principales caractersticas se encuentran:
1. Contiene una amplia librera de funciones orientadas a procesos de computacin numrica con
innumerables aplicaciones en ingeniera y ciencias
2. Generacin de grficas en dos y tres dimensiones
3. Es un entorno de programacin flexible e interactiva que utiliza una sintaxis muy sencilla. El
usuario puede crear sus propias funciones y libreras de funciones
4. Posee paquetes de funciones destinados a aplicaciones especficas como: control lineal y no lineal,
procesamiento de seales, anlisis de redes, etc.
5. Permite integrar programas en los lenguajes ms usados como FORTRAN, C Y C++
6. SCILAB fue desarrollado bajo la filosofa del software libre. La tica del software libre propugna por
el derecho al libre acceso al conocimiento. Por tal razn, el usuario tiene la libertad de usar, copiar y
distribuir el programa. Tambin puede acceder al cdigo fuente y realizar modificaciones

Existe una gran variedad de tutoriales disponibles en la red. El sitio oficial del programa
www.scilab.org tambin contiene diversos enlaces a tutoriales, libros y artculos de inters.







3

1. INICIANDO UNA SESIN EN SCILAB
1.1 SINTAXIS BSICA

Al ejecutar SCILAB aparece la ventana del programa con el smbolo del prompt -->. En este momento
el programa puede recibir comandos y ejecutarlos. Los comandos se escriben despus del prompt y
son ejecutados presionando la tecla ENTER.
La expresin
--> x=4
Crea la variable x y le asigna el valor de 4. El programa muestra lo siguiente despus de dar ENTER:

SCILAB diferencia las minsculas de las maysculas. El carcter ; al final de un comando hace que
el programa no muestre el resultado en pantalla, sin embargo la orden es ejecutada:

Los nombres en SCILAB pueden tener hasta 24 caracteres y deben empezar con una letra o $. Despus
pueden tener nmeros, letras o smbolos como #, !, _, $. Ejemplo: castillo4, bergen_21, Alhambra#.
4

Es posible escribir simplemente una expresin, en este caso el programa crea una variable llamada
ans:

Los nmeros se pueden escribir en la notacin usual o utilizando la notacin cientfica.
Ejemplo:

Utilizando las teclas de desplazamiento derecha e izquierda es posible moverse a lo largo de la lnea
del comando que se ha escrito. Las teclas arriba y abajo permiten buscar una orden anterior con el fin
de editarla. Las siguientes combinaciones son muy tiles:
CTRL+a: regresa al inicio de la lnea del comando
CTRL+e: se desplaza al final de la lnea del comando
Siendo un entorno de programacin, existe la posibilidad de escribir comentarios utilizando //:


5

1.2 OPERACIONES Y FUNCIONES BSICAS
Las cuatro operaciones aritmticas bsicas estn dadas por los smbolos

Para elevar a una potencia se pueden utilizar indistintamente los smbolos: ^ o **
La prioridad de los operadores est dada por el siguiente orden:
^ **
* /
+ -
El programa tiene predefinidas muchas funciones matemticas. Algunas de las ms conocidas
aparecen a continuacin:
abs valor absoluto
acos arcocoseno
acosh arcocoseno hiperblico
asin arcoseno
asinh arcoseno hiperblico
atan arcotangente
atanh arcotangente hiperblica
ceil parte entera superior
cos coseno
cosh coseno hiperblico
cotg cotangente
coth cotangente hiperblica
exp funcin exponencial
fix redondeo hacia cero (igual a int)
log logaritmo natural
log10 logaritmo decimal
log2 logarimo en base dos
max mximo
min mnimo
modulo residuo entero
rand nmero aleatorio
round redondeo
sin seno
sinh seno hiperblico
sqrt raz cuadrada
tan tangente
tanh tangente hiperblica

SCILAB contiene constantes especiales que se indican con el smbolo %. Ejemplos:
6


Nota: Los argumentos de las funciones deben ir entre parntesis. Ejemplo:

1.3 POLINOMIOS
Los polinomios se pueden definir por sus coeficientes o por sus races.
Ejemplo:


7

La funcin roots permite calcular las races de un polinomio (reales o complejas). Ejemplo:

2. VECTORES Y MATRICES
Para definir un vector se da un nombre como en el caso de las variables y los elementos deben ir entre
corchetes y separados por espacios o comas. Ejemplo:

Si se desea un vector columna se utiliza el operador de transposicin . Ejemplo:

Se pueden definir vectores igualmente espaciados:

Las matrices son las estructuras fundamentales de SCILAB.
8

Para crear la matriz
(
(
(

=
2 1 7
9 4 5
6 0 2
A se introducen los elementos por filas:

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 corchetes.
Algunos tipos especiales de matrices que vienen predefinidos en SCILAB son:


9

donde rand(3,4) genera una matriz de de tamao 3x4 conformada por nmeros aleatorios entre 0 y 1.
Se pueden extraer elementos de una matriz. Para la matriz A definida anteriormente:



2.1 OPERACIONES BSICAS CON MATRICES
Sean las matrices
(
(
(

=
1 6 5
1 0 4
1 2 3
A y
(
(
(

=
3 1 0
4 2 7
2 5 1
B

10


SCILAB contiene una gran cantidad de funciones para manejar matrices. A continuacin se presentan
algunos ejemplos utilizando las matrices A y B definidas anteriormente:



11


s es una matriz diagonal que contiene los valores propios de B y v es una matriz cuyas columnas
contienen los vectores propios de B

P es una matriz de permutacin, U es una matriz triangular superior y L es una matriz triangular
inferior con unos en la diagonal principal.

12

2.2 SOLUCIN DE SISTEMAS LINEALES
La solucin del sistema
3 10 2 3
16 8 5
18 6 2
3 2 1
3 1
3 2 1
= +
= + +
= + +
x x x
x x
x x x
puede obtenerse de diversas formas.

Un procedimiento ms eficiente de Scilab para hallar la solucin si la matriz A es de n x n y el vector b
es de 1 x n es el siguiente:

Tambin puede obtenerse la solucin hallando la matriz escalonada reducida a partir de la matriz
aumentada:

La ltima columna contiene la solucin del sistema.
13

3. FUNCIONES DEFINIDAS POR EL USUARIO
SCILAB tiene una gran capacidad para construir funciones. Esto permite el desarrollo de rutinas que
pueden ser incluidos dentro del entorno del programa.
La sintaxis general de una funcin es la siguiente:
function[y1,y2,.]=fn(x1,x2,.)

endfunction
function es el comando que indica que se est definiendo una funcin.
y1, y2,.. son los parmetros de salida de la funcin
fn es el nombre particular de la funcin
x1,x2,..son los parmetros de entrada de la funcin
SCILAB tiene un editor de texto llamado SciNotes que permite escribir los programas. SciNotes se
abre mediante la opcin Applications.
A manera de ejemplo se escribe una funcin que recibe como parmetros de entrada las dimensiones
de un rectngulo y devuelve el permetro y el rea:

Los archivos en SCILAB tienen extensin .sce o .sci. Se guarda el archivo con el nombre rectngulo:
File-----Save as-----rectangulo
14


Se ejecuta el archivo para que sea cargado en SCILAB mediante: Execute----File with no echo.
Ahora se puede utilizar la funcin:

En algunos programas conviene que los parmetros de salida de la funcin sean los componentes de
un vector. Es muy sencillo modificar la funcin rectngulo:

15


Devuelve un vector columna con los valores del permetro y del rea.
Ejemplo: Utilizar la regla del trapecio para calcular
}

1
0
2
dx e
x
. El valor exacto de la integral es
0.74682.
El valor de la integral de acuerdo a la Regla Trapezoidal est dado por la expresin
(

+ + =

=
1
1
0
) ( ) ( 2 ) (
2
n
i
n i
x f x f x f
h
I


Donde
n a b h / ) ( =
, siendo
1 0 = = b y a
, es decir, los extremos del intervalo. Adems
n es el nmero de segmentos o subintervalos de igual amplitud en los que se divide la regin.
Primero se define la funcin que se desea integrar f y despus se escribe una funcin z que calcula
la aproximacin dada por la Regla Trapezoidal.
La funcin linspace(a,b,n+1) crea un vector con n+1 valores igualmente espaciados entre a y b es
decir, divide el intervalo en n subintervalos iguales. Al escribir la funcin z se debe partir de y(1)
porque SCILAB no reconoce la posicin cero.
16


Se guarda el archivo y se carga en SCILAB. Se procede a calcular el valor de la integral utilizando
diferentes valores de n:



17

3.1 PROGRAMACIN

En SCILAB se pueden utilizar ciclos, estructuras condicionales y otras ayudas de programacin que
permiten generar funciones.

OPERADORES LGICOS

IGUAL ==
DIFERENTE <>
MAYOR >
MAYOR O IGUAL >=
MENOR <
MENOR O IGUAL <=

3.1.1 COMANDOS FOR Y WHILE

El comando for realiza una serie de iteraciones un nmero determinado de veces y ejecuta una accin
indicada en el ciclo:



Cuando se desea mostrar en pantalla un resultado intermedio se utiliza el comando printf o disp. En
este ejemplo se utiliza printf; \n permite escribir cada uno de los valores de y en renglones distintos.



El comando while cumple la misma funcin de for siempre y cuando se cumpla una
condicin:
18



3.1.2 COMANDO IF
La estructura condicional es if-then-else. Una expresin es evaluada, si es verdadera se realiza la
operacin entre if y then; en caso contrario ejecuta lo indicado entre then y else.


19

4. GRFICAS
4.1 GRFICAS EN DOS DIMENSIONES
Se construyen dos vectores de igual tamao en el intervalo deseado.
Ejemplo: Graficar la funcin coseno en el intervalo
| | t t,


Tambin es vlido el comando plot (x,y).
Observe que se ha utilizado un espaciado de 0.01 para crear el vector x. Esto permite obtener una
curva continua suave. No se recomienda usar un espaciado grande porque se obtiene una curva
poligonal. La primera grfica se construye por defecto en la ventana nmero cero. Para realizar una
grfica adicional se debe crear otra ventana mediante File----New figure.

Grfica de
) cos(x y =
en el intervalo
| | t t,

20

Se puede agregar ttulo a los ejes y a la grfica con la orden xtitle:
xtitle(FUNCION COSENO, EJE X, EJE Y)

Se puede agregar al grfico una malla mediante la orden xgrid(). El argumento es un entero que
define el color del enmallado:


21

En un mismo grfico pueden aparecer varias curvas; para esto deben crearse los correspondientes
vectores columna que sern los argumentos de plot2d.
Ejemplo: Crear un grfico para apreciar las funciones seno y coseno en
| | t t,
:


Para identificar las curvas se utiliza el argumento leg separando los nombres con el smbolo @:


22

El comando plot2d dispone de otros argumentos que permiten mejorar notablemente las grficas.
El argumento style utiliza enteros positivos para modificar el color y enteros negativos para modificar
el estilo del grfico.




23

El argumento rect=[xmin,ymin,xmax,ymax] permite visualizar una zona especfica de la ventana del
grfico:

El comando gca permite modificar grficos ya construidos. Es necesario asignar el comando a una
variable.
Ejemplo:

24


Delante de grid=[y,x] crea una malla con colores para las lneas verticales y horizontales:


25

Delante de x_location, y_location modifica la posicin de los ejes coordenados:
Middle= centrado, left=izquierda, rigth=derecha, top=arriba, bottom=abajo.


4.2 GRFICAS EN TRES DIMENSIONES
Se crea la funcin en el editor de SCILAB y se carga el archivo en el programa de la forma
acostumbrada:

26



En la ventana grfica mediante Edit------Figure properties se pueden modificar los ejes y los colores de
la superficie y de la malla.
Otra alternativa para graficar una superficie consiste en definir la funcin directamente en la consola
de SCILAB mediante el comando deff:

27

Recomendaciones:
Antes de realizar un nuevo grfico limpiar la ventana con el comando clf() o crear una nueva
ventana grfica mediante File-----New figure
Al generar los vectores x, y utilizar un espaciado entre 0.1 y 0.3 esto permite apreciar de una mejor
manera el enmallado de la superficie
CURVAS DE NIVEL
Utilizando el comando fcontour se puede apreciar el mapa de contorno de la superficie:






28

5. MTODOS NUMRICOS
5.1 RACES DE ECUACIONES NO LINEALES
La funcin fsolve permite encontrar las races de una ecuacin no lineal, es decir, resuelve
0 ) ( = x f , siendo f una funcin de variable real.
Ejemplo: Encontrar las races de ) ln( ) exp( ) ( x x x f = .
Un anlisis grfico preliminar es muy conveniente para estimar el valor aproximado de las races de la
funcin. Se crea un vector de valores de x en el intervalo arbitrario ] 5 , 0 ( :


29

Se observa que la raz se encuentra en el intervalo ] 5 . 1 , 0 . 1 [ .
Se introduce la funcin en el editor de SCILAB y se carga al programa:


Tambin fsolve permite encontrar la solucin de un sistema no lineal ingresando un vector que
contiene la aproximacin inicial.
Ejemplo: Resolver el sistema
0 8 10
0 8 10
2
2 2
= + +
= + +
y x xy
y x x

La funcin que contiene el sistema no lineal se programa en el editor, utilizando un vector V para los
parmetros de entrada y un vector F de salida para las funciones evaluadas:

Se ejecuta el archivo y se encuentra la solucin partiendo del origen como aproximacin inicial:
30


La salida es el vector solucin del sistema.
Utilizar el jacobiano del sistema hace ms eficiente el uso de la funcin fsolve. Se modifica el
programa que contiene el sistema no lineal:

Se ejecuta el archivo y se encuentra la solucin partiendo del origen como aproximacin inicial:



31

5.2 INTEGRACIN NUMRICA
La funcin intg permite calcular integrales definidas.
Ejemplo: Calcular
}
3
1
2
sin
dx
x
x

Primero se define la funcin utilizando el comando deff y despus se calcula el valor de la
integral con la funcin intg:

Nota: Recuerde que tambin se puede ingresar la funcin utilizando el editor de SCILAB
SCILAB dispone de la funcin inttrap que aplica la Regla del Trapezoide a una serie de datos
experimentales:


Se requiere que los valores de x estn ordenados en forma creciente:
n
x x x < < < .....
2 1


5.3 INTERPOLACIN LINEAL
Sean ) , ( ),......, , ( ), , (
2 2 1 1 n n
y x y x y x n puntos que representan una funcin desconocida. La funcin
interpln permite estimar el valor de la funcin desconocida para valores intermedios de la
variable independiente x .
x 1.0 1.1 1.2 1.3 1.4
) (x f
0.010 0.252 0.586 1.024 1.578
32

Se generan dos vectores fila para los valores de x y de y . El vector de valores de x debe estar
ordenado en forma creciente.
Ejemplo: Para los valores siguientes

E 40 60 80 100 120 140 160
P 0.63 1.36 2.18 3.00 3.93 6.22 8.59

Donde E son los voltios y P los kilowatts en una curva de prdida en el ncleo para un motor
elctrico, aproxime el valor de P correspondiente a 90 voltios.


La funcin interpln utiliza dos parmetros: la matriz [x;y] y el valor de x para el cual se desea estimar
la funcin.

Se puede obtener la grfica de la curva de interpolacin creando un vector linealmente espaciado paa
el rango de valores de x:


33


5.4 ECUACIONES DIFERENCIALES ORDINARIAS
Aproximaciones al problema de valor inicial indicado por
0 0
) (
) , ( '
y x y
y x f y
=
=

se obtienen mediante el uso de la funcin ode.
Ejemplo: Resolver
0 ) 0 (
) ( cos ) ( '
=
+ =
y
y x sen y

La funcin y x f , ( ) se escribe en el editor de SCILAB y se carga al programa.

34


Ejemplo: Resolver el sistema de ecuaciones diferenciales ordinarias
5 ) 0 ( , 3 2
6 ) 0 ( , 3 2 '
2 2 1
2
1 2 1
1
= + + =
= + =
x x x
dt
dx
x t x x
dt
dx

En este sistema aparecen dos funciones desconocidas ) ( , ) (
2 1
t x t x y la variable independiente t .
Se escribe la funcin en el editor y se carga al programa:

35


La primera fila de la matriz contiene los valores de ) (
1
t x y la segunda los valores de ) (
2
t x .
6. BIBLIOGRAFA
El presente documento fue preparado consultando los siguientes tutoriales disponibles en internet:
1. LABORATORIO DE COMPUTACIN DE ALTO DESEMPEO (LCAD). Introduccin a SCILAB.
Facultad de Ingeniera. Universidad de Asuncin. 2005. Disponible en la pgina web:
http://www.ing.una.py/DIREC_PPAL/ACADEMICO/APOYO/calculo%20numerico/Scilab/CURS
O%20DE%20SCILAB.pdf
2. CARO, VALERO. Fundamentos de SCILAB y aplicaciones. Licencia de documentacin libre GNU.
Disponible para descarga en la pgina web:
http://www.scilab.org/contrib/index_contrib.php?page=displayContribution&fileID=262
3. MORA. Introduccin a SCILAB. Departamento de Matemticas. Universidad Nacional de
Colombia. Bogot. 2005. Disponible en la pgina web:
http://www.matematicas.unal.edu.co/~hmora/sci.pdf

También podría gustarte