Esta obra está bajo una licencia Reconocimiento-No comercial 2.5 Colombia de Creative Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by/2.5/co/ o envié una carta a Creative Commons, 171 Second Street, Suite 30 San Francisco, California 94105, USA La información adicional que pudiera contradecir esta información es anulada. SCILAB Autores: DIEGO FELIPE CORTES BRAYAN RICARDO ROJAS ORMAZA Tutor Investigación: Coordinadores: Coordinador Servicios Web: Analista de Infraestructura y Comunicaciones: Leidy Diana Rincón Maria Alejandra Enrı́quez Leydi Diana Rincón Miguel Ibañez Adelaida Amaya Analista de Sistemas de Información: Lı́der de Gestión de Recurso Humano: Álvaro Enrique Palacios Villamil Islena del Pilar Gonzalez UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES BOGOTÁ D.C. JULIO 2006 SCILAB Director Unidad de Informática: Henry Martı́nez Tutor Investigación: Leidy Diana Rincón Auxiliares de Investigación: ANDRES MAURICIO SALAMANCA BRAYAN RICARDO ROJAS CAMILO ERNESTO LOPEZ CAMILO IBAÑEZ CARLOS HERNAN PORRAS CAROLINA RUBIANO OCHOA CATHERINE CRUZ CLAUDIA PATRICIA TOVAR CRISTIAN GERARDO GIL CRISTIAN JAVIER PEÑALOZA DANIEL ENRIQUE QUINTERO DANIEL ERNESTO CABEZAS DIANA ESPERANZA OROZCO DIANA KATHERINE SANCHEZ DIANA PATRICIA TELLEZ DIEGO FELIPE CORTÉS EDSSON DIRCEU RODRÍGUEZ EDWIN MONTAÑO GUILLERMO ALBERTO ARIZA HENRY ALEXANDER RINCON HOOVER QUITIAN JORGE ELIECER ROJAS JUAN FELIPE RINCON LEIDY CAROLINA RINCÓN LEIDY VIVIANA AVILÉS LUIS ALFONSO NIETO LUZ KARINA RAMOS MILLER GIOVANNY FRANCO SANDRA LILIANA BARRIOS SANDRA MILENA GOMEZ SANDRA PAOLA RAMIREZ SERGIO ORJUELA RUIZ Este trabajo es resultado del esfuerzo de todo el equipo perteneciente a la Unidad de Informática. Se prohı́be la reproducción parcial o total de este documento, por cualquier tipo de método fotomecánico y/o electrónico, sin previa autorización de la Universidad Nacional de Colombia. UNIVERSIDAD NACIONAL COLOMBIA FACULTAD DE CIENCIAS ECONÓMICAS UNIDAD DE INFORMÁTICA Y COMUNICACIONES BOGOTÁ D.C. JULIO 2006 2 TABLA DE CONTENIDO 1. RESUMEN 6 2. ABSTRACT 7 3. GENERALIDADES DE SCILAB 3.1. VENTAJAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. DESVENTAJAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 9 9 4. REQUERIMIENTOS 4.1. HARDWARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. SOFTWARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10 10 5. INSTALACIÓN 11 6. COMANDOS BÁSICOS 6.1. CREAR VARIABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. OPERADORES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3. FUNCIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 21 22 7. VECTORES Y MATRICES 23 8. PROGRAMACION 8.1. Generalidades . . . . . . . . . . . 8.2. Condicionales . . . . . . . . . . . 8.2.1. Comando IF . . . . . . . . 8.2.2. Comando SELECT-CASE 8.3. Bucles . . . . . . . . . . . . . . . 8.3.1. Comando FOR . . . . . . 8.3.2. Comando WHILE . . . . . 8.4. Funciones y scripts . . . . . . . . 8.5. OPERADORES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 32 34 34 35 36 36 36 37 38 9. GRÁFICAS 40 10.MANEJO DEL ENTORNO SCILAB 43 11.TOOLBOXES 11.1. GROCER (ECONOMÉTRICO) . . . . . . . . . . . . . . . . . . . . . . . . . 46 50 12.INSTALACIÓN EN SUSE - LINUX 52 3 13.CURSO LIBRE SCILAB 54 14.ALCANCES 54 15.CONCLUSIONES 55 4 TABLA DE FIGURAS 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. PAGINA SCILAB . . . . . . . . . . . . SELECCIÓN SISTEMA OPERATIVO VERSION BINARIA . . . . . . . . . . UBICACIÓN . . . . . . . . . . . . . . IDIOMA . . . . . . . . . . . . . . . . . INSTALACION . . . . . . . . . . . . . LICENCIA . . . . . . . . . . . . . . . CARPETA DE ARCHIVOS . . . . . . COMPONENTES . . . . . . . . . . . . MENU INICIO . . . . . . . . . . . . . ADICIONAR TAREAS . . . . . . . . INICIO DE INSTALACION . . . . . . EXTRAER ARCHIVOS . . . . . . . . INFORMACIÓN . . . . . . . . . . . . FINALIZACIÓN DEL PROCESO . . . EJECUTAR PROGRAMA . . . . . . . ENTORNO DE TRABAJO . . . . . . GRAFICA MATRIZ . . . . . . . . . . Recta . . . . . . . . . . . . . . . . . . Recta . . . . . . . . . . . . . . . . . . MENU FILE . . . . . . . . . . . . . . MENU EDIT . . . . . . . . . . . . . . MENU PREFERENCES . . . . . . . . MENU CONTROL . . . . . . . . . . . MENU EDITOR . . . . . . . . . . . . SCICOS . . . . . . . . . . . . . . . . . EditGraph . . . . . . . . . . . . . . . . MENU APLICATIONS . . . . . . . . MENU AYUDA (?) . . . . . . . . . . . INSTALACIÓN TOOLBOXES . . . . INSTALACIÓN TOOLBOXES . . . . RESULTADO 1 . . . . . . . . . . . . . RESULTADO 2 . . . . . . . . . . . . . 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 41 42 42 43 44 45 45 45 46 47 47 47 49 49 51 52 SCILAB 1. RESUMEN En este trabajo de investigación, se podrá encontrar las nociones básicas para utilizar este completo programa amparado por licencia de software libre, lo cual lo hace más accesible y sujeto a colaboraciones que lo hacen cada vez más completo y potente. El manual comienza con una introducción a lo que es el programa, sus generalidades, requerimientos tanto de hardware como de software y una guı́a de instalación en Windows. En la segunda parte se exponen los comandos básicos de operación del programa, operaciones matemáticas básicas tanto para números como para vectores y matrices, y una introducción a la programación. Adicionalmente a esto, se ilustra acerca del manejo del entorno Scilab. En la tercera parte, se explora un poco más a fondo la programación con la utilización de funciones, además se muestran las funciones gráficas del programa. En la cuarta y última parte, se muestra una introducción a los toolboxes de Scilab, su instalación; y el funcionamiento de uno en especial: GROCER, el cual es un toolbox econométrico. También se hace una pequeña guı́a para la instalación de SCILAB en SUSE Linux, y una profundización en la parte gráfica UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 6 SCILAB 2. ABSTRACT In this investigation work, the reader can find the Basic notions for use SCILAB, a very complete and free license mathematic program, which makes more accessible and subject to collaborations that make it more and more complete and powerful. The manual begins with an introduction to the program, its generalities, hardware and software requirements, and an installation in Windows guide. At the second section, are exposed the basic commands of program operation, mathematic operations for numbers, matrices and vectors, and an introduction about programming. Additionally, show something about the handling of the Scilab surroundings. At the third section, are explore more the programming using function, in addition, shows the Scilab’s basic graphic functions. At the fourth and last section, shows an introduction to de Scilab’s toolboxes, its installation and the operation of one in special: GROCER, which is an econometric toolbox. Also, shows an installation guide under suse-linux and a deepening of the graphic section. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 7 SCILAB 3. GENERALIDADES DE SCILAB 1 Scilab es una potente herramienta matemática similar a MATLAB la cual es su competencia directa, esta alternativa de Software Libre a sido desarrollada desde 1990 en el INRIA (Instituto Nacional de Investigación en Informática y Control de Francia) y el ENPC (École Nationale des Ponts et Chaussées), destinada a solucionar desde las operaciones más básicas hasta los más complejos problemas matemáticos, estadı́sticos, econométricos etc. Scilab es un lenguaje de programación de alto nivel para cálculo cientı́fico, interactivo de libre uso y disponible en múltiples sistemas operativos. A parte de estos institutos se han únido varias empresas que han promovido el desarrollo de esta herramienta conformando ası́ lo que se conoce como el Consorcio Scilab. Scilab no es tan potente como Matlab, tiene la ventaja con respecto a este que es libre, es decir, no hay que pagar por descargarlo, además SCILAB es multiplataforma puede trabajar bajo Windows como bajo Linux y otras plataformas. Para realizar diferentes acciones o tareas SCILAB cuenta con toolboxes (herramientas) que sirven para poder realizar estos procesos estas son: Gráficos 2-D y 3-D, animación Álgebra lineal, matrices ralas Polinomios y funciones racionales Simulación: programas de resolución de sistemas de ecuaciones diferenciales (explı́citas e implı́citas) Scicos: 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 Interfase con el cálculo formal (Maple, MuPAD) Interfase con TCL/TK 1 Tomado de www.scilab.org UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 8 SCILAB Econometrı́a Una desventaja que posee este programa es que todo su contenido esta en dos versiones de idioma en ingles y en francés reduciendo alternativas para un conocimiento apropiado de esta herramienta. 3.1. VENTAJAS Aquı́ se presentarán algunas ventajas generales de SCILAB: Es software libre permitiendo el acceso a cualquier persona sin ninguna restricción. Permite su manipulación en cualquier plataforma (WINDOWS, LINUX, Sun,. . . ) Sus requisitos de hardware y software no son muy amplios. El uso de toolboxes permite perfeccionar y completar diferentes aplicaciones no incluidas en el programa básico. Permite la interacción de diferentes lenguajes de programación como C++, JAVA. C y FORTRAN. Su lenguaje de programación es similar al de MATLAB, por lo tanto usuarios de MATLAB pueden desempñarse muy bien en SCILAB, 3.2. DESVENTAJAS Se mencionaran algunas desventajas generales del programa: Presentación en sólo 2 idiomas dificulta el aprendizaje Es necesario tener conocimientos previos sobre programación o manejo de MATLAB para un desempeño ágil y eficaz Su entorno gráfico no es muy amigable 4. REQUERIMIENTOS Para un correcto desempeño de SCILAB son necesarios algunos requisitos mı́nimos en cuanto aspectos de hardware y software que se mencionarán. Se menciona que hay una versión binaria la cual es ejecutable desde diversas plataformas, los requerimientos que se mencionan a continuación corresponden especialmente para esta UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 9 SCILAB versión sin embargo para diferentes versiones los requerimientos son similares. 4.1. HARDWARE Los requerimientos fı́sicos para una correcta ejecución de SCILAB son; En disco duro mı́nimo 80 MB Unidad de CD si se ha descargado a través de un CD 32 MB en RAM Pantalla, mouse y teclado 4.2. SOFTWARE Como es multiplataforma los requerimientos de software pueden variar pero aquı́ se mencionan algunos: Para Windows versiones disponibles para 95, 98, NT, 2000 y XP Linux SUSE, Red Hat, debian y Mandrake Sun Sparc ( Sun OS4.1.3.)y Sun Sparc ( Sun Solaris 2.3) HP 9000 ( HP-UX 9.01 ) IBM-RS6000 ( AIX 3.2) UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 10 SCILAB 5. INSTALACIÓN Para poder tener una buena referencia para consultas futuras de este documento se ha hecho necesaria la inclusión del proceso de instalación de SCILAB bajo entorno Windows. Para poder realizar la instalación se puede realizar por tres mecanimos. 1. Internet 2. CD 3. Red El proceso que se presentará será el realizado desde Internet directamente desde la página oficial de SCILAB (www.scilab.org) y ahı́ se encuentra el link Download SCILAB 4.0 (figura 1) Figura 1: PAGINA SCILAB A continuación se escoge el sistema operativo sobre el cual de quiere instalar. En este caso serı́a Windows. (figura 2) Figura 2: SELECCIÓN SISTEMA OPERATIVO UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 11 SCILAB Posteriormente se escoge el instalador para la versión binaria. (figura 3) Figura 3: VERSION BINARIA En el cuadro de diálogo que aparece hacemos clic en Abrir. Si se desea guardar el instalador entonces se hace clic en guardar y luego se escoge la ubicación en la que se quiere guardar.(figura 4) Figura 4: UBICACIÓN UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 12 SCILAB En este paso se escoge el idioma para la instalación solo están disponibles inglés y francés. (figura 5) Figura 5: IDIOMA Después de esto se comienza a hacer clic en Next repetidamente. (figura 6) Figura 6: INSTALACION UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 13 SCILAB No olvidar que hay que aceptar los términos de la licencia. (figura 7) Figura 7: LICENCIA Se selecciona la carpeta donde se guardaron los archivos compilados (figura 8) Figura 8: CARPETA DE ARCHIVOS UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 14 SCILAB Posteriormente se debe seleccionar que tipo de componentes desean instalar. (figura 9) Figura 9: COMPONENTES Se puede definir el nombre para determinarlo en el menú inicio. (figura 10) Figura 10: MENU INICIO UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 15 SCILAB Adicional a los componentes mencionados anteriormente se pueden agregar algunas tareas como asociar diferentes tipos de archivos para que se ejecuten desde SCILAB (figura 11) Figura 11: ADICIONAR TAREAS Agregados los nuevos componentes se procede a iniciar la instalación de SCILAB 4.0 (figura 12) Figura 12: INICIO DE INSTALACION UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 16 SCILAB Aceptado el inicio de la instalación se empiezan a extraer los archivos. (figura 13) Figura 13: EXTRAER ARCHIVOS Terminada la instalación el sistema da una información sobre el proceso. (figura 14) Figura 14: INFORMACIÓN UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 17 SCILAB El sistema informa sobre la finalización del proceso y la posibilidad de crear un acceso directo en el escritorio del equipo. (figura 15) Figura 15: FINALIZACIÓN DEL PROCESO Se desplaza una ventana emergente que da la opción de observar un archivo de texto sobre el proceso de la instalación y si desea ejecutar el programa. (figura 16) Figura 16: EJECUTAR PROGRAMA UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 18 SCILAB Finalmente se presenta el entorno de trabajo de SCILAB 4.0 (figura 17) Figura 17: ENTORNO DE TRABAJO UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 19 SCILAB 6. COMANDOS BÁSICOS Los comandos se ejecutan en la ventana de comandos en la cual aparece −− > lo cual nos indica que en está lı́nea se debe proceder a redactar el comando que deseamos ejecutar. 6.1. CREAR VARIABLES Para la creación de variables es necesario colocar el nombre de la variable y el valor que se le asigna, esto para variables con valores puntuales, por ejemplo: x = 2,52 Este comando nos genera la variable x imprimiendo la siguiente lı́nea: x = 2.52 Scilab distingue las variables entre mayúsculas y minúsculas al igual que los comandos, es necesario una buena especificación gramatical para obtener buenos resultados, es decir, "A" es diferente de "a".. Se anota que después del nombre de la variable se da un espacio t un igual y otro espacio t y el valor, aunque esto no es del todo necesario pero permite una mayor comprensión de los comandos. La sintaxis es ası́: a = 5, ahı́ SCILAB sabrá que la variable "a" tendrá un valor de 5. Si solamente se digita un valor sin asignárselo a ninguna variable, SCILAB creará automáticamente una llamada ”ans” y le asignará dicho valor. Si deseamos que Scilab no imprima la variable como lo observamos en el ejemplo anterior utilizamos punto y coma después del valor de la variable insertada para poder evitar que nos aparezca de nuevo la variable con su valor. ; Los valores que se le asignan a cada variable pueden aparecer en diferentes formatos es decir que si se desea expresar el valor de la variable en términos decimales es valido al igual que en notación cientı́fica, además, si se quieren hacer cálculos dentro de la misma variable se permiten. brayan = 875e52 diego = 52/986532 brayan = diego = 8.750D+54 0.0000527 UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 20 SCILAB Se menciona que no se deben dejar espacios para los nombres de las variables, en este caso se debe asignar carácteres especiales como $, !, ?, , # para el registro de las variables sin producir error. 6.2. OPERADORES Para poder realizar las operaciones básicas y algunas básicas de la matemática utilizamos los siguientes operadores: OPERADOR + − / ∗ ∧ ∗∗ OPERACIÓN suma sustracción Inverso aditivo División Multiplicación Potenciación Para hacer operaciones entre variables o entre constantes, también es bastante sencillo, basta con escribir la variable, el operador aritmético o el que se necesite y la otra variable (Ejm : c = 2 ∗ 9; b = a + 5). Acá ocurre igual que en la definición de variables, si no se le asigna a ninguna variable el valor de la operación, este será asignado a la variable ”ans”. De igual manera que otros programas SCILAB ejecuta las órdenes de operación de acuerdo a su prioridad por ejemplo si agregamos la siguiente función: x = (4∧ 5) ∗ (2 + (6/2)) x= 5120 Realizando primero la potenciación, luego la multiplicación o división y por último la suma o la resta. Se anota que SCILAB reconoce como sı́mbolos de agrupación los paréntesis ( ), de esta manera se realizaran cálculos más acertados y precisos, en el caso en que no se hubieran colocado paréntesis el resultado hubiera sido 2051, que no es el mismo que utilizando sı́mbolos de agrupación. Incluyendo la unidad anterior se incluye que si tenemos definidas dos variables se pueden realizar operaciones entre estas variables, a través de los operadores descritos anteriormente o por medio de funciones como las veremos en la siguiente unidad. Por ejemplo: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 21 SCILAB x = (4∧ 5) ∗ (2 + (6/2)) y = (5 ∗ 8) + ((2/5)∧ 2) y= 40.16 x∗y ans = 205619.2 En este caso no es necesario definir otra variable, SCILAB reconoce la operación y define el resultado como ANS refiriéndose a la respuesta del proceso anterior. 6.3. FUNCIONES Hay a parte de las operaciones aritméticas básicas un conjunto de funciones que se relacionan a la trigonometrı́a, al cálculo y a otras divisiones de la matemática., en esta sección trataremos algunas de ellas la cuales se describen a continuación, se deja como ejercicio al lector realizar pruebas de estas funciones. Por generalidad para poder ejecutar una función, puedo ejercerlo de dos maneras, la primera le asigno una variable a la función por ejemplo: Z = abs(x) La segunda opción es no incluir la función dentro de una variable de la siguiente forma: abs(x) Las dos formas darán el mismo resultado, de igual manera se pueden realizar operaciones dentro de las funciones por ejemplo: abs(x ∗ y) o abs(2 ∗ 9), es necesario que después del nombre de la función se registre la variable o la operación dentro de ( ) paréntesis. En esta sección trataremos algunas de ellas la cuales se describen a continuación, se deja como ejercicio al lector realizar pruebas de estas funciones. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 22 SCILAB FUNCIÓN SCILAB abs() acos acosh asin asinh atan atanh ceil cos cosh cotg coth exp fix floor int log log10 log2 max min modulo rand round sin sinh sqrt tan tanh 7. DESCRIPCIÓN Imprime el valor absoluto Inverso del coseno Inverso hiperbólico del coseno Inverso del seno Inverso hiperbólico del seno Inverso de la tangente arcotangente hiperbólica parte entera superior coseno coseno hiperbólico cotangente cotangente hiperbólica función exponencial redondeo hacia cero (igual a int) parte entera inferior redondeo hacia cero (igual a fix) logaritmo natural logaritmo decimal logaritmo en base dos máximo mı́nimo residuo entero número aleatorio redondeo seno seno hiperbólico raı́z cuadrada tangente tangente hiperbólica VECTORES Y MATRICES Los vectores y las matrices son por decirlo ası́, el alma de SCILAB, ya que es sobre lo que más se trabaja, y lo que más tiene aplicación práctica. Para saber como definir una matriz primero tenemos que comenzar por lo más básico: definir una variable lo cual se realizo en la unidad anterior. En SCILAB no se trabajan vectores ya que estos son tratados como matrices nx1 o 1xn UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 23 SCILAB según sean fila o columna. La definición de estas es bastante sencilla. Se hace entre corchetes y separando cada fila de la siguiente por un punto y coma, y los datos de la fila se separan con un espacio, ası́: A = [f ila1; f ila2; . . . ; f ilan], y las filas se definen: dato1 dato2 dato3 . . . daton , pueden ser separados por espacios o por comas. Ej: al escribir esta matriz: A = [1 2 3; 4 5 6; 7 8 9] El programa almacenará la matriz y ası́ la mostrará al usuario: A= 1. 2. 4. 5. 7. 8. 3. 6. 9. Hay una forma para definir los vectores largos más rápidamente: consiste en que al momento de hacer la definición se escribe primero el valor inicial, separado por dos puntos seguido se escribe el incremento que se quiere y al final se escribe el valor final, ası́: b = [2 : 0,3 : 3], esto es lo mismo que escribir b = [2 2,3 2,6 2,9], obviamente es solo cuando se tiene un incremento constante. Si el incremento es 1, no hay necesidad de escribirlo. SCILAB cuenta con unas matrices predefinidas que sirven para hacer operaciones comunes en temas como econometrı́a u otros. Estas son: Matriz de unos de tamaño n*m: ones(n,m). -->ones(5,5) ans = 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. Matriz de ceros de tamaño n*m: zeros(n,m). -->zeros(5,5) ans = UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 24 SCILAB 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. Matriz aleatoria tamaño n*m: rand(n,m). -->rand(5,5) ans = 0.5935095 0.5015342 0.4368588 0.2693125 0.6325745 0.4051954 0.9184708 0.0437334 0.4818509 0.2639556 0.4148104 0.2806498 0.1280058 0.7783129 0.2119030 0.1121355 0.6856896 0.1531217 0.6970851 0.8415518 0.4062025 0.4094825 0.8784126 0.1138360 0.1998338 Matriz identidad de orden n: eye(n,n). -->eye(5,5) ans = 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. Si se ponen números distintos, las filas o columnas que sobren serán de ceros. Para seleccionar un dato ubicado en una matriz simplemente se da el nombre de la matriz y enseguida entre paréntesis la ubicación ası́: A(2,1): de la matriz A se escoge el valor que está en la fila 2 y en la columna 1. Para seleccionar la fila n se escribe A(n,:) y para seleccionar la columna m se escriba a(:,m). Las operaciones entre matrices tienen las restricciones normales. La suma y la resta debe ser entre matrices de tamaños iguales, la multiplicación se debe hacer entre matrices tales que el número de columnas de la primera sea igual al número de filas de la segunda y ası́. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 25 SCILAB Las operaciones se escriben normalmente. En lo único que hay que tener cuidado es en la multiplicación, ya que el producto punto (multiplicando dato por dato) se escribe .* y el producto cruz (el que es toda la fila por toda la columna) se escribe solo * Ejm: El producto punto entre A y B es A.*B y el producto cruz es A*B. De igual manera se debe poner atención en la potenciación de matrices. Si se escribe A.∧ n se elevará al cuadrado elemento por elemento2 , mientras que si se escribe A∧ n, se eleva la matriz a la n. (para esto último, A debe ser una matriz cuadrada). Hay diversas funciones que SCILAB trae hechas previamente para usar con las matrices. A continuación unas de ellas 3 : rank(a) calcula el rango de a. det(c) determinante de una matriz cuadrada c. >b = [rand(5,5)] b = 0.3303271 0.6653811 0.6283918 0.8497452 0.6857310 0.8782165 0.0683740 0.5608486 0.6623569 0.7263507 0.1985144 0.5442573 0.2320748 0.2312237 0.2164633 0.8833888 0.6525135 0.3076091 0.9329616 0.2146008 0.312642 0.3616361 0.2922267 0.5664249 0.4826472 -->det(b) ans = 0.0216762 inv(c) inversa de una matriz cuadrada e invertible c. >inv(b) ans = - 1.5807721 1.0244939 1.3429427 0.4352852 - 0.0917186 2 Notese - 0.7829656 - 0.5187676 2.302367 - 0.0159412 0.8676194 4.147227 1.1357003 - 0.2743768 0.0338309 - 7.4933959 1.2110069 - 1.0414012 - 3.058274 0.9951557 0.7758052 que se incluye el punto para que se haga el procedimiento elemento por elemento Héctor, ”Introducción a SCILAB”.Universidad Nacional de Colombia, Bogota,2005 3 MORA. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 26 - 2.3215931 0.2596076 1.1602333 - 1.458396 5.1077625 SCILAB rref(a) matriz escalonada reducida por filas equivalente a a. -->rref(b) ans = 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. diag(c) produce un vector columna con los elementos diagonales de la matriz cuadrada c. -->diag(b) ans = 0.3303271 0.0683740 0.2320748 0.9329616 0.4826472 Si utilizamos [y, k] = sort(x): y es el vector ordenado de manera decreciente, k es un vector que contiene los ı́ndices del ordenamiento, o sea, y = x(k). Por ejemplo: c = [1 : 1 : 5; 6 : 1 : 10; 11 : 1 : 15; 16 : 1 : 20; 21 : 1 : 25] c = 1. 6. 11. 16. 21. 2. 7. 12. 17. 22. 3. 8. 13. 18. 23. 4. 9. 14. 19. 24. 5. 10. 15. 20. 25. 22. 21. -->[y,k] = sort(c) k = 25. 24. 23. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 27 SCILAB y 20. 15. 10. 5. = 19. 14. 9. 4. 18. 13. 8. 3. 17. 12. 7. 2. 16. 11. 6. 1. 25. 24. 23. 22. 21. 20. 19. 18. 17. 16. 15. 14. 13. 12. 11. 10. 9. 8. 7. 6. 5. 4. 3. 2. 1. b = sort(a) ordena la matriz a de manera decreciente, considerando cada matriz como un vector formado por la primera columna, la segunda columna, . . ., la ultima columna. >sort(c) ans = 25. 24. 23. 22. 21. 20. 19. 18. 17. 16. 15. 14. 13. 12. 11. 10. 9. 8. 7. 6. 5. 4. 3. 2. 1. b = sort(a, ’r’) ordena la matriz a de manera decreciente por columnas. Atención, aunque ’r’ tiene un significado interno de filas, el resultado externo es un ordenamiento de las columnas. Si continuamos con nuestra matriz c, entonces: >c = sort(c,’r’) c = 21. 16. 11. 6. 1. 22. 17. 12. 7. 2. 23. 18. 13. 8. 3. 24. 19. 14. 9. 4. 25. 20. 15. 10. 5. b = sort(a, ’c’) ordena la matriz a de manera decreciente por filas. Atención, aunque ’c’ tiene un significado interno de columnas, el resultado externo es un ordenamiento de las filas. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 28 SCILAB -->c = sort(c,’c’) c = 25. 20. 15. 10. 5. 24. 19. 14. 9. 4. 23. 18. 13. 8. 3. 22. 17. 12. 7. 2. 21. 16. 11. 6. 1. m = max(x) calcula el máximo del vector (fila o columna) x o de la matriz a. Si [m, k] = max(x): m es el máximo del vector x o de la matriz a, k indica la posición donde está el máximo. >[m,k] = max(c) k = m 5. = 5. 25. m = max(a, ’r’) : m es un vector fila (row) que contiene los máximos de las columnas de a. >max(c,’r’) ans = 21. 22. 23. 24. 25. Cuando se utiliza [m, k] = max(a, ’r’) : m es un vector fila que contiene los máximos de las columnas de a, k es un vector fila que contiene las posiciones de los máximos. min semejante a max pero para el mı́nimo. -->min(c) ans = 1. m = mean(x) calcula el promedio del vector (fila o columna) x o de la matriz. -->mean(c) ans = 13. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 29 SCILAB m = mean(a, ’r’) : m es un vector fila (row) que contiene los promedios las columnas de a. -->mean(c,’r’) ans = 11. 12. 13. 14. 15. m = mean(a, ’c’) : m es un vector columna que contiene los promedios las filas de a. -->mean(c,’c’) ans = 3. 8. 13. 18. 23. median semejante a mean pero para la mediana. -->median(c) ans = 13 st deviation semejante a mean pero para la desviación estándar. -->st_deviation(c) ans = 7.3598007 sum semejante a mean pero para la suma. -->sum(c) ans = 325. prod semejante a mean pero para el producto. -->prod(c) ans = 1.551D+25 UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 30 SCILAB norm(x) calcula la norma euclidiana del vector x (fila o columna). -->norm(c) ans = 74.254054 La orden fc = size(a) proporciona un vector fila 1 * 2 con el número de filas y el número de columnas de a. -->size(c) ans = 5. 5. La orden size(a,1) proporciona el número de filas de a. Análogamente, size(a,2) proporciona el número de columnas de a Por medio de tril se puede obtener la parte triangular inferior (low) de una matriz cuadrada. Por ejemplo: -->tril(c) ans = 1. 6. 11. 16. 21. 0. 7. 12. 17. 22. 0. 0. 13. 18. 23. 0. 0. 0. 19. 24. 0. 0. 0. 0. 25. La función triu produce la parte triangular superior (upper). -->triu(c) ans = 1. 0. 0. 0. 0. 2. 7. 0. 0. 0. 3. 8. 13. 0. 0. 4. 9. 14. 19. 0. 5. 10. 15. 20. 25 UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 31 SCILAB Si a es una matriz cuadrada, por medio de v = spec(a) se obtiene un vector columna con los valores propios (reales o complejos) de a. -->spec(c) ans = - 3.6420807 68.642081 - 7.375D-16 + 2.439D-15i - 7.375D-16 - 2.439D-15i 9.209D-16 Con la orden [v, s] = spec(a) se obtiene la matriz v cuyas columnas son vectores propios y la matriz diagonal s cuyos elementos diagonales son los valores propios. Como podemos ver, el manejo de matrices en SCILAB es muy completo, además de ser muy sencillo. Y lo mejor es que si hubiese algo que le falte, con la parte de programación que se verá en el siguiente capı́tulo, se puede complementar, creando nuevas funciones. 8. 8.1. PROGRAMACION Generalidades El lenguaje de programación de SCILAB es un lenguaje de alto nivel para programación matemática. Los lenguajes de alto nivel son los que se pueden usar en cualquier computador y simplifican mucho la labor del programador ya que solo se debe conocer la sintaxis básica y el orden correcto de las instrucciones que se deben escribir, El lenguaje de SCILAB Tiene elementos de C++ y del lenguaje de MATLAB, y para alguien que ya está un poco familiarizado con estos dos lenguajes, será más sencillo aprender a programar con el. Hay dos tipos de programas que se pueden hacer: las FUNCIONES que son las que reciben datos y hacen operaciones con ellos, por ejemplo, se hace una función que recibe dos datos: A y B, y luego los sume. Otro ejemplo serı́a una función que reciba una matriz y calcule su derivada. Luego tenemos los SCRIPTS, que son el otro tipo de programas, los cuales sirven para que SCILAB coja las funciones y les haga algo como graficarlas o hacer operaciones entre ellas. Para programar en SCILAB se debe hacer desde el SCIPAD que es como un block de notas el cual se encuentra en el menú Editor de la barra de menús de la pantalla principal. También se puede digitar el programa desde el block de notas de windows, y al guardarlo se le pone extensión .sci que es la caracterı́stica de las funciones. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 32 SCILAB Para saber en que carpeta se guardan los archivos se ejecuta la orden ”pwd”, allı́ se deberán guardar todos los archivos para que SCILAB los pueda correr después cuando se necesite dentro de una aplicación hecha por cada persona. Generalmente al instalar el programa, la carpeta que trae predefinida es el escritorio, pero se puede cambiar, ejecutando desde la pantalla de SCILAB el comando ”chdir” seguido de la nueva dirección de la carpeta que se eligió. La programación en scilab es muy intuitiva, para la persona que ya conoce C++ o MATLAB, será muy fácil familiarizarse con este entorno. Comenzando por la sintaxis, la cual es muy parecida, ası́ como lo es la estructura, aunque esta es más simplificada, y por lo tanto hay que ponerle mucho cuidado y ser muy ordenado programando, para evitar confusiones. Para comenzar, la programación se hace como si uno estuviera dando órdenes en la pantalla principal de SCILAB, es decir, no hay que escribirle un encabezado a el programita, sino que se comienza de una a ejecutar los comandos. Como primer ejemplo, para sumar dos números que el usuario escoja, se utilizan dos comandos que van a ser muy importantes de ahora en adelante: ”input ”disp”. El input sirve para ingresarle datos al programa, mostrando un mensaje para que el usuario sepa que es lo que debe digitar; y el disp sirve para mostrar los datos de salida, es decir, después de realizadas las operaciones, muestre los resultados. 2 Ahora sı́, al ejemplo: A=input(’Digite el primer numero’); B=input(’Digite el segundo número’); C=A+B; disp(C) Los dos primeros comandos, son los que hacen que el programa lea los números que va a sumar. La leyenda que se va a mostrar se escribe entre comillas para que el programa sepa que no es una instrucción. La tercera lı́nea es la que hace la operación. Como se puede observar, no tiene ninguna sintaxis extraña, solo realiza la operación tal y como está escrita. La última instrucción es la que muestra el resultado de la suma. Si el lector es buen observador, habrá notado que al final de cada instrucción se escribe un punto y coma, esto es para que el programa no vaya escribiendo cada paso los resultados parciales, sino que todo salga a lo último, ası́ que este punto y coma es opcional. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 33 SCILAB Con este sencillo ejemplo, nos damos cuenta de lo básico e intuitivo que es hacer operaciones numéricas. Basándonos en el, podemos hacer operaciones más complicadas, ya que la sintaxis básica es la misma. Para ejecutar los programas hechos, primero hay que guardarlos, lo cual se hace como cualquier documento normal. Luego de haberlo guardado, se ejecuta desde la pantalla principal de SCILAB, con el comando .exec ”seguido del nombre con el que se guardó el programa. Ası́, para el ejemplo anterior, lo guardamos con el nombre ”suma ”, y desde la pantalla principal de SCILAB se escribe .exec suma ası́ se ejecutará el programa. 2 8.2. 8.2.1. Condicionales Comando IF Es el condicional más sencillo y usado. Su sintaxis es la siguiente: If condición1 then instrucciones Elseif condición2 then instrucciones Else instrucciones End. Esto es para cuando hay más de dos resultados posibles para la condición, pero si solo es una condición con dos posibles resultados, se puede prescindir del comando .elseif ”. Ahora vamos a ampliar el primer ejemplo, agregándole una condicional. La idea es que se ingresen dos números, y si el primero es mayor que el segundo, se sumen; si son iguales, se haga una operación (2A+3B); y si el primero es menor, se multipliquen. A=input(’Digite el primer numero’); B=input(’Digite el segundo número’); if A¿B then; C=A+B; elseif A==B then; -¿acá se escribe doble igual para hacer comparaciones. C=2*A+3*B; else C=A*B; end; disp(C); UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 34 SCILAB Acá vemos como se aplica el ”if”, aplicando las condicionales en las lı́neas 3, 5 y 7, y seguido a cada condicional, la instrucción que se debe aplicar en cada caso. También se pueden hacer condicionales anidadas (un if dentro de otro if). Para hacer esto es importante tener mucho orden en la programación, ya que es fácil perderse. La sintaxis para hacer estas condicionales anidadas es la misma que para una simple. Usarlas o no depende de la complejidad del programa que se vaya a hacer. 8.2.2. Comando SELECT-CASE Este comando mira el valor de una variable, y si es igual a cierto valor, ejecuta las instrucciones respectivas. Este comando es indicado para hacer menús, o para condicionales que puedan tomar un gran número de diferentes valores. A continuación se presenta un ejemplo en el cual saldrá un menú que pregunta que se desea hacer con 2 números previamente digitados. Es como una especie de menú. a=input(’Digite el primer numero’); b=input(’Digite el segundo numero’); disp(’1. suma’); disp(’2. resta’); disp(’3. Multiplicación’); disp(’4. División’); c=input(’Digite el número de la operación que desee realizar’); select c case 1 d=a+b; case 2 d=a-b case 3 d=a*b case 4 d=a/b else break end disp(d); La variable sobre la que se hace la revisión es la variable c. según el número que se entre UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 35 SCILAB (1,2,3 ó 4), el programa hará una operación distinta sobre los números. Este programa también se podrı́a hacer con el comando IF, pero la programación serı́a más larga y compleja. Digamos que estos dos comandos no compiten sino que cada uno tiene su sector bien definido. 8.3. 8.3.1. Bucles Comando FOR Este comando se usa para realizar una acción mientras que una variable está entre un rango previamente definido. La forma de escribirlo es sencilla: For variable=lı́mite inferior:incremento:lı́mite superior. Pero es más fácil explicarla con un ejemplo: for a=1:0.2:4. Acá la variable a se moverá desde 1 hasta 4 con incrementos de 0.2. Cuando el incremento es 1, no hay necesidad de escribirlo. A continuación, un ejemplo que calcula la distancia que hay entre dos números. a=input(’Digite el numero menor’); b=input(’Digite el numero mayor’); c=0 for i=a:b-1 c=c+1 end disp(c); Se ve que se definen 2 variables nuevas: i y c. La variable i sirve como guı́a de las veces que se habrá de repetir el bucle, y la variable c es un acumulador, en la que se irán guardando el número de pasos, y al final este número será el que se muestra. El comando for también se puede usar de forma anidada, para programas más complejos, en general, para los programas en los que se usan matrices. Más adelante veremos ejemplos de estos casos. 8.3.2. Comando WHILE Como su nombre lo indica, el comando While (mientras que...) hace que se ejecute una instrucción mientras que se cumpla una condición. Es muy parecido al comando For, sirven para lo mismo, pero se puede usar a discreción del usuario, según la conveniencia o preferencia. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 36 SCILAB Ahora vamos a hacer el mismo ejemplo anterior pero usando el comando While a=input(’Digite el numero menor’); b=input(’Digite el numero mayor’); c=0 while c¡b-a c=c+1 end disp(c); se ve el cambio en la lı́nea 4 del programa, en vez del for, se usa el while y cambia la restricción que debe cumplir para que se ejecuten las instrucciones. También se ve que desaparece la variable i, ya que no es necesaria porque la restricción está planteada sobre la variable c. Como vemos, estos dos comandos son muy similares, ası́ que en la mayorı́a de los casos es indiferente cual de los dos se use en un programa. Las facilidades y ventajas de uno contra el otro se irán viendo a medida que se hagan programas, con la experiencia. Esta es la programación básica de SCILAB, de aquı́ en adelante será todo con base en lo que acabamos de ver, pero ya con otras aplicaciones, como en matrices. 8.4. Funciones y scripts Para ilustrar las funciones y los scripts, tenemos este ejemplo en el cual se crea primero la siguiente función: 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 en la cual se crean las matrices X y Y y se devuelve su derivada; luego este se guarda con el nombre de vdp.sci. A continuación creamos el siguiente script: getf vdp.sci x0=0.01; y0=[0.00001;0.00001]; t=[0.01:0.01:5000*0.01]; yt=ode(y0,x0,t,vdp); UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 37 SCILAB x=yt(1,:); y=yt(2,:); plot2d(x,y,2) el cual invoca la función anteriormente creada (instrucción getf vdp.sci) y luego devuelve la gráfica. Las funciones no se pueden correr desde la pantalla de SCILAB solas, necesitan un script porque de ellos es que toman los datos para hacer sus operaciones. De esta forma la programación se puede hacer de forma ordenada ya que se guardan los procedimientos por aparte evitando los programas muy largos en los cuales es más posible enredarse y cometer errores. 8.5. OPERADORES Al ser un lenguaje de alto nivel, y estar basado en C y en MATLAB, el lenguaje de SCILAB usa los mismos operadores que estos, como son el condicional IF acompañado de ELSEIF, que sirve para que el programa haga algo si se cumple una condición y haga otra cosa si no se cumple; los bucles FOR y WHILE que hacen cierto proceso mientras se cumple una condición; y el SELECT acompañado del CASE que hace algo si cierta variable tiene cierto valor. Para IF, la sintaxis es igual que en C, comenzando con IF, luego la secuencia de comandos; luego ELSE (opcional) y al final END. Todo se puede escribir en una sola lı́nea separado por comas, pero no es recomendable por los programadores ya que se puede prestar para confusiones. Para FOR, se escribe el comando luego la variable seguida de el valor inicial, el incremento y el valor final (como en la definición de vectores con incremento constante vista en el capı́tulo anterior), separados por dos puntos. Por ejemplo FOR a = 4:.2:10; esto quiere decir que la variable comienza en 4, se incrementa de a 0.2 y finaliza en 10, mientras esto ocurra la iteración se repetirá. La estructura se finaliza con el comando end. Para W HILE se escribe el comando, luego la condición, y luego el programa y se finaliza con un end. Un ejemplo serı́a: W HILEa < 10 . . . .EN D. Para SELECT, se escribe la variable que se quiere y luego se escribe CASE y los diferentes valores que deberı́a tomar, seguido de cada uno irı́a la secuencia del programa. El BREAK se usa para interrumpir un bucle bruscamente. El RETURN y el ABORT sirven para interrumpir una función. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 38 SCILAB Para que el programa muestre algo en pantalla se usa el comando DISP y entre paréntesis los datos que quiere que muestre; también puede usar PRINTF (de la misma forma que su homólogo de C) A continuación se exponen algunos ejemplos de estos operadores4 : En este ejemplo usando el operador FOR el programa devuelve los cuadrados del 1 hasta el 10. m=[]; for m = 1:10 a(m) = m^2 end a En el siguiente ejemplo, con el operador WHILE se toman los números desde 100 hasta 50 con decrementos de a 5, y se devuelven los cuadrados. s = 100; while s>50 disp(s^2) s = s - 5 end En el siguiente ejemplo, usando el operador IF dentro de un WHILE se imprime el valor de x si es menor a 5, el valor de y si x está entre 6 y 10 y el valor de z si x es mayor a 10. Para interrumpir el programa se debe dar a x el valor de 0. x= 1; y = 100; z = 400; while x<>0 x=input(’Introduzca el valor x = ’); if x<5 then disp(x) elseif x>=10 then disp(z) else disp(y) end end 4 FERNANDEZ y otros.Universidad Nacional de Asunción. Facultad de ingenierı́a. www.ing.una.py UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 39 SCILAB SCILAB tiene un comando muy útil que traduce los programas hechos previamente en MATLAB a lenguaje propio para poder ejecutarlos y ası́ ayudar al cambio a software libre que es tan necesario. Para hacer esto, lo único que hay que hacer es escribir el comando MFILE2SCI y a continuación el nombre del archivo del programa de MATLAB con extensión .m, ası́ lo traducirá y le podrá correr. Para correrlo, primero hay que escribir el comando GETF, luego sı́ se podrá usar como una función normal. Hay algunos programas que no se podrán traducir pero ahı́ SCILAB mostrará la ayuda para funciones imperfectas. 9. GRÁFICAS Es muy importante para poder evalúar un programa matemático su manejo gráfico, pero SCILAB tiene las condiciones para llevarse una buena calificación por su buen contenido de gráficas de igual manera hay complementos que permiten un manejo mayor a este importante factor, por ejemplo en el menú Applications la opción EDitGraph permite modificar algunas gráficas. Cuando se ejecuta una función o procedimiento matemático generalmente se desea observa en gráficas por eso en esta unidad se presentarán los comando básicos para poder realizar esta labor. Para poder realizar una gráfica tenemos la opción de que se encuentre en una dimensión es decir la recta, en dos dimensiones o tres dimensiones, además según la escala que se este utilizando con variables continuas o discretas, de igual manera SCILAB soporta estas diferentes opciones. Por ejemplo si continuamos con la misma matriz b -->b b = 0.3303271 0.6653811 0.6283918 0.8497452 0.6857310 0.8782165 0.0683740 0.5608486 0.6623569 0.7263507 0.1985144 0.5442573 0.2320748 0.2312237 0.2164633 0.8833888 0.6525135 0.3076091 0.9329616 0.2146008 0.312642 0.3616361 0.2922267 0.5664249 0.4826472 Y deseamos gráficas esta matriz utilizamos el comando plot(b) lo cual nos genera la siguiente gráfica 18: UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 40 SCILAB Figura 18: GRAFICA MATRIZ Se puede observar que cada columna genera un color de lı́nea. Pero para poder realizar mejores gráficas generalmente se utilizan dos o más varaibles y en dos o tres dimensiones. A continuación se presentarán otros ejemplos de diferentes gráficas de mayor complejidad. Para poder realizar una buena gráfica es necesario primero establecer el rango de los ejes que tendrá la imagen, por ejemplo si utilizamos los siguientes rangos: x = [0:0.1:2] y = [0:0.1:2] Recordando esto nos genera un vector que inicia en cero e incrementa a 0.1 hasta el dos, los nombres de las variables pueden cambiar, si generamos una gráfica esta vez de dos dimensiones utilizando el comando plot2d(variable eje x, variable eje y) nos generarı́a una recta 19 que pasa por el origen. Si deseamos sacar la función seno de una función podemos utilizar la siguiente lı́nea de comandos: -->a =[0:0.1:10]; -->plot2d(a,sin(a)) Que genera una función seno de 2 dimensiones 20, es de notar que es necesario que tanto el eje x como el eje y deben tener las mismas dimensiones. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 41 SCILAB Figura 19: Recta Figura 20: Recta UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 42 SCILAB 10. MANEJO DEL ENTORNO SCILAB Como anexo a este manual se ha incluido el manejo del entorno de scilab, sus menús y aplicaciones importantes. En estas imágenes podemos ver los menús de la pantalla principal de SCILAB. Este entorno principal no es muy amigable en especial porque está en idioma inglés, pero con un poco de práctica se podrá familiarizar con el. En el menú FILE (gráfica 21) , vemos las opciones para el manejo general de los archivos: NEW SCILAB Abre una nueva ventana de manejo de SCILAB EXEC Ejecuta un archivo de programación .sce o .sci OPEN Permite abrir archivos de extensión .sce o .sci que son los elaborados por SCILAB es similar a EXEC LOAD Carga los archivos elaborados por SCILAB .sav o .bin CHANGE .. Permite cambiar la ubicación donde se buscaran archivos para ser ejecutados GET . . . Carga el directorio actual que esta especı́ficado en Change directory PRINT Permite imprimir lo realizado en el área de trabajo EXIT Salir del entorno SCILAB Figura 21: MENU FILE En el menú EDIT (gráfica 22) vemos las opciones propias del portapapeles. Además en la pestañita HISTORY están las opciones de lo que se puede hacer con los comandos escritos (borrar, siguiente, anterior . . . ) SELECT ALL Selecciona todo el texto del área de trabajo COPY Copia el tecto seleccionado UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 43 SCILAB PASTE Pega un tecto copiado EMPTY CLIPBOARD Borra las imágenes de portapapeles copiadas HISTORY Presenta las órdenes anteriores, carácteres y comandos Figura 22: MENU EDIT En el menú PREFERENCES (gráfica 23) se encuentran las opciones para personalizar el entorno de trabajo, para hacerlo más amigables. En el idioma sólo están disponibles inglés y francés. LANGUAGE Permite seleccionar el idioma de los dos posibles francés o inglés COLORS Selecciona el color del texto y/o del área de trabajo TOOLBAR Muestra la barra de herramientas FILES ASSOCIATION Escoge el tipo de archivo en el que se esta trabajando es similar a save CHOOSE FONT Cambia la fuente del texto CLEAR HISTORY Borra el historial de Scilab de los comandos o carácteres ejecutados CLEAR COMMAND WINDOW Limpia totalmente el área de trabajo CONSOLE Emerge una ventana para el manejo de la consola de SCILAB Seguidamente encontramos el menú CONTROL (gráfica 24) el cual sirve para controlar los movimientos de los programas creados por el usuario. RESUME Resume el procedimiento ABORT Aborta las funciones o procesos que se esten realizando INTERRUPT Interrumpe los procesos que se esten realizando UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 44 SCILAB Figura 23: MENU PREFERENCES Figura 24: MENU CONTROL Figura 25: MENU EDITOR UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 45 SCILAB Después encontramos la opción EDITOR (gráfica 25) la cual abre la ventana para programar. El siguiente es APPLICATIONS (gráfica 28) el cual contiene las aplicaciones como el editor de gráficas y otras que se le almacenen. Acá encontraremos los toolboxes que sirven para las diferentes extensiones del programa. SCICOS Abre el editor de modelación (gráfica 26) EditGraph Abre el editro gráfico (gráfica 27) m2sci Permite hacer conversión de matlab a SCILAB Figura 26: SCICOS Por ultimo vemos el menú de ayuda (gráfica 29), la cual es bastante completa aunque requiere su tiempo familiarizarse con ella ya que encontrar exactamente lo que uno busca es en algunos casos difı́cil. SCILAB HELP Abre el menú ayuda de SCILAB CONFIGURE Permite configurar de nuevo a SCILAB WEB LINKS Muestra la página oficial de SCILAB y otras relacionadas al programa ABOUT Muestra los derechos de SCILAB 11. TOOLBOXES Un toolbox es esencialmente un pequeño programita especializado en alguna materia, que resuelve problemas de un sector especı́fico. Es básicamente una función compilada en el editor de SCILAB, es decir, un archivo con extensión .sci. En las ciencias económicas, unos de UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 46 SCILAB Figura 27: EditGraph Figura 28: MENU APLICATIONS Figura 29: MENU AYUDA (?) UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 47 SCILAB los toolboxes más importantes son los econométricos y estadı́sticos, por eso, estudiaremos uno de este tipo, llamado GROCER. Algunos de los toolboxes encontrados actualmente en la página de SCILAB son: GUI TOOLS OPTIMIZATION TOOLS MODELING AND CONTROL TOOLS EDITOR STYLES MATH TOOLS IMAGE TOOLS SCICOS DATA ANALYSIS AND STATISTICS MANUALS SPECIALIZED TOOLBOXES FINITE ELEMENTES TOOLS DATA HANDLING TOOLS CONTRIBUTED SCILAB TOOLS En cada uno de los anteriores ı́tems contiene diferentes toolboxes desarrollados para diferentes aplicaciones, ramas y contextos. El proceso de instalación de un toolbox es el siguiente: Hay dos clases de toolboxes, los que son para Windows y los que son para Linux. Con respecto a las utilidades, los toolboxes vienen para distintos problemas. En la página oficial se consiguen por las siguientes categorı́as (entre otras): Imágenes, elementos finitos, optimización, modelación y control, análisis de datos y estadı́sticos, matemáticos, estilos del editor, manuales y herramientas especializadas, entre las que se encuentran herramientas para ingenierı́a. La mayorı́a de los toolboxes están diseñados para trabajar en Linux, pero se consiguen algunos de Windows, como el GROCER, que es un toolbox econométrico, y es el que se usa como ejemplo para la instalación. Para esto, hay que ir a la página de SCILAB, entrar en el menú de la izquierda en la opción CONTRIBUTIONS y luego elegir DOWNLOADS. Ahı́ aparece la lista con las categorı́as de UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 48 SCILAB los toolboxes. El que se usa en esta ocasión se encuentra en la parte DATA ANALYSIS AND STATISTICS. (gráfica 30) Figura 30: INSTALACIÓN TOOLBOXES Al hacer clic ahı́, se despliega una lista con las diferentes herramientas para descargar, se buscan por el nombre. Al encontrarlo, se hace clic en el enlace del nombre, al lado del cual se encuentra una breve descripción de la herramienta. También aparece en algunos casos el enlace a la página web del autor, o del programa, si se sigue este enlace, se podrá obtener más información sobre la herramienta.(gráfica 31) Figura 31: INSTALACIÓN TOOLBOXES Al hacer clic en el enlace del nombre, se abre una página con el archivo para descargar, y con un archivo README en el cual vienen las instrucciones para la instalación. Para instalar GROCER (y en general cualquier toolbox para Windows) se debe guardar el archivo .zip en el disco duro, no importa la ubicación, pero una vez guardado, se debe extraer UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 49 SCILAB en la carpeta en la que está guardado SCILAB, que por defecto es C : \Archivosdeprograma\ scilab − 4,0. Luego de hecho esto, se inicia SCILAB y él automáticamente carga el toolbox. 11.1. GROCER (ECONOMÉTRICO) Este toolbox es muy completo y útil para la estimación de regresiones por el método de minimos cuadrados. Es creado por Eric Dubois para la versión SCILAB 3.0, pero corre perfectamente en las versiones posteriores. El creador del toolbox dice que su creación se facilitó por la semejanza de SCILAB con MATLAB, lo que hace más fácil su programación. GROCER, al ser software libre, y no ser un programa independiente sino una herramienta de otro programa, tiene problemas con respecto a otro software econométrico como eviews, respecto a su facilidad de uso y a su velocidad; el mismo autor lo reconoce. Es una herramienta muy básica, no recomendable para problemas con matrices muy grandes de datos, o para problemas de simulación y estimación muy exacta. Como SCILAB es un programa que trabaja esencialmente con matrices y vectores, las estimaciones con GROCER se harán sobre series plasmadas en matrices. Esto es una ventaja ya que la estimación de una regresión con mı́nimos cuadrados se hace a través de este medio matemático; recordando: B = (X 0 X) − 1(X 0 Y ) siendo X la matriz de variables exógenas, Y el vector de variables endógenas y B el vector de coeficientes. Para hacer una regresión sencilla a manera de ejemplo, se entran los datos de las variables exógenas en forma de matriz, p.ej: consumo_prod=[800; 810; 820; 840; 801; 810; 805; 799; 750; 700], consumo_imp=[100; 150; 200; 140; 120; 90; 85; 60; 45; 100], y los de la endógena de la misma manera. ingreso=[1000; 950; 948; 990; 1005; 1102; 1500; 1800; 1400; 1000]. Luego se escribe la instrucción ols(0 ingreso0 ,0 consumo prod0 ,0 consumo imp0 ), teniendo en cuenta que va primero la variable endógena y después las exógenas. Ası́, el programa devolverá los datos de la regresión, gráficas de los residuos y del ajuste de la variable ası́: ols estimation results for dependent variable: ingreso UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 50 SCILAB number of observations: 10 number of variables: 2 standard error of the regression: 202.14235 sum of squared residuals: 326892.23 DW(0) =1.6409213 Belsley, Kuh, Welsch Condition index: 22 variable coeff t-statistic p value consumo_prod 2.2261004 9.6989632 0.0000107 consumo_imp -5.4761928 -3.5212103 0.0078320 * * ans * = ols estimation results Figura 32: RESULTADO 1 UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 51 SCILAB Figura 33: RESULTADO 2 12. INSTALACIÓN EN SUSE - LINUX Esta guı́a es para instalar SCILAB en Linux, en la distribución SUSE. Luego de descargar el instalador, se debe entrar en la consola. Ahı́ se busca la carpeta en la que se encuentra el instalador (home\ scilab). Es necesario descomprimir los archivos del instalador. Para esto, se escribe el comando tar zxvf y el nombre del archivo (el que se usa en este caso, es el que se descargó de la página oficial de scilab www.scilab.org: scilab-4.0.bin.linux-i686.tar.gz). Luego se entra al directorio en el que se descomprimieron los archivos, en este caso, se llama scilab 4.0. el comando a usar en este caso es: cd scilab 4.0 Luego se escribe el comando ./configure A continuación se escribe el comando Make Luego es necesario ingresar como usuario root para poder instalar, para esto se escribe el comando su y a continuación la consola le pedirá la contraseña. El paso siguiente es la instalación, para esto se usa el comando Make install. En este UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 52 SCILAB momento se copian los archivos uno por uno, habrá que esperar unos minutos mientras se completa el proceso. Al finalizar, es recomendable salir de la sesión de usuario root para evitar daños por cambios indeseados, para esto se escribe el comando exit. Al terminar todos estos pasos, para entrar al programa se debe ejecutar el comando scilab, y estará listo para disfrutar las ventajas de este programa. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 53 SCILAB 13. CURSO LIBRE SCILAB Durante el desarrollo de la investigación se observaron las posibilidades para la inclusión de un curso libre, la idea inicial es poder fusionar los contenidos del curso de MATLAB con introducción a SCILAB. Por lo tanto se recomienda incluir los siguientes temas dentro de las clases de SCILAB: 1. Introducción a SCILAB Qué es el software libre? Historia de SCILAB Generalidades del programa Proceso de descarga 2. Operaciones básicas con SCILAB 3. Manejo de vectores y matrices 4. Programación básica 5. Programación Avanzada 6. Manejo de gráficas y toolboxes Estos temas se realizaran en un semana aproximadamente de dos (2) horas por tema, es decir que entre el curso de MATLAB y el de SCILAB se dedicarán entre dos y tres semanas de dos horas por sesión. 14. ALCANCES SCILAB permite es multivariable ofrece la posibilidad de hacer algunos cálculos simbólicos como derivadas de funciones polinomiales y racionales, diferentes opciones de gráficas en 2-D y 3-D, opciones para ecuaciones diferenciales, optimización además de las herramientas para estadı́stica y econometrı́a. Observando lo anterior se analiza que SCILAB es una opción de gran importancia para la facultad de ciencias económicas en especial el área de Matemática y Estadı́stica, para la unidad de informática permitirı́a fortalecer el desarrollo e incentivar el software libre. De igual manera alcances paralelos a los anteriores están los del desarrollo del curso libre para usuarios y de capacitaciones para los monitores de la UIFCE. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 54 SCILAB 15. CONCLUSIONES SCILAB es un programa muy potente, el hecho de que sea software libre no lo hace inferior a sus competidores, La posibilidad de incorporar nuevas colaboraciones en la parte programable hace que se vuelva a medida que pasa el tiempo mucho más funcional para diversas ramas. Las operaciones matemáticas son muy sencillas e intuitivas, además que el programa es bastante rápido, lo que permite tener soluciones rápidas a cualquier clase de problema matemático. El lenguaje de programación es sencillo e intuitivo, pero para aprovechar al máximo sus posibilidades, es necesario tener conocimientos básicos previos de programación estructurada (lenguaje C++) y/o de programación matemática (lenguaje de Matlab) La ayuda del programa es completa aunque en algunas ocasiones se dificulta encontrar algo puntual. Es recomendable mirar los ejemplos y la sintaxis que se encuentran de cada una de las funciones. La parte gráfica es completa y su uso es importante para obtener las soluciones a los problemas planteados. Las adiciones hechas al programa gracias a los toolboxes son de gran utilidad ya que incorporan funciones que antes tocaba hacer manualmente. Esto abrevia bastante el trabajo y hace accesible el programa a usuarios menos avanzados en los temas de programación. En definitiva, SCILAB es una muy buena alternativa en el uso de programas matemáticos, ya que su uso no se diferencia mucho del de MATLAB y serı́a bastante accesible la migración por parte de las empresas o grupos de trabajo hacia el software libre, logrando disminuciones de costos. UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 55 SCILAB BIBLIOGRAFIA Referencias MORA, Hector. ”Introducción a SCILAB”. Universidad Nacional de Colombia, Bogotá. 2005 Laboratorio de Computación de Alto Desemepeño. ”Introducción a SCILAB”. Universidad Nacional de Asunción, Asunción.2005 UNIVERSIDAD NACIONAL DE COLOMBIA FACULTAD DE CIENCIAS ECONOMICAS UNIDAD DE INFORMATICA Y COMUNICACIONES 56