Introduccion Al Uso de Scilab2009

download Introduccion Al Uso de Scilab2009

of 135

description

archivo

Transcript of Introduccion Al Uso de Scilab2009

  • Universidad Nacional de Salta Facultad de Ciencias Exactas

    INTRODUCCIN AL USO DE SCILAB Lenguaje libre para la programacin cientfica

    Autores:

    Miguel Condor Mariela Finetti

    Luis Saravia

    Colaboradores: Maiver Villena

    Daniel Hoyos

    SALTA, marzo de 2009

  • 2

    CAPITULO 1 ........................................................................................................................................... 4

    INTRODUCCIN ................................................................................................................................................. 4 1.1. LA MOTIVACIN PARA LA ENSEANZA DEL SCILAB.................................................................... 4 1.2. LAS CARACTERSTICAS PRINCIPALES DE SCILAB. ......................................................................... 5 1.3. EL DIRECTORIO SCILAB ......................................................................................................................... 6 1.4. LA VENTANA DE TRABAJO ................................................................................................................... 7 1.5. BIBLIOGRAFA .......................................................................................................................................... 9

    CAPITULO 2 ......................................................................................................................................... 11

    NOCIONES BSICAS ....................................................................................................................................... 11 2.1. INTRODUCCIN ...................................................................................................................................... 11 2.2. ENTRADA, EJECUCIN Y SALIDA ..................................................................................................... 11 2.3. LAS VARIABLES Y LOS TIPOS DE DATOS ........................................................................................ 12 2.4. OPERADORES Y FUNCIONES ............................................................................................................... 17 2.5. AYUDA...................................................................................................................................................... 18 2.6. CONSTANTES .......................................................................................................................................... 18 2.7. NMEROS COMPLEJOS ......................................................................................................................... 19 2.8. VECTORES Y MATRICES ...................................................................................................................... 20 2.9. EL GENERADOR DOBLE PUNTO ......................................................................................................... 22 2.10. TIRA DE CARACTERES ........................................................................................................................ 23

    CAPITULO 3 ......................................................................................................................................... 27

    PROGRAMACIN ............................................................................................................................................. 27 3.1. INTRODUCCIN ...................................................................................................................................... 27 3.2. DIRECTORIO PRINCIPAL DE TRABAJO ............................................................................................. 28 3.3. GUARDANDO LA SESIN DE TRABAJO ............................................................................................ 29 3.4. ENTRADA Y SALIDA SENCILLAS ....................................................................................................... 30 3.5. ESTRUCTURA DE UNA FUNCIN ....................................................................................................... 31 3.6. VARIABLES GLOBALES Y LOCALES ................................................................................................. 34 3.7. OPERADORES RELACIONALES Y LGICOS ..................................................................................... 37 3.8. SENTENCIAS DE CONTROL DE FLUJO .............................................................................................. 39 3.8. DEFINICIN DE FUNCIONES EN LINEA ............................................................................................ 43

    CAPTULO 4 ......................................................................................................................................... 45

    GRFICOS EN SCILAB.................................................................................................................................... 45 4.1. INTRODUCCIN ...................................................................................................................................... 45 4.2. LA VENTANA GRFICA ........................................................................................................................ 45 4.3. REPRESENTACIN EN 2D ..................................................................................................................... 47 4.5. MANIPULACIN DE LOS PARMETROS DEL GRFICO ................................................................ 55 4.6. GRFICOS COMPUESTOS ..................................................................................................................... 57 4.7. CURVAS DE NIVEL ................................................................................................................................. 60 4.8. REPRESENTACIN DE GRFICOS EN 3D .......................................................................................... 62

    CAPITULO 5 ......................................................................................................................................... 67

    FUNCIONES MATEMTICAS ........................................................................................................................ 67

  • 3

    5.1. FUNCIONES MATEMTICAS ELEMENTALES .................................................................................. 67 5.2. VECTORES Y MATRICES ...................................................................................................................... 68 5.3 NMEROS COMPLEJOS .......................................................................................................................... 82 5.4 POLINOMIOS ............................................................................................................................................ 83 5.5 RESOLUCIN DE ECUACIONES NO LINEALES ................................................................................. 85 5.6 FUNCIONES ESTADSTICAS .................................................................................................................. 87 5.7 DERIVADA ................................................................................................................................................ 88 5.8.- INTEGRALES .......................................................................................................................................... 89 5.9 ECUACIONES DIFERENCIALES ORDINARIAS ................................................................................... 94

    CAPITULO 6 ......................................................................................................................................... 96

    ENTRADAS Y SALIDAS DE DATOS .............................................................................................................. 96 6.1. INTRODUCCIN ...................................................................................................................................... 96 6.2. ARCHIVOS BINARIOS (SAVE, LOAD) ................................................................................................. 96 6.3. ENTRADA Y SALIDA TIPO SCILAB (SIN FORMATO) ...................................................................... 98 6.4. FUNCIONES DE ENTRADA Y SALIDA TIPO FORTRAN (READ, WRITE) ..................................... 99 6.5. FUNCIONES DE ENTRADA Y SALIDA DEL TIPO C ........................................................................ 105 6.6. LEYENDO O GRABADO LNEAS DE ARCHIVOS DE TEXTOS...................................................... 115

    CAPITULO 7 ....................................................................................................................................... 116

    DILOGOS E INTERFACES GRFICAS ................................................................................................... 116 7.1. El USO DE DILOGOS E INTERFACES A USUARIO ....................................................................... 116 7.2. DILOGOS .............................................................................................................................................. 116 7.3. INTERFACES GRFICAS DE USUARIO ............................................................................................ 124

    CAPITULO 8 ....................................................................................................................................... 132

    8 TOMA DE DATOS CON INTERFASE TCL/TK ....................................................................................... 132 8.1. EJECUCIN DE SENTENCIAS TCL .................................................................................................... 132 8.2. TOMA DE DATOS DESDE LA PUERTA SERIE ................................................................................. 133

  • 4

    CAPTULO 1

    INTRODUCCIN

    Este documento est conformado por apuntes de clase para la enseanza del programa Scilab en la materia Laboratorio 1, en el departamento de Fsica de la Facultad de Ciencias Exactas, Universidad Nacional de Salta. Este material constituye una primera etapa en el aprendizaje de este programa permitiendo que el alumno aprenda los aspectos ms importantes del mismo y pueda utilizarlo para resolver los problemas ms habituales en la Licenciatura. Es de esperar que a partir de esta introduccin, en caso de ser necesario, el alumno pueda profundizar personalmente en los aspectos ms avanzados.

    1.1. LA MOTIVACIN PARA LA ENSEANZA DEL SCILAB.

    Tradicionalmente, se ha comenzado el proceso de enseanza de la programacin en computadoras con lenguajes simples como el Basic o sus derivados. A medida que se increment la capacidad de las computadoras fue posible utilizar programas que permiten manejar problemas de clculo ms complejos aunque su utilizacin siga siendo sencilla. Los mismos pasan a ser una herramienta poderosa que permite tratar la mayor parte de los problemas matemticos con los que se enfrentar el alumno en su carrera de grado y en su actividad profesional posterior.

    Entre los programas de mayor uso con las caractersticas mencionadas en el prrafo anterior, se encuentran Mathematica y Matlab (o similares, como Octave y Scilab). El Matlab es el ms utilizado en cursos de Fsica e Ingeniera, mientras que el primero en general resulta ms apropiado para matemticos por su manejo del clculo simblico. Estos programas se caracterizan por disponer, adems de las herramientas habituales de programacin, de un conjunto muy grande de funciones tiles en las aplicaciones matemticas, que permiten encarar el estudio de la mayor parte de los problemas que se presentan.

    Scilab ha sido desarrollado por el INRIA, un Instituto de Investigacin francs de prestigio. Recientemente, se cre el Consorcio Scilab que se encarga del servicio de mantenimiento y mejora del programa. Existen versiones para los sistemas operativos Windows y Linux, lo que

  • 5

    aumenta su flexibilidad de uso. La popularidad de este programa en el mbito internacional se ha ido incrementando sustancialmente en los ltimos aos.

    1.2. LAS CARACTERSTICAS PRINCIPALES DE SCILAB.

    Scilab es un programa compatible con Matlab y se ha desarrollado originalmente para aplicaciones de electrnica, especialmente sistemas de control y tratamiento de seales. Est compuesto de tres partes distintas: un intrprete de los cdigos de programacin, las libreras de funciones (procedimientos Scilab) y libreras con rutinas en Fortran y C, dos lenguajes distintos compatibles con Scilab.

    Una ventaja de Scilab es que utiliza la sintaxis de Matlab para el manejo de Matrices Numricas, adems de poder utilizar objetos ms complejos. Por ejemplo, el manejo de matrices con racionales, polinomios o funciones es muy fcil de realizar con Scilab. Resumiendo podemos decir que Scilab es un paquete de software cientfico para el clculo numrico con un entorno muy amigable para el usuario. Sus principales caractersticas son:

    1. Es un programa orientado para la aplicacin de las herramientas matemticas a las distintas ciencias, en especial la fsica y la ingeniera. Esto se evidencia en la gran cantidad de funciones capaces de resolver la mayor parte de los problemas matemticos. Scilab dispone de ms de 1000 funciones matemticas.

    2. Es una aplicacin interactiva. Esto significa que se le puede plantear una operacin matemtica y el programa entrega la respuesta de inmediato. Ello lo hace muy amigable cuando se resuelven problemas concretos no muy complicados. Pero tambin es posible escribir programas, es decir un conjunto sucesivo de operaciones matemticas y lgicas, para poder resolver problemas ms complicados que requieran un tratamiento ms cuidadoso.

    3. Scilab es Software Libre. Actualmente existe una lnea de trabajo que piensa que el desarrollo de programas debe realizarse por el trabajo mancomunado de las personas interesadas y que lo mismos deben tener libre disponibilidad de manera que puedan ser usados y eventualmente cambiados sin restricciones, siempre que se reconozca la autora

  • 6

    del programa. Este es el esquema utilizado en el caso del Scilab, que es de libre disponibilidad y se puede encontrar en Internet bajo la direccin:

    http://www.scilab.org Desde este sitio pueden descargarse diferentes versiones del programa y consultar informacin general, manuales y documentacin adicional. Tambin existe un grupo de noticias (News) donde pueden intercambiarse experiencias, ideas y programas desarrollados en Scilab. Adems, existen numerosos sitios en internet donde puede encontrarse informacin adicional.

    4. Se encuentra disponible para diferentes sistemas operativos: Windows y Linux. Es importante decir que el grupo Scilab antes mencionado actualiza con frecuencia su software, creando nuevas versiones, corrigiendo errores e implementando nuevas funciones.

    Scilab tiene adems otras importantes caractersticas para el programador ms avanzado o con necesidades especficas, entre las que se pueden mencionar:

    Intrprete sofisticado y lenguaje de programacin con la sintaxis tipo MATHLAB. Cientos de funciones matemticas desarrolladas (el usuario puede ampliarlas). Muy buenos grficos (2D, 3D y animacin). Muchas libreras desarrolladas (llamadas toolboxes en MATHLAB ). Control (control clsico, LQG, H) Paquete para optimizacin LMI (Matrices con inecuaciones lineales). Optimizacin (diferenciable y no diferenciable). Scicos (entorno interactivo para la modelizacin y simulacin con sistemas hbridos) Metanet (anlisis de redes y optimizacin).

    1.3. EL DIRECTORIO SCILAB

    En el directorio de instalacin de Scilab los subdirectorios ms significativos son los siguientes:

    bin (binarios) es el directorio en el que se almacenan los archivos ejecutables. El cdigo ejecutable de Scilab se encuentra all (scilex para el entorno Windows). Este

  • 7

    directorio tambin contiene los scripts1 que administran los ficheros que se generan con Scilab y manejan la impresin de los mismos.

    demos (demostracin) es el directorio donde se encuentran todos los ejemplos y demostraciones. El fichero alldems.dem permite aadir una nueva demostracin para que pueda ser ejecutada haciendo click sobre el botn Demos del men. Es muy til consultar Demos ya que los ejemplos incluidos pueden inspirar al nuevo usuario.

    examples (ejemplos) contiene ejemplos muy tiles de cmo conectar Scilab con programas externos, utilizando enlaces dinmicos ( dynamic link ).

    man (manuales) es el directorio que contiene la ayuda on-line de Scilab y que est subdividido en submanuales.

    routines (rutinas) es el directorio que contiene el cdigo fuente de todas las rutinas numricas.

    En la versin de Scilab para Linux, es posible seleccionar el directorio de instalacin para la distribucin aunque se recomienda hacerlo en /usr/local.

    1.4. LA VENTANA DE TRABAJO

    En la figura 1.1 de esta seccin se observa la ventana de trabajo del Scilab. En la barra de herramientas se tienen diferentes opciones, entre las cuales se puede mencionar:

    File (archivo) aparece una lista con opciones que permiten manejar los archivos que se utilizan, como Open, Load, Save y Print (abrir, cargar, grabar, imprimir). Las siguientes opciones estn disponibles dentro del men:

    Exec: (ejecutar) para ejecutar en la ventana un archivo de procedimientos o una funcin (se guardan con terminacin .sci).

    Change Directory: (cambiar directorio) para cambiar el directorio de trabajo. Get Current Directory: (obtener el directorio corriente) para obtener el camino (path)

    al directorio actual.

    Exit: (salir) termina la sesin actual de scilab.

    1 Un script es un programa sencillo que contiene una secuencia de instrucciones que el programa principal (en

    este caso Scilab) deber interpretar. Ver captulo 3.

  • 8

    Edit (editar) la lista contiene opciones para copiar parte de un texto, mediante el uso del clipboard (porta papeles), un sector de memoria donde se guarda el contenido copiado hasta que se pega en otro texto.

    Preferences (preferencias) contiene opciones para cambiar la apariencia de la pantalla de trabajo, como el lenguaje (ingls/francs), color, fuente de las letras, etc. Control (control) la lista contiene opciones para controlar la ejecucin de las funciones mediante las instrucciones resume, abort e interrupt, (reasume, aborta, interrumpe) que permiten moverse dentro de diferentes procedimientos y ventanas de trabajo interactivas. Editor (editor) al elegirlo aparece el programa editor de textos SciPad con el cual se escriben los procedimientos o funciones que se ejecutarn en Scilab. Applications (aplicaciones) desde all se pueden ejecutar algunas aplicaciones que funcinan bajo scilab, como Scicos que es un paquete para la simulacin de sistemas dinmicos. ? (ayuda) este men contiene las opciones Help y Demos.

    Demos (demostraciones) Se abre una ventana con una lista de demostraciones de las posibilidades de Scilab. Se elige una y se presiona OK. Se recomienda probar las posibilidades de Scilab ejecutando las diferentes demostraciones.

    Help (ayuda) Esta opcin permite acceder a una descripcin de cada uno de los comandos de Scilab. La informacin es igual a la contenida en el manual de gua. Los comandos estn agrupados por tipos de funcin y al aparecer la lista, se puede apretar sobre el nombre de alguno para que aparezca la informacin detallada sobre el mismo. Recorriendo estas listas se puede apreciar la gran variedad de funciones disponibles en Scilab.

  • 9

    Figura 1.1

    1.5. BIBLIOGRAFA

    En el sitio de Internet mencionado en 1.2 se dispone de documentos de introduccin, aplicaciones especficas y manuales para el usuario. Tambin existen libros sobre el uso de Scilab, algunos de los cuales se detallan a continuacin.

    * Un manual en espaol:

    Ttulo: Introduccin al Scilab Autor: Hctor Mora Escobar Univ. Nacional de Colombia Fecha de publicacin: Nov/2001 Pginas: 55 Disponibilidad: archivo poscript

    * Un manual en ingls:

    Ttulo: Introduction to Scilab, usersguide Autor: Scilab Group Fecha de publicacin: Pginas: 126 Disponibilidad: archivo poscript.

    *Manual de referencia en ingls: Ttulo: Reference manual

    Autor: Scilab Group Pginas: 722

    Disponibilidad: archivo poscript De este libro se disponen dos ndices con cada comando del manual, uno ordenado por tema y otro por abecedario (en Word), tiles para encontrar los comandos que se necesiten.

    *Un libro muy completo, en ingls: Titulo: Numerical and statistical methods with scilab in science and engineering Author: Gilberto Urroz

  • 10

    Fecha de publicacin: Febrero/2002 Pginas: 1100 (dos volmenes) Disponibilidad: 2 archivos pdf

  • 11

    CAPITULO 2

    NOCIONES BSICAS

    2.1. INTRODUCCIN

    En este captulo se introducir la informacin bsica sobre el funcionamiento del lenguaje y los comandos ms comunes a fin de poder comenzar a utilizar el programa. Como con cualquier otra aplicacin la destreza en el uso de la misma se ir adquiriendo en la medida del uso del software. En captulos posteriores se ir profundizando el aprendizaje del lenguaje.

    Los ejemplos desarrollados para este libro se realizaron usando la versin 4.1 de Scilab, la ltima al momento de la edicin de estos apuntes, pero las nociones bsicas son comunes con las versiones anteriores, siendo las diferencias entre ellas fundamentalmente el agregado de nuevas funciones y aplicaciones.

    2.2. ENTRADA, EJECUCIN Y SALIDA

    Comencemos viendo cmo se ejecuta el programa y cmo se cierra al dejar de usarlo.

    Inicie Scilab simplemente haciendo click en el icono correspondiente en su escritorio. (En la versin linux, escriba scilab en una terminal de comandos). Lo primero que se muestra es una ventana con el siguiente Men Principal:

    File Edit Preferences Control Editor ? _______________________________

    scilab-4.1

    Copyright (C) 1989-2006 Consortium Scilab (INRIA/ENPC)

    _______________________________

    Startup execution: loading initial environment

    -->t= 2+3 t = 5.

    -->

  • 12

    Scilab es una aplicacin interactiva, por lo tanto se introducen las operaciones que se desean ejecutar (los comandos) y el programa las ejecuta. Veremos despus que tambin es posible ejecutar una serie de comandos de Scilab escritos en un archivo (programas), mediante un editor de texto. Por ello esta versin ya viene con un editor incorporado, llamado SciPad, al cual se accede desde el men Editor.

    La lnea superior es el men bsico desde donde se pueden ejecutar las operaciones principales. Debajo de este men, presionando F3, se puede agregar o quitar una barra de herramientas para la ejecucin de comandos especficos.

    Scilab muestra el siguiente smbolo, que se conoce como prompt, indicando que el programa est listo para recibir la instruccin:

    -->

    Despus del prompt es el lugar donde se comienza a introducir los comandos a ejecutar. En este caso se le ha ordenado que sume 2+3 y almacene el resultado en la variable t. El comando se ejecuta presionando la tecla ENTER. Scilab imprime el resultado de la operacin y a continuacin vuelve a mostrar el prompt indicando al usuario que la aplicacin esta lista para recibir otra instruccin.

    Para salir de Scilab se utiliza el comando exit. Este comando puede ejecutarse escribindolo a continuacin del prompt o seleccionando esta opcin desde el men File, con lo cual se vuelve al escritorio del sistema operativo.

    2.3. LAS VARIABLES Y LOS TIPOS DE DATOS

    En Scilab se pueden definir variables en las que se almacenan valores numricos o alfanumricos. Estas variables quedan guardadas en la memoria RAM de la computadora y pueden utilizarse en diferentes clculos mientras dure la ejecucin del programa o no se

    -->exit

  • 13

    redefina la variable. Una variable es creada simplemente asignndole un valor. Por ejemplo, anteriormente se defini la variable t introduciendo en ella la suma 2+3.

    En computacin suelen usarse distintos tipos de datos: numrico entero, numrico flotante, texto alfanumrico, etc. Scilab determina el tipo de la variable a partir del contenido asignado a la variable, por lo tanto se puede cambiar de tipo simplemente cargando un nuevo valor. Por ejemplo, podemos cargar en la variable t un nmero flotante y luego un texto alfabtico.

    Los tipos de datos bsicos que maneja Scilab son enteros, reales (en sus distintas notaciones), caracteres, cadenas de caracteres, entre otros. Como ejemplos tenemos:

    4532 3.5 -4.1234

    3.14e-10 3.14E-10

    0.0035e20 -31.45e+11 scilab scilab 2.7

    Como se aprecia, los textos alfanumricos (cadenas de caracteres) deben introducirse entre comillas para que Scilab los reconozca como tales y no los confunda con identificadores de variables.

    -->t=2.56 t =

    2.56

    -->t="Scilab" t =

    Scilab

  • 14

    Ms adelante veremos que Scilab utiliza tipos ms complejos de variable que permiten manejar nmeros complejos, matrices y polinomios. La posibilidad de almacenar matrices en una variable y realizar diversas operaciones con ellas permite que Scilab pueda llevar a cabo operaciones complejas con suma facilidad, convirtindolo en un poderoso lenguaje de clculo. Las maysculas y minsculas son distinguidas por Scilab. Esto significa que t y T son dos variables diferentes, es decir se guardan por separado en la memoria. Por ejemplo:

    Como se aprecia, t y T se guardan por separado y pueden ser utilizadas como tales a posteriori.

    -->t = 2.56 t =

    2.56

    -->T = 3.1e3 T =

    3100.

    -->t, T t =

    2.56 T =

    3100.

  • 15

    Es posible pedir en cualquier momento un listado de las variables disponibles en la memoria. Para ello se ejecuta el comando who, que muestra en pantalla la siguiente informacin:

    Vemos que la lista contiene a las variables t y T. Al comenzar su trabajo, Scilab define un conjunto de variables que tambin aparecen en el listado (variables predeterminadas o del entorno Scilab). No deben usarse identificadores de variables similares a las predeterminadas por Scilab.

    Los nombres (identificadores) de las variables pueden tener hasta 24 caracteres de longitud. Deben comenzar con una letra o con el smbolo $. El resto de los smbolos pueden ser letras, nmeros, #, _, $, . Por ejemplo, los siguientes nombres son vlidos:

    Primer_valor, b33, $signo, $123, masaInicial

    -->who your variables are...

    T t scicos_pal %scicos_menu %scicos_short %scicos_help %scicos_display_mode modelica_libs scicos_pal_libs %helps WSCI home SCIHOME PWD TMPDIR MSDOS SCI guilib sparselib xdesslib percentlib polylib intlib elemlib utillib statslib alglib siglib optlib autolib roblib soundlib metalib armalib tkscilib tdcslib s2flib mtlblib %F %T %z %s %nan %inf COMPILER %gtk %gui %pvm %tk $ %t %f %eps %io %i %e using 14754 elements out of 5000000. and 57 variables out of 9231

    your global variables are...

    LANGUAGE %helps demolist %browsehelp LCC %toolboxes %toolboxes_dir using 1165 elements out of 11000. and 7 variables out of 767

  • 16

    Scilab posee la variable predeterminada ans que almacena el ltimo valor calculado. El uso de la misma permite realizar operaciones posteriores empleando este valor. Veamos el siguiente ejemplo:

    Como se aprecia, ans siempre almacena el ltimo valor calculado. En el ejemplo se realiza un segundo clculo operando con el resultado anterior, luego de esta segunda instancia ans adopta el nuevo valor.

    Para facilitar el trabajo, Scilab guarda en memoria todas las operaciones sucesivas que se estn realizando. Si se quiere utilizar una de ellas a posteriori, basta presionar las teclas del cursor sucesivamente (flecha arriba o abajo) para recorrer la lista. Los comandos utilizados van apareciendo y uno puede seleccionar y ejecutar aquel que se quiere utilizar por segunda vez.

    Scilab tambin permite realizar varias operaciones en una misma orden, separando cada comando con una coma.

    -->a1=5, a2=4.35, a3=0.0023 a1 =

    5. a2 =

    4.35 a3 =

    .0023

    -->4.5+0.23 ans =

    4.73

    -->ans*2 ans =

    9.46

  • 17

    En la ejecucin de una orden, si sta se encuentra finalizada por un punto y coma, no se muestra el resultado de la ejecucin en la ventana de Scilab, pero la operacin se lleva adelante. (Esta forma de ejecutar rdenes se utiliza mucho en la confeccin de programas).

    2.4. OPERADORES Y FUNCIONES

    Scilab incluye numerosos operadores, entre ellos los aritmticos. Las cuatro operaciones bsicas: suma, resta, multiplicacin y divisin estn representadas por: + - * / y la potencia por: ^ **.

    Adems se dispone de los parntesis: ( , ) para agrupar las operaciones. Las reglas con las que operan los smbolos precedentes son las habituales en matemtica.

    Se dispone tambin de una gran cantidad de funciones, que prcticamente cubren la mayor parte de las necesidades. Las funciones elementales disponibles son:

    abs, acos, acosh, asin, asinh, atan, atanh, ceil, cos, cosh, cotg, coth

    exp

    fix, floor

    int

    log, log10, log2

    max, min, mdulo(a,b) round sin, sinh, sqrt

    tan, tanh

    -->a1=5; a2=4.35; a3=0.023;

    -->

  • 18

    La mayora son reconocibles por su nombre. Por ejemplo ceil es la parte entera superior, floor es la parte entera inferior, fix el redondeo hacia cero (igual a int), mdulo(a,b) da el residuo de a dividido b donde ambos son enteros.

    Adems de las funciones elementales existe una gran cantidad de funciones especiales que se irn viendo a lo largo del curso, muchas de ellas de inters por sus aplicaciones en fsica e ingeniera.

    2.5. AYUDA.

    Ya hemos visto que en el men principal se encuentra una ayuda ? donde se detallan todos los comandos agrupados por temas.

    Tambin es posible obtener esa informacin directamente dentro del lenguaje al disponerse de un comando help. Si, por ejemplo, se escribehelp tan, sin las comillas, obtendremos directamente la informacin detallada sobre la funcin tangente. Si no se dispone del nombre especfico de la funcin, se puede solicitar informacin de todas las funciones de un tema dado utilizando el comando apropos. Por ejemplo, se puede pedir apropos polynomial para obtener todas las funciones relacionadas con los polinomios.

    2.6. CONSTANTES

    Es habitual utilizar en matemtica algunas constantes que tienen una importancia especial, como ser el nmero Pi, el nmero e, etc. Estos nmeros se encuentran predefinidos en Scilab y pueden ser utilizados directamente en cualquier clculo. Se les llama constantes debido a que tienen algunas propiedades especiales. Estos nmeros estn protegidos de modo que no se pueden cambiar. Se distinguen mediante una nomenclatura especial, colocando el signo % delante de su nombre. En el cuadro siguiente se muestran algunos de ellos. Se ve que al intentar cambiar el nmero pi, dndole el valor 0 el programa marca un error ya que una constante no se puede cambiar. En el cuadro se observa el nmero e y tambin el nmero imaginario i que se utiliza para escribir un nmero complejo.

  • 19

    2.7. NMEROS COMPLEJOS

    Scilab maneja los nmeros complejos en forma sencilla. Para eso define internamente una variable, %i, que contiene el nmero imaginario i. Un complejo cualquiera se expresa usando la parte real ms la imaginaria multiplicada por %i. Por ejemplo:

    a = 5+7*%i

    Las funciones de Scilab admiten nmeros complejos como variables del clculo y pueden expresar sus resultados como nmeros. Por ejemplo:

    -->b = sqrt(-4) b =

    2.i

    -->c=sqrt(1+%i) c =

    1.0986841 + .4550899i

    -->c^2 ans =

    1. + i

    -->%pi %pi = 3.1415927

    -->%pi=0 !--error 13 redefining permanent variable

    -->%e %e = 2.7182818

    -->2+3*%i ans = 2. + 3.i

  • 20

    2.8. VECTORES Y MATRICES

    Scilab est preparado para trabajar con arreglos de variables (vectores y matrices) sin dificultad alguna. Esto convierte al Scilab en un lenguaje de clculo matricial, ya que estn definidas todas las operaciones que se aplican a matrices en forma de funciones.

    Las matrices se definen utilizando corchetes [ , ]. Existen tres formas equivalentes para definir una matriz, las que se ilustran mejor utilizando los ejemplos que siguen:

    Como se aprecia, los elementos de la matriz se pueden separar con comas o con un espacio en blanco. Las filas sucesivas se separan con punto y coma o escribindolas en renglones sucesivos. En todos los casos la expresin debe comenzar y terminar con corchetes.

    El elemento de una matriz c que ocupa la fila b y la columna d se indica como c(b,d) . Por ejemplo, en la matriz c ya definida:

    A continuacin expondremos las operaciones ms sencillas. Las restantes se vern en un captulo posterior.

    -->c = [11,12,13;21,22,23] c =

    ! 11. 12. 13. ! ! 21. 22. 23. !

    -->d = [11 12 13;21 22 23] d =

    ! 11. 12. 13. ! ! 21. 22. 23. !

    -->f = [11 12 13 --> 21 22 23] f =

    ! 11. 12. 13. ! ! 21. 22. 23. !

    -->c(2,3) ans =

    23.

  • 21

    La matriz transpuesta se obtiene con el smbolo colocado despus de la variable. Por ejemplo, refirindonos a la variable c definida anteriormente como matriz:

    El producto de una constante por una matriz se expresa con el signo habitual de producto *. La constante se multiplica por cada elemento de la matriz. Por ejemplo:

    El producto entre dos matrices se define mediante el operador para la multiplicacin *. La operacin A*B indica el producto matricial entre las matrices A y B. Scilab tambin puede efectuar el producto entre los elementos de dos matrices anteponiendo un punto al signo asterisco, es decir: .*. Las matrices deben tener las dimensiones correctas para efectuar la multiplicacin. En el ejemplo siguiente se ve la diferencia entre ambas operaciones.

    -->c' ans =

    ! 11. 21. ! ! 12. 22. ! ! 13. 23. !

    -->1.2*c ans =

    ! 13.2 14.4 15.6 ! ! 25.2 26.4 27.6 !

    -->A=[1,1;2,2],B=[2,2]',C=[3,3;1,1];

    -->A*B ans =

    4. 8.

    -->A*C ans =

    4. 4. 8. 8.

    -->A.*C ans =

    3. 3. 2. 2.

  • 22

    2.9. EL GENERADOR DOBLE PUNTO

    Resulta muy til en el entorno de Scilab la generacin de vectores formados por una sucesin de valores igualmente separados. A esos efectos dispone de una forma abreviada de generacin de vectores que se escribe con el siguiente formato:

    Valor Inicial : incremento : Valor Final

    Esto genera un vector cuyo primer valor es el valor inicial y los valores siguientes estn

    igualmente espaciados en la cantidad incremento hasta llegar al valor final. Se puede omitir el incremento y en este caso se considera por defecto el valor 1. Por ejemplo:

    x = 3 : 0.5 : 7 x = [3 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0]

    Debido al uso del doble punto en la notacin se le conoce con el nombre de generador doble punto.

    La notacin doble punto se utiliza en otras circunstancias. Por ejemplo si se dispone de una matriz c y se escribe d = c(:,2:3), el primer doble punto significa que se est considerando todas las filas, y luego las columnas de 2 a 3 con saltos de 1, es decir:

    Otra forma de generar un vector linealmente espaciado es mediante la sentencia linspace:

    [v]=linspace(x1,x2 [,n])

    Que genera un vector fila de n puntos igualmente espaciados entre x1 y x2. v ser un vector fila, real o complejo de acuerdo al valor de x1 y x2; n es un entero. El valor por defecto es 100.

    =

    011011001

    c

    =

    000

    110

    d

  • 23

    Ejemplos: linspace(1,2,10) linspace(1+%i,2+2*%i,10)

    2.10. TIRA DE CARACTERES

    Una cadena de caracteres (string) es bsicamente una variable que contiene un texto colocndolo entre comillas simples o dobles. Una cadena de caracteres puede ser manipulada a travs de comandos especficos. En esta seccin veremos algunos que pueden ser de gran utilidad cuando se trabaja con archivos de texto.

    Dos o ms cadenas de caracteres pueden unirse en sucesin mediante la operacin de concatenacin, que se realiza directamente empleando el smbolo +:

    Las matrices de caracteres se construyen como matrices ordinarias, es decir utilizando corchetes. Un uso muy importante de las matrices de caracteres es la manipulacin y creacin de funciones. El siguiente ejemplo ilustra la creacin de una matriz de caracteres.

    -->t1="El resultado es " t1 =

    El resultado es

    -->t2="positivo" t2 =

    positivo

    -->t3=t1+t2 t3 =

    El resultado es positivo

    -->A=['x' 'y';'z' 'w+v'] A =

    !x y ! ! ! !z w+v !

  • 24

    La funcin length calcula la cantidad de caracteres en una tira. Para matrices de tiras de caracteres retorna la longitud de cada uno de los elementos de la matriz.

    La funcin part permite extraer caracteres de una tira, para lo cual debemos indicar la posicin del o los caracteres a extraer. Para extraer una serie de caracteres, la posicin se indica como una secuencia de valores.

    La funcin strindex(str1,str2) proporciona la posicin que la tira str2 tiene en str1. Una vez que se determina la posicin de str2 se puede utilizar la funcin part para extraerlo de la tira.

    -->length(123) ans = 3. -->M=['a','bb';'ccc','dddd']; -->length(M) ans =

    1. 2. 3. 4.

    -->part("abcd",1) ans = a

    -->part("abcd",[1,3]) ans =

    ac -->c=part(['a','abc','abcd'],[1,1,2]) c =

    !aa aab aab ! -->part(t3,[1:12]) ans = El resultado

    -->t3 t3 = El resultado es positivo

    -->strindex(t3,"es") ans = ! 5. 14. !

  • 25

    La funcin strsubst(str1,str2,str3) reemplaza str2 con str3 en la tira str1.

    La funcin strcat(str1,str2) genera una tira insertando str2 entre los caracteres de str1. Este ltimo tiene que ser un vector de caracteres.

    La funcin string(x) convierte la matriz x en una matriz de caracteres:

    -->strsubst(t3,"positivo","negativo") ans = El resultado es negativo

    -->s=['a' 'b' 'c'] s =

    !a b c !

    -->strcat(s,'-') ans =

    a-b-c

    -->s2=string(7) s2 = 7 -->s3='la suma es '+s2 s3 = la suma es 7 -->string(5+2) ans = 7 -->s4=string(1:5) s4 = !1 2 3 4 5 ! -->s5=s4(1)+s4(5) s5 = 15 -->s5+s4 ans = !151 152 153 154 155 !

  • 26

    Los caracteres nmeros pueden convertirse a datos tipo nmero mediante la funcin evstr (evaluate string).

    Como se observa en el ltimo ejemplo, la funcin puede usarse para evaluar cualquier operacin expresada como caracteres, incluyendo las que tienen variables que guardan nmeros. Tambin pueden ejecutarse sentencias expresadas como tiras de caracteres mediante la funcin execstr (execute string).

    El resultado no se muestra pero al llamar las variables de salida se verifica que se ha realizado. Lo mismo se puede hacer con varias sentencias en un vector, como en el caso del ltimo ejemplo. El ejemplo siguiente muestra la ejecucin de un programa cuyas lneas se presentan como tiras de un vector:

    -->n1=evstr(s4) n1 = ! 1. 2. 3. 4. 5. ! -->n1(1)+n1(5) ans = 6. -->evstr('2+2') ans = 4.

    -->execstr('a=1') -->a

    a = 1. -->execstr(['a=1' 'b=sqrt(9)']) -->a b

    -->execstr(['a=2' 'x=[]' 'for j = 1:4' 'x = [x a^j]' 'end']) -->x

    x =

    ! 2. 4. 8. 16. !

  • 27

    CAPITULO 3

    PROGRAMACIN

    3.1. INTRODUCCIN

    La forma interactiva de Scilab resulta cmoda cuando se necesitan realizar clculos que hagan uso de unos pocos comandos. A medida que el clculo se complica, la lista de comandos se agranda y por ende se facilitan las equivocaciones. Por otra parte, resulta til que una sucesin de comandos pueda guardarse para poder usarla posteriormente. A ese conjunto de sentencias que se puede ejecutar todas las veces que se requiera Scilab las denomina un script.

    Es posible guardar la lista de comandos en un archivo de texto, para luego llamar y ejecutar esos comandos. En Scilab, la lista de comandos se organiza en un tipo de estructura a las que se les da el nombre de funcin. Esta se guarda en un archivo de texto con extensin sci. Por ejemplo, un archivo para una funcin que calcula el promedio de una lista de nmeros puede llamarse promedio.sci. Por lo general se reserva la extensin sci para funciones definidas por el usuario (aplicacin especfica). Cuando se escriben programas ms extensos, donde se involucra el uso de varias funciones se lo llama script y se lo identifica con la extensin .sce. El uso de las extensiones es solo una convencin y Scilab puede ejecutar programas (funciones y/o scripts) con cualquier extensin e inclusive sin extensin.

    La estructura de un programa puede ser ms rica que una simple sucesin de comandos, puesto que estos debern ser ejecutados con cierta lgica, dependiendo de las necesidades propias de la aplicacin. En Scilab existen comandos que permiten tomar decisiones de acuerdo a los resultados obtenidos, o permiten repetir un clculo con distintos datos iniciales. Estos enriquecen mucho las posibilidades numricas de una funcin y son los llamados comandos de control que sern detallados ms adelante.

    Adems de los comandos de control de flujo, los siguientes comandos son muy tiles para utilizar en la confeccin de programas.

  • 28

    El operador ; (punto y coma) colocado al final de una sentencia evita la impresin en pantalla de la salida del comando.

    Para introducir un comentario se utiliza: //

    Para ver el directorio actual de trabajo: --> pwd Para cambiar el directorio de trabajo: --> chdir(nombre de nuevo directorio) Para listar archivos existentes en el directorio de trabajo: --> ls Para correr un archivo de comandos que est en un directorio se usa: --> exec(nombre

    de archivo)

    3.2. DIRECTORIO PRINCIPAL DE TRABAJO

    Scilab establece al inicio de su ejecucin un directorio de trabajo por defecto. Este directorio de trabajo depende del Sistema Operativo en el cual se est ejecutando Scilab. Se puede visualizar el directorio de trabajo actual de Scilab ejecutando el comando pwd.

    La carpeta Desktop (escritorio) aparece aqu como el directorio de trabajo actual de Scilab. En la versin de Scilab para Linux el directorio de trabajo por defecto es el home de la cuenta del usuario que ha iniciado la sesin.

    Generalmente las funciones no se guardan en el directorio de trabajo por defecto y puede resultar un poco tedioso indicar el lugar donde est ubicada cada funcin para utilizarlas. Existe una alternativa. Se puede modificar el directorio de trabajo utilizando el comando chdir (change directory):

    -->pwd ans =

    C:\WINDOWS\Profiles\usuario1\Escritorio\

  • 29

    Si el archivo de comandos que se desea utilizar se encuentra en el directorio de trabajo actual, basta ejecutar el comando exec acompaado del nombre de la funcin.

    3.3. GUARDANDO LA SESIN DE TRABAJO

    Los comandos que se van ingresando y ejecutando quedan almacenados en el Historial de Scilab, ste puede ser recorrido con las teclas hacia arriba y hacia abajo . Los comandos van apareciendo en la lnea de entrada del Scilab y el que nos interesa puede ejecutarse sin necesidad de volver a escribirlo en su totalidad, eventualmente pueden introducirse modificaciones en la lnea de rdenes mediante las teclas izquierda y

    derecha .

    En segundo lugar, en la versin para Windows, cualquiera de ellas puede ser copiada utilizando los comandos copy y paste del men Edit. En particular esto puede usarse para ir generando informacin sobre los clculos realizados, como se ha hecho en estos apuntes, donde los cuadros de ejemplos han sido llenados con informacin recogida de esa manera.

    Es posible guardar en un archivo todos los comandos y resultados que se van obteniendo en una sesin del Scilab mediante el comando diary. Si se ejecuta al comienzo de la sesin:

    diary(nombre_archivo)

    a partir de ese momento, todas las entradas y salidas interactivas van quedando registradas en el archivo nombre_archivo, que se guarda en el directorio de trabajo inicial.

    -->exec caida.sci ;

    -->chdir ('C:\Archivos de programa\scilab-4.1') ans = 0. -->pwd ans =

    C:\Archivos de programa\scilab-4.1

  • 30

    Para interrumpir el registro basta escribir la orden:

    diary(0)

    De ah en adelante no se guarda el intercambio. Cabe aclarar que el comando diary guarda las entradas y las salidas tal como aparecen en la ventana del Scilab.

    Esto puede tener varios usos. Por ejemplo, si se est probando una posible funcin ensayando la entrada de cada uno de sus comandos, ellos quedan guardados con diary. Luego se toma el archivo y eliminando los renglones innecesarios queda escrita la funcin que se estuvo ensayando, lista para ser usada.

    3.4. ENTRADA Y SALIDA SENCILLAS

    La funcin input se utiliza para la entrada de datos a travs de la consola. Su forma general es:

    [x] = input(mensaje,[string])

    x es la variable cuyo valor se requiere ingresar, mensaje es un letrero que aparecer en la consola identificando la entrada que se requiere, el argumento string slo se coloca si se solicita el ingreso de una variable tipo tira de caracteres.

    -->x=input("Entre un valor de x:") Entre un valor de x:-->2.5 x =

    2.5 -->m=input("Entre un titulo para el problema:","string") Entre un titulo para el problema:-->Problema_No_1 m =

    Problema_No_1

  • 31

    Esta funcin no se utiliza cuando se trabaja en forma interactiva, ya que en ese caso las variables se ingresan en forma directa. En cambio puede ser de mucha utilidad cuando se necesita entrar datos en un programa.

    La funcin disp imprime el contenido de una variable en la salida estndar (monitor). Su forma general es:

    disp(x1,[x2,....,xn])

    Donde x1, etc. pueden ser nombres de variables, constantes o tiras de caracteres. Esta funcin requiere al menos un argumento. De haber varios se van mostrando uno por lnea, comenzando por el ltimo.

    3.5. ESTRUCTURA DE UNA FUNCIN

    Supongamos que queremos evaluar numricamente el movimiento de una bola que se arroja verticalmente. Si se coloca un eje z, ver figura 1, la posicin queda identificada por la coordenada z y el movimiento est descripto por la funcin z(t) donde t es el tiempo. Si el eje es positivo hacia arriba, la bola parte del origen, su velocidad inicial vale vo y la aceleracin de la gravedad es g. La ecuacin del movimiento es:

    z = vo*t - 0.5*g*t2

    Se supone que aceleracin y velocidad son positivas cuando se orientan hacia arriba.

    z

    vo

    origen g

    FIG. 1.- Movimiento vertical de una bola.

    -->x=2.5,y=13.2 x =

    2.5 y = 13.2 -->disp(y,x,"x=") x=

    2.5 13.2

  • 32

    Los comandos para calcular esta expresin en forma interactiva se dan en la pantalla de abajo. En esta, se han dado valores especficos a la velocidad inicial (2 ms-1), gravedad (9,8 ms-2 ), tiempo (10 s). Esto se hace a continuacin del primer prompt y en el segundo se introduce la ecuacin para calcular la posicin. La respuesta es que la bola ha cado 470 m desde donde se inici el movimiento.

    Si deseamos calcular z varias veces convendr colocar este procedimiento dentro de una funcin. Para ello se debe abrir un editor donde escribir la funcin, se puede utilizar cualquier editor de texto, pero Scilab dispone del SciPad, que se ejecuta desde el men Editor.

    La estructura que debe tener la funcin para que Scilab la reconozca es:

    function [res1,res2,] = nombre(par1,par2,....)

    .

    endfunction

    Las lneas de punto indican dnde deben colocarse los comandos de clculo. El nombre identifica a la funcin y deber ser llamada desde la ventana de trabajo con ese nombre; par1, par2, etc. son parmetros que se introducen desde fuera de la funcin para que sean usados por la misma en el clculo; res1, res2, etc. son las variables en las cuales la funcin devuelve los resultados del clculo.

    Tomando el caso del ejemplo anterior, se crea la funcin caida que almacena el resultado del clculo en la variable z, y que contiene los siguientes comandos:

    -->vo=2 , g= 9.8 , t=10 vo = 2. g = 9.8 t = 10. -->z= vo*t - 0.5*g*t^2 z = - 470.

  • 33

    Cabe mencionar que en el editor Scipad los distintos tipos de comandos se muestran con colores caractersticos, lo que facilita la lectura del procedimiento. Tambin ayuda mucho a la lectura el utilizar sangras (cdigo tabulado) entre bloques de comando que pertenecen a un mismo nivel de decisin. Los comandos que comienzan con // son comentarios que el Scilab no procesa. Se colocan en un procedimiento para que el que inspecciona la funcin tenga una explicacin adecuada del clculo.

    Para usar la funcin es necesario que esta est guardada en un archivo, por ejemplo caida.sci, e indicarle a Scilab donde est para que la encuentre. Eso se realiza mediante el comando exec como sigue:

    -->exec(caida.sci);

    Esto basta hacerlo una vez, por ejemplo cuando se pone en marcha Scilab, para que la funcin est disponible para otros clculos. El camino (path) que se coloc antes de llegar al archivo caida.sci es uno en particular y debe coincidir con el directorio donde se guarda la funcin creada. A menos que definamos otro lugar casi siempre ser el directorio de trabajo de cada usuario. El punto y coma al final del comando evita que todas las lneas del programa aparezcan en la pantalla de trabajo cuando se carga la funcin, esto mejora la lectura de la pantalla de trabajo. Se aprecia en el programa caida.sci que la letra z no se ha puesto entre los corchetes [ ]. Esto se puede hacer si la funcin tiene una sola respuesta. Si hay varias se colocarn separadas por coma como se indica en la definicin general de la estructura de una funcin.

    A continuacin ejecutaremos la funcin, para lo cual se la carga con el comando exec desde el directorio file o se escribe la sentencia directamente en el prompt de la ventana de trabajo. Luego se llama la funcin con su nombre asignando el resultado a la variable x. En el llamado hay que introducir el valor de los parmetros. En el ejemplo se asigna a vo el valor 3 m/s, a g

    function z = caida(vo,g,t) // Calculo de la posicin de una bola en cada libre // vo = velocidad de la bola // g = aceleracin // t = tiempo, // z = distancia resultado z = vo*t - 0.5*g*t^2 endfunction

  • 34

    el valor 9.8 m/s2 y a t el valor 2 s. El resultado es 13,6 m. Debe tenerse cuidado de colocar adecuadamente los signos. Obsrvese que se utiliza la variable x para cargar el resultado de la funcin, mientras que adentro de la misma se utiliz a z. Esto se puede hacer porque las variables en la funcin son locales y no globales, lo que se explicar mas adelante.

    Como se indic anteriormente, bajo el men File aparece el comando exec. Si se llama desde all se abre una ventana para el manejo de directorios. Desde all se busca el directorio donde se encuentra la funcin. Esto es cmodo si no recordamos exactamente la ubicacin de la misma. El cuadro siguiente indica la salida de la ventana de trabajo ante la ejecucin del comando exec desde el men

    3.6. VARIABLES GLOBALES Y LOCALES

    Cuando se utiliza una funcin, las variables definidas dentro de la funcin no estn disponibles para el programa principal, se dice que son variables locales a la funcin. Ambos, funcin y programa principal, se comunican a travs de los parmetros, por ellos se ingresa la informacin externa necesaria, y por medio de las variables de salida de la funcin, sta entrega los clculos realizados.

    Existe la posibilidad de utilizar una variable que se declara en el programa principal, dentro de una funcin mediante las llamadas variables globales. Para ello basta definir una variable dada, por ejemplo vari1, mediante el comando global como se indica a continuacin:

    global vari1 o global(vari1)

    -->exec(caida.sci); -->x=caida(3,9.8,2) x = - 13.6

    -->exec(C:\WINDOWS\Profiles\usuario1\Escritorio\caida.sci);disp('exec done');

    exec done

  • 35

    Este comando se escribe en el programa principal. Como se aprecia, el comando puede escribirse en dos formas diferentes. Ya definida como global, la variable vari1 puede ser usada dentro de cualquier funcin con el valor que se le asigna sin necesidad de entrarla como un parmetro de la funcin. Por supuesto, en ese caso cualquier cambio que se le haga al valor de la variable dentro de la funcin tambin va a cambiar el valor de la variable en el programa principal.

    Como ejemplo, supongamos que se escribe la siguiente funcin, que se guarda con el nombre pru.sci

    En ella se introduce como parmetro la variable b y se usa directamente la variable f, para lo cual deber estar definida como variable global . En el cuadro siguiente, en primer lugar se carga la funcin pru. Luego se define la variable f como global, y dentro del programa principal, se asignan los valores de las variables f y b, siendo sta ltima la nica que se introduce como parmetro de la funcin. Luego se llama la funcin pru que realiza el producto de b por f. Como se observa, el valor de f es usado directamente por la funcin, sin que tenga que ser ingresada como un parmetro.

    function c=pru(b) c=b*f endfunction

  • 36

    Es posible definir una variable local de una funcin como global. En ese caso quedar disponible para ser utilizada en otra funcin, para lo cual la misma debe ser definida tambin como global en la nueva funcin. Como ejemplo, definamos una funcin pru1 cuyo nico objetivo es definir la variable z interna a la funcin. Para que ella est disponible para otro programa se la define como global. Por otro lado, en el otro programa, pru2, tambin se define z como una variable global y se realiza el producto de esta con el parmetro de entrada b; el resultado se guarda en la variable c.

    A continuacin, luego de cargarlas en Scilab, llamamos sucesivamente pru1 y pru2, observando como pru2 usa correctamente el valor de z definido por pru1.

    -->exec pru.sci;

    -->global f

    -->f=6, b=2 f =

    6.

    b =

    2.

    -->pru(b) ans =

    12.

    function z=pru1()

    global z z=3 endfunction

    function c=pru2(b) global z c=b*z endfunction

  • 37

    Un caso tpico del uso de variables globales es el de constantes que se utilizan a lo largo del clculo, que conviene definirlas globales para no repetir definiciones en cada funcin. Fuera de estos casos y para evitar errores de programacin, en general no se recomienda el uso de variables globales y en la medida de lo posible solamente utilizar variables locales en las funciones, haciendo el intercambio de informacin a travs de los parmetros formales.

    3.7. OPERADORES RELACIONALES Y LGICOS

    Acabamos de ver la forma en que se define una funcin utilizando un ejemplo muy sencillo con un solo comando. En la prctica, las funciones constarn de ms de un comando, por lo que con el fin de plantear clculos de utilidad ser necesario disponer de mayor ductilidad en dos aspectos:

    a) En poder tomar decisiones en el clculo teniendo en cuenta los resultados que se estn obteniendo. Por ejemplo, el clculo a realizar podra ser distinto si el valor de una cierta variable es positivo o negativo.

    b) En muchos casos es necesario realizar clculos repetitivos. Por ejemplo, obtener el resultado de un cierto clculo varias veces con distintos valores de los datos.

    La toma de decisiones se har por comparaciones numricas o lgicas en el programa. Se necesita disponer de operadores que puedan hacer esas operaciones. Ellos son de dos tipos: operadores relacionales y operadores lgicos.

    -->pru1() ans =

    3.

    -->b=2 b = 2.

    -->pru2(b) ans = 6.

  • 38

    a) Los operadores relacionales son aquellos capaces de comparar dos cantidades numricas y decidir cuanto vale una respecto a otra. Los que estn disponibles, incluyendo el smbolo que los definen son las siguientes:

    < menor

    mayor

    >= mayor o igual

    == igual

    ~= diferente

    Mediante estos operadores se comparan los valores de las variables. Por ejemplo, si se dispone de dos variable, e y f, y se quiere saber si e es menor que f se preguntar:

    e < f

    El resultado de la operacin ser un valor lgico, verdadero (True) o falso (False).

    Estas operaciones pueden combinarse mediante operadores lgicos.

    b) Los operadores lgicos compararn valores lgicos derivados de comparaciones relacionales. Los operadores lgicos son:

    & y

    o ~ no

    Por ejemplo, si se tienen 4 variables p, q, r y s se podra escribir

    p < q & r > s

    Si p es menor que q y r mayor que s esta comparacin lgica dar un valor lgico verdadero.

  • 39

    3.8. SENTENCIAS DE CONTROL DE FLUJO

    Como todo lenguaje de programacin, en Scilab podemos encontrar bifurcaciones y bucles que son de suma utilidad a la hora de hacer tomas de decisiones un una programacin. Las bifurcaciones sirven para realizar una u otra operacin, mientras que los bucles nos permiten realizar varias iteraciones de un mismo proceso.

    A continuacin describimos los comandos de control de flujo disponibles, as como algunos comandos especiales asociados con ellos.

    3.7.1. Comando If

    El comando if es una sentencia de bifurcacin con la que se puede inspeccionar una condicin descripta mediante un operador relacional o combinaciones lgicas de los mismos. Su forma ms sencilla es:

    if condicin then ..........................

    end

    Condicin

    Sentencia 1 Sentencia 2

    falso

    verdadero

    falso

    Condicin 2

    Sentencia 3 Sentencia 2

    verdadero

    Condicin 1

    falso

    verdadero

    Sentencia 1

  • 40

    Si la condicin tiene un resultado lgico verdadero el programa ejecuta las sentencias indicadas con un punteado. De lo contrario, los saltea y va directamente a continuacin de la expresin end. Eventualmente, la palabra then puede ser reemplazada por una coma o un fin de lnea.

    La condicin del if puede ser una condicin lgica, del tipo A==B, donde A y B son matrices del mismo tamao. Para que se considere que la condicin se cumple, es necesario que sean iguales todos los elementos de las matrices A y B. Basta que haya dos elementos diferentes para que las matrices no sean iguales, y por tanto las sentencias del if no se ejecuten.

    Otra posibilidad es una bifurcacin entre verdadero y falso haciendo uso de la sentencia else. Si la condicin es verdadera se ejecutan las sentencias dentro del bloque then, si la condicin resulta falsa se ejecutan las sentencias correspondientes al bloque else.

    if condicin then ..........................

    else

    ..

    end

    Otra alternativa en que se ejecutan bifurcaciones anidadas de acuerdo al resultado de la condicin es utilizar la sentencia elseif:

    If condicin1

    elseif condicin 2

    else

    end

    Habitualmente estas condiciones forman parte de una funcin, pero tambin se pueden usar expresadas en un solo rengln dentro del ambiente interactivo separando las sentencias con comas. Por ejemplo:

  • 41

    3.7.2. Comando for

    El comando for se utiliza si se quiere realizar una accin en forma repetitiva, teniendo en cuenta una variable que se incrementa en cada paso y que puede ser utilizada para cambiar algn aspecto del clculo que se repite:

    for var= limite1:incremento:limite2

    ...........................

    ...........................

    end

    La variable se incrementa desde el limite1 hasta el limite2 avanzando en pasos dados por incremento. Se suele decir que se est realizando un bucle. La variable var puede ser usada en los comandos dentro del bucle para variar el clculo en cada paso. Se pueden introducir varios bucles, uno dentro del otro y se suele decir que estn anidados. En este caso se requiere que cada for est terminado por su respectivo end.

    Los comandos de flujo pueden ser usados en forma conjunta. Por ejemplo, un comando if puede estar dentro del grupo de comandos de un bucle for, pero cada uno de ellos deber estar cerrado por su respectivo end.

    3.7.3 Comando while

    If x

  • 42

    En este caso tambin se ejecuta una accin repetitiva. Se fija la condicin, y mientras sta se cumpla, el bucle se repite. Al dejar de cumplirse la condicin impuesta se termina el bucle y se contina con la instruccin siguiente.

    while condicin ...................

    ...................

    end

    Se diferencia del ciclo for en que necesariamente la accin dentro del bucle debe modificar la(s) variable(s) de la condicin. Esta condicin debe alcanzar el valor lgico false, en algn momento de la ejecucin, porque de lo contrario se entrara en un bucle sin salida que repetira infinitamente las instrucciones dentro del bloque.

    3.7.4. El comando select

    Este comando es una forma abreviada de sentencias if-elseif sucesivos, donde los valores que puede tomar la variable de control deben estar claramente definidos, para buscar el cumplimiento entre varias alternativas:

    select variable case valor1 then

    case valor2 then

    .

    .

    case valor n then .

    else

    ..

    end

  • 43

    Al principio se evala la variable de control cuyo resultado debe ser un escalar o una cadena de caracteres. La condicin selecciona un resultado entre varios valores de variable, estos son valor1,valor2, etc. Si variable no toma alguno de los valores dados, entonces se contina por else ejecutando el ltimo conjunto de comandos.

    Como en casos anteriores, la palabra then puede ser reemplazada por una coma. Por otra parte, tambin como en el if, la palabra else es opcional.

    3.8. DEFINICIN DE FUNCIONES EN LNEA

    Como se vio anteriormente, un usuario define sus propias funciones en un archivo de texto, los guarda con extensin .sci y los carga en Scilab mediante el comando getf o exec cuando quiere utilizarlos.

    Existe una forma de hacer definicin de funciones en forma en lnea (on-line) en la pantalla de trabajo y en una sola instruccin a travs de la sentencia deff. Estas son muy tiles para programas que slo se utilizan una vez o para probar partes de funciones en la etapa de diseo del programa. La funcin no queda almacenada una ves que se termina la sesin de trabajo.

    La descripcin del comando deff es la siguiente:

    deff('[s1,s2,...]=nom_fun(e1,e2,....)', [inst1, inst2, ])

    s1, s2, representan los nombres de las variables de salida, e1, e2,. representan los nombres de las variables de entrada, nom_fun es el nombre de la funcin creada, inst1, inst2, es una secuencia de instrucciones que se colocan como cadena de caracteres. Estas instrucciones constituyen la definicin de la funcin y deben incluir la asignacin de la variable de salida.

    El comando deff puede ser utilizado dentro de una funcin y la nueva funcin puede ser una entrada o salida de cualquier otra funcin. A continuacin se dan algunos ejemplos de definiciones:

  • 44

    -->deff('[y] = f(t)','y = exp(-t)*sin(2*t)')

    -->y=f(10) y = 0.0000414

    -->deff('[x,y] = h(r,theta)',['x = r*cos(theta)','y = r*sin(theta)'])

    -->r=1,theta=30 r =

    1. theta = 30.

    -->[x,y]=h(r,theta) y = - 0.9880316 x =

    0.1542514

  • 45

    CAPTULO 4

    GRFICOS EN SCILAB

    4.1. INTRODUCCIN

    Scilab dispone de salidas grficas muy variadas, que permiten mostrar los resultados que se obtienen de un programa o los datos que se reciben y es necesario analizar. Con los recursos grficos se pueden:

    1) Mostrar funciones en dos y tres dimensiones, con gran variacin en la forma en que se ingresan los datos y una buena disponibilidad de recursos tcnicos tales como figuras en color, ampliaciones, rotaciones, etc .

    2) Generar representaciones especiales como ser curvas de iso-valores, distribuciones con tonos de gris, etc.

    3) Mostrar animaciones, es decir, figuras que van cambiando con el tiempo.

    Dada la gran variedad de recursos, se irn presentando en forma ordenada desde los recursos ms sencillos y de uso comn hasta llegar a las representaciones ms elaboradas.

    4.2. LA VENTANA GRFICA

  • 46

    Scilab abre una ventana distinta de la interactiva para dibujar los grficos solicitados. Pueden abrirse varias ventanas grficas a la vez y estn identificadas con un nmero (0,1,2,3....). En la ventana grfica de Scilab estn disponibles los siguientes mens:

    File

    Tools

    Edit

    Dentro del men File encontramos las opciones: New: abre una nueva ventana grfica. Load: permite leer un grfico grabado en formato SCILAB. Save: permite grabar el grfico en formato SCILAB , con la extensin . scg ( por defecto). Export: permite grabar el grfico en formatos como Postscript, GIF, BMP, etc. Copy to clipboard: copia el grfico al portapapeles para que puede pegarse en otros documentos. Print: imprime el grfico activo.

    Close: cierra la ventana grfica.

  • 47

    El men Tools contiene comandos para poner o quitar la barra de herramientas, agrandar o disminuir zonas de la imagen y rotar los grficos 3D. El men Edit contiene los comandos propios de un editor grfico para cambiar las propiedades de la figura (forma de ejes, letras color, etc)

    Cuando ejecutamos una instruccin para generar grficos, como plot que se explicar a continuacin, si ninguna ventana grfica est activada Scilab coloca el dibujo en la ventana nmero 0. Si hacemos otro grfico ste se ubicar encima del primero. Por lo tanto es necesario borrar el contenido de la ventana grfica, lo que puede hacerse de dos maneras:

    Desde el men Edit ( tem erase figure ) Desde la ventana de trabajo de Scilab con la instruccin clf() o xbasc()

    Podemos trabajar muy fcilmente con varias ventanas grficas, con la ayuda de las instrucciones:

    xset("window",num) Convierte la ventana nmero num en la ventana activa.

    Si esta ventana no existe, es creada por Scilab.

    xselect() Pone adelante la ventana activa. Si no existe alguna ventana grfica, Scilab crea una.

    xbasc(num) Borra el contenido de la ventana grfica nmero num Si num se omite, Scilab borra el contenido de la ventana activa.

    xdel(num) Elimina la ventana grfica nmero num

    Si num es omitido, Scilab elimina la ventana activa.

    4.3. REPRESENTACIN EN 2D

    La forma ms simple para trazar la grfica de una funcin de R x R es mediante la instruccin plot. Para ello creamos previamente un vector x para las abcisas y un vector y para las ordenadas. El comando plot(x,y) representa los puntos de coordenadas ( x(i),y(i)) unindolos

  • 48

    por defecto mediante lneas negras o de acuerdo a otro estilo que se haya especificado previamente. La calidad de la representacin depender del nmero de puntos ( x(i),y(i)) que se grafiquen .

    El llamado general de la funcin es:

    plot(x,y,,)

    Con plot tambin se puede graficar un conjunto de curvas, es decir hacer grficos mltiples.

    plot(x1,y1,,x2,y2,,...xN,yN,,, ,..)

    x debe ser una matriz o un vector de nmeros reales. Si se omite se asume un vector de 1:n donde n es el nmero de puntos de la variable y. y debe ser una matriz o vector real, pero tambin puede ser una funcin definida con un procedimiento. es un argumento opcional que especifica la manera en que se dibujan las lneas. Debe ser una tira de caracteres y determina el estilo, las marcas y el color de las lneas dibujadas. (ver LineSpec en 4.3.1). es un argumento opcional que define las propiedades globales de los objetos comunes a todas las curvas creadas por plot. Son tiras de caracteres colocadas como pares de sentencias {NombrePropiedad,ValorPropiedad}. (ver GlobalProperty).

    Si y es un vector, plot(y) grafica el vector y versus el vector 1:size(y) . Si y es una matriz, plot(y) grafica las columnas de y versus el vector 1:size(y,1) . Si x e y son vectores, plot(x,y) grafica el vector y versus el vector x . Los vectores x e y deben tener el mismo tamao.

    Si x es un vector, e y una matriz, plot(x,y) dibuja cada una de las columnas de y versus el vector x . En este caso la dimensin de las columnas de y debe ser igual a las de x. Si x e y son matrices, plot(x,y) dibuja cada columnas de y versus las correspondientes columnas de x . En este caso las dimensiones de x e y deben ser las mismas.

  • 49

    Si slo x o y es una matriz, el vector se dibuja versus las filas o las columnas de la matriz. La eleccin depende si el vector fila o columna, ajusta con las dimensiones de las filas o columna de la matriz. En el caso de una matriz cuadrada la prioridad la tienen las columnas. y tambin puede ser una funcin, en este caso se debe proporcionar x (como un vector o matriz) y el clculo y(x) se hace implcitamente.

    4.3.1 LineSpec

    Se utiliza para cambiar rpidamente la apariencia de las lneas de un dibujo. Debe ser una tira de caracteres, que hace referencias al del estilo de la lnea, el marcador y el color. Estas

    -->x=linspace(0,3*%pi,50); y=x.*sin(x); -->plot(x,y)

    0 1 2 3 4 5 6 7 8 9 10-5

    -3

    -1

    1

    3

    5

    7

    9

    -->x=[0:0.1:2*%pi]; -->plot(x-4,sin(x),x+2,cos(x))

  • 50

    referencias deben ser especificadas sin ambigedades, el orden no es importante. Por ejemplo, para una lnea roja de rayas largas con marcador tipo diamante, se puede escribir: 'r--d' o '--dire' o '--reddiam'... o en forma completa 'diamondred--'. A continuacin se proporciona una lista completa de los tipos que se pueden especificar. LineStyle: define el estilo de la lnea.

    Color: define el color.

    Especificador Color

    r Rojo g Verde

    b Azul

    c Cian

    m Magenta

    y Amarillo

    k Negro

    w Blanco

    Especificador Estilo de Lnea

    - Lnea Slida (default) -- Lnea de trazos

    : Lnea de puntos

    -. Lnea de trazos y puntos

  • 51

    Si no se especifica un color cuando se dibujan lneas mltiples, el color rota automticamente segn esta tabla.

    Marker type: Define el tipo de marcador. Si se especifica un marcador sin un estilo de lnea, se dibuja solo el marcador.

    Especificador Tipo de Marcador

    + Signo mas

    o Circulo

    * Asterisco

    . Punto

    x Cruz

    'square' o 's' Cuadrado

    'diamond' o 'd' Diamante

    ^ Triangulo hacia arriba

    v Triangulo hacia abajo > Triangulo hacia la derecha

    < Triangulo hacia la izquierda

    'pentagram' Estrella de cinco puntas

    'none' Sin marcador (default)

    R G B

    0. 0. 1.

    0. 0.5 0.

    1. 0. 0.

    0. 0.75 0.75

    0.75 0. 0.75

    0.75 0.75 0.

    0.25 0.25 0.25

  • 52

    Por ejemplo clf(); x=1:0.1:10;

    plot(x,sin(x),'r-.>')

    dibuja la funcin seno con una lnea roja de raya-puntos con un tringulo apuntando a la derecha centrado sobre cada punto.

    4.3.2. GlobalProperty Es posible modificar la apariencia de todas las curvas en forma global. Se debe especificar el par {Nombre_Propiedad, Valor_Propiedad}, pudindose colocar en un grfico varios pares al mismo tiempo. Nombre_Propiedad es una tira de caracteres con la propiedad a modificar. Valor_Propiedad puede ser un real, entero o tira de caracteres, dependiendo del tipo de propiedad. Por ejemplo, para especificar una lnea roja (nombre Color), con raya y puntos (nombre Line Style) con marcador diamante (nombre Marker), la secuencia debe ser: 'Colo','red','LineSt','-.','Marker','diam'. No es necesario colocar el nombre o el valor completo de la propiedad. Tampoco importa el orden, pero no debe haber lugar a ambigedades. GlobalProperty predomina sobre cualquier LineSpec previamente especificado.

    A continuacin se proporciona una lista de Nombres y sus Valores asociados:

    Clipping: caracteres con valor "on" o "off" definiendo el modo de cortado ( "on" por defecto). Color o Foreground: caracteres especificando un color o un vector RGB de 1 x 3. Este ltimo es una 3-upla que corresponde a la intensidad de rojo, vede y azul entre 0 y 1. LineStyle: una tira de caracteres que define el estilo de lnea, en forma idntica que con LineSpec. Marker o MarkStyle: Una tira de caracteres que define el tipo de marcador. Idntico que con LineSpec. MarkerEdgeColor or MarkForeground: Una tira de caracteres definiendo un color en el formato RGB. Idntico a Color pero para el borde del marcador. MarkerFaceColor or MarkBackground: Idntico a Color pero para el fondo del marcador. MarkerSize or MarkSize: un escalar que define el tamao del marcador en unidades de punto.

  • 53

    Visible: una cadena de caracteres "on" o "off" definiendo la visibilidad ( "on" por defecto). X data: un vector o matriz real redefiniendo los datos para todas las lneas o superficies dibujadas. Debe ajustase con los X data previamente especificados. Es decir, todas las matrices de datos deben ser de la misma dimensin. Y data: Idntico al anterior pero para los datos Y. Z data: cuando se usa con plot , un vector o matriz real agregando datos Z para todas las lneas dibujadas; Este debe tener las mismas dimensiones que los X e Y data previamente especificados.

    Por ejemplo clf(); x=1:10;

    plot(x,sin(x),'colo','red','linest','-.','marker','>','markeredg', 'cyan','markerFace','yellow','markersize',5)

    dibuja una lnea de color rojo, con estilo raya-puntos, marcador tringulo hacia la derecha, los bordes del tringulo de color cian, las caras de color amarillo y tamao 5 puntos.

    La representacin de una funcin se pueden hacer con el comando plot, pero para ello es necesario definir previamente la funcin que se va a representar. Por ejemplo, a continuacin se grafica el cuadrado de un nmero:

    deff('[y]=toto(x)','y=x.*x') plot(1:10,toto)

    Se obtiene el mismo resultado mediante fplot2d

    Cuando queremos superponer varias curvas en el mismo grfico, se puede usar el comando plot2d, que permite fijar estilos diferentes para cada curva. La sintaxis general es la siguiente:

    -->deff("y=f(x)","y=x.*sin(x)") -->x=linspace(0,3*%pi,100); -->fplot2d(x,f)

  • 54

    plot2d(abscisas, ordenadas, estilo, marco, leyendas, lmites, graduacin)

    Los argumentos a partir del tercero son optativos, pero si se fija uno debern fijarse los otros. El significado de estos argumentos es el siguiente:

    abscisas, ordenadas: son matrices de la misma dimensin. Si fueran vectores (para trazar una sola curva), deben ser fila o columna. Por defecto los puntos sern unidos por segmentos. A cada curva le corresponde un color ( hay 32 colores).

    estilo: es un vector lnea cuya dimensin es el nmero de curvas a trazar (nmero de columnas de las matrices abscisas y ordenadas). Las coordenadas son positivas o negativas. Si el estilo es positivo, los puntos se unen por segmentos. Si el estilo es nulo, los puntos se

    presentan como pixeles negros. Si el estilo es negativo, se presentan como marcas de formas particulares.

    marco : este parmetro es una cadena de caracteres formado por tres cifras, tales que :

    la primera indica la presencia o no de leyendas ( 0 o 1), la segunda indica la forma de clculo de las escalas,

    la tercera indica el trazado de ejes o del marco.

    Por defecto el argumento marco vale 021 ( sin leyendas, escalas calculadas automticamente y con ejes). Si superponemos dos grficos con esta opcin por defecto, las escalas no sern las mismas. La solucin consiste en trazar todos los grficos a partir del segundo sobre una misma ventana con la opcin 000 ( sin leyenda, utilizar la escala precedente, sin trazar los ejes).

    leyendas: es una cadena de caracteres que contiene las diferentes leyendas, separadas por @.

    lmites: es el rectngulo de la representacin, descrito por las dos coordenadas de la esquina inferior izquierda, seguidas de las dos coordenadas de la esquina superior derecha: [xmin,ymin,xmax,ymax].

  • 55

    graduaciones: este vector de cuatro enteros permite precisar las graduaciones y subgraduaciones en abscisa y ordenada. Por ejemplo, con [2,10,4,5], el intervalo de las abscisas de dividir en 10, siendo cada uno de los subintervalos divididos en dos. Para las ordenadas habr 5 subintervalos, cada uno dividido en 4.

    logflag: Esta opcin puede usarse para fijar las escala ( lineal o logartmica) a lo largo de los ejes. Los valores asociados son tiras de caracteres con los valores posibles: "nn" , "nl" , "ln" and "ll" . "l" para escala logartmica y n para escala normal.

    Los comandos plot y plot2d producen lneas continuas para las curvas que se grafican. Si queremos usar otro tipo de curvas debemos considera el uso de otros comandos grficos como plot2d2(grficos en escaln), plot2d3(barras verticales), y plot2d4(estilo con flechas).

    4.5. MANIPULACIN DE LOS PARMETROS DEL GRFICO Los parmetros globales de un grfico se refieren a las opciones usadas en el grfico como el tipo y tamao de letra de las etiquetas, el tipo y tamao de marcas para los puntos graficados, el mapa de colores (una matriz de definiciones de colores para las reas llenas del grfico), el nmero de ventanas que se crearn, la posicin de la ventana grfica, etc. Estas propiedades pueden cambiarse mediante la funcin xset: xset(choice-name,x1,x2,x3,x4,x5) xset( )

    -->x=linspace(0,3*%pi,30); X=x'*ones(1,10); -->y=x.*sin(x); Y=y'*[1:10]; -->colores=matrix([2;5]*ones(1,5),1,10) -->xbasc() -->plot2d(X,Y,colores) -->marcas=-[0:9] -->xbasc() -->plot2d(X,Y,marcas) -->xbasc(); -->plot2d(x,y) -->plot2d(x,y2,1,"000")

    -->x=linspace(0,3*%pi,30); -->y=x.*sin(x); -->xbasc() -->plot2d(x,y,1,"011"," ",[0,-10,10,10],[2,10,4,5])

  • 56

    Los parmetros de esta funcin son un string, choice-name (propiedad que se desea cambiar), y cinco nmeros, , x1,x2,x3,x4,x5, que dependen del valor de choice-name y la definen en detalle. Algunas de las propiedades que pueden manejarse con xset son:

    xset("auto clear","on"|"off"): Cuando est en on los grficos sucesivos no se superponen, se hace una operacin xbasc() entre cada grfico. El valor por defecto es off. xset("background",color) : Fija el color del fondo de la ventana grfica. xset("colormap",cmap): Fija el mapa de colores como una matriz de mx3, donde m es el nmero de colores. Cada color est dado por tres nmeros que corresponden a las intensidades entre 0 y 1 de rojo, verde y azul. xset("default"):Vuelve el entorno grfico a sus valores por defecto. xset("font",fontid,fontsize): Fija el tipo y tamao de letra. El fontsize corresponde a los tamaos de font tpicos usados en los textos, mientras que fontid se refiere a los siguientes estilos de font: 0 Courier

    1 Symbol 2 Times

    3 Times Italic 4 Times Bold 5 Times Bold Italic xset("foreground",color):Fija el color del marco del grfico. xset("thickness",value): Fija el grosor de las lneas en pxeles l (0 y 1 representan 1 pixel de ancho). xset("use color",flag) Si flag=1 se usarn xset("pattern",.) o xset("dashes",.) para cambiar el color por defecto para dibujar o para los patrones de relleno. Si flag=0 volvemos al modo gris y con rayas. xset("window",window-number): Fija como ventana actual la ventana nmero window-number y crea la ventana si sta no existe. El comando window-number tiene que ser un entero no negativo. El valor por defecto es SCILABGraphic0, que corresponde a window_number = 0.

  • 57

    El comando xset() o el comando xsetm(), ambos sin argumentos, pueden usarse para cambiar propiedades del grfico a travs de una ventana interactiva provista por SCILAB.

    Otro comando existente para manejar propiedades de grficos es el plotframe, cuya forma general es:

    plotframe(rect,tics [,arg_opt1,arg_opt2,arg_opt3])

    Con este comando pueden fijarse lo valores mximos y mnimos de los ejes (rect), los intervalos y subintervalos que se marcarn (tics) y con los argumentos optativos podemos agregar una grilla al grfico, ttulos y dividir la ventana para dibujar varios grficos en ella. El ejemplo siguiente ilustra su uso:

    4.6. GRFICOS COMPUESTOS

    -->x = (0.1:0.1:20); -->y = sqrt(1+x^2); -->for j = 0:5 -->xset('window',j), xset('font',j,4) -->plot(x,y,"x","y","titulo") -->end

    -->x=[-0.3:0.8:27.3]'; y=rand(x); // generador de numerous aleatorios -->rect=[min(x),min(y),max(x),max(y)]; -->tics=[4,10,2,5]; //4 x-intervalos and 2 y-intervalos -->plotframe(rect,tics,[%f,%f],['Mi grafico','x','y'],[0,0,0.5,0.5]); -->plot2d(x,y,2,'000')

  • 58

    Si una misma representacin grfica involucra varias escalas diferentes, es mejor especificar primero el rectngulo de la representacin y las escalas de los ejes mediante plotframe, para despus superponer los diferentes grficos.

    Es frecuente que un grfico contenga no slo una o ms representaciones de funciones, sino tambin cadenas de caracteres, rectngulos, elipses u otros agregados al grfico. Las coordenadas de estos agregados son relativas a la ventana corriente.

    xbasc(); xset("font",2,4); plotframe([-4,-1,4,1],[2,10,5,10],[%f,%f],["Ttulo","Eje x","Eje y"]); x=linspace(-%pi,%pi,50); y=sin(x); plot2d(x,y,1,"000"); // traza una curva x=linspace(-%pi/2,%pi/2,5); y=sin(x); xset("mark",1,4); plot2d(x,y,-3,"000"); // 5 marcas x=linspace(-%pi,%pi,20); y=sin(x)/2; xset("use color",0); xset("pattern",13); xfpoly(x,y); // superficie gris

    -4.0 -3.2 -2.4 -1.6 -0.8 0.0 0.8 1.6 2.4 3.2 4.0-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.0

    Ttulo

    Eje x

    Eje y

  • 59

    Agregados sobre el grfico

    xarc arco de elipse

    xfarc arco de elipse lleno

    xarrows flechas

    xnumb nmeros

    xpoly polgono

    xfpoly polgono lleno

    xrpoly polgono regular

    xrect rectngulo

    xfrect rectngulo lleno

    xstring cadena de caracteres (a partir de un punto)

    xstringb cadena de caracteres (dentro de un rectngulo)

    xtitle ttulo del grfico y de los ejes

    xbasc() plotframe([-1,0,2,4],[10,3,5,4],[%f,%f],["Parbola","x","f(x)"]) x=linspace(-1,2,100); y=x.*x; plot2d(x,y,2,"000") // representa la curva plot2d([1,1,-1],[0,1,1],3,"000") // traza dos segmentos help xstring xstring(1.1,0.1,"abscisa") // cadena de caracteres xstring(-0.9,1.1,"ordenada") // otra cadena help xarc xarc(-0.5,1,1,1,0,360*64) // traza un crculo

    -1 0 1 20

    1

    2

    3

    4Parbola

    x

    f(x)

    abscisa

    ordenada

  • 60

    4.7. CURVAS DE NIVEL Hay funciones predefinidas que permiten efectuar representaciones planas particulares, como histogramas, proyecciones de superficies por curvas de nivel o niveles de gris, o campos vectoriales. Los ejemplos que siguen conciernen a la funcin f(x,y)=sin(x*y).

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.600

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.200

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.200

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.200

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.200

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.200

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.200

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.200

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.200

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    -0.200

    -4 -3 -2 -1 0 1 2 3 4-4

    -3

    -2

    -1

    0

    1