












































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
manual scilab
Tipologia: Manuais, Projetos, Pesquisas
1 / 84
Esta página não é visível na pré-visualização
Não perca as partes importantes!













































































Como se comentó en la introducción que hemos visto en el punto anterior, Scilab es un programa creado para trabajar con matrices, por lo tanto, este punto es probablemente el más importante y en el que mejor tenemos que aclararnos para empezar a trabajar. Tenemos muchas opciones para trabajar con ellas, podemos intercambiar matrices, permutarlas, invertirlas; Scilab es una herramienta de cálculo muy potente en lo que a matrices se refiere.
Las matrices y vectores son variables del programa cuyos nombres podemos definir, siempre y cuando no utilicemos los caracteres que el programa tiene como caracteres prohibidos. Para definir Scilab, se determinan el número de filas y de columnas en función del número de elementos que se proporcionan (o se utilizan). Las matrices se definen por filas ; los elementos de una misma fila están separados por blancos o comas , mientras que las filas están separadas por pulsaciones intro o por caracteres punto y coma (;). Tomemos como ejemplo: -->a=[1 2 1;3 4 2;5 3 1]
Cuya salida será: a =
! 1.0E+00 2.0E+00 1.0E+00! ! 3.0E+00 4.0E+00 2.0E+00! ! 5.0E+00 3.0E+00 1.0E+00!
Comenzamos con las operaciones más básicas que podemos encontrar, la suma y la resta de matrices: -->a+b ans =
! 2. 5. 6.! ! 5. 8. 5.! ! 6. 5. 2.!
-->a-b ans =
! 0. - 1. - 4.! ! 1. 0. - 1.! ! 4. 1. 0.!
Si realizamos la multiplicación de matrices con el operando ‘ ’ tendremos que tener cuidado con que el número de columnas de la primera matriz debe coincidir con el número de filas de la segunda: -->ab ans =
! 6. 13. 12.! ! 13. 29. 29.! ! 12. 29. 35.!
También podemos utilizar una multiplicación elemento a elemento, que aunque no tiene demasiado sentido como multiplicación de matrices, si que es muy utilizable en el caso de que la matriz no sea más que un conjunto ordenado de valores. -->a.*b ans =
! 1. 6. 5.! ! 6. 16. 6.! ! 5. 6. 1.!
A continuación vamos a definir una nueva matriz a a partir de una función que genera valores aleatorios entre 0 y 1. -->rand(2,2) ans =
! 0.2113249 0.0002211! ! 0.7560439 0.3303271!
A partir de esta matriz a calculamos su inversa con el comando inv(a): -->d=inv(a) //es necesario que la matriz sea cuadrada y que posea determinante d =
! - 2. 1. - 4.9E-16! ! 7. - 4. 1.! ! - 11. 7. - 2.!
De igual manera que se define una matriz podemos definir un vector: -->x=[10 15 20] //vector fila x =
! 10. 15. 20.!
-->y=[10;15;20]; //vector columna
-->z=[10,15,20]’ //vector columna z =
! 10.! ! 15.! ! 20.!
Podemos observar, podemos definir vectores fila y vectores columna, con sólo hacer la traspuesta del vector en la definición. También podemos definir un vector columna como si hicieramos una matriz de 1xn Como podemos ver, no hemos obtenido resultado tras realizar la operación; esto es debido a que hemos puesto un “ ; ” al final de la línea de comando, esto hace que no salga por pantalla lo que hemos ejecutado, cosa que resulta muy útil cuando las matrices/vectores son de un número muy grande (100, 1000, …) y por lo tanto, difíciles de manejar visualmente. En Scilab se accede a los elementos de un vector poniendo el índice entre paréntesis (por ejemplo x(3) ó x(i) ). Los elementos de las matrices se acceden poniendo los dos índices entre paréntesis, separados por una coma (por ejemplo A(1,2) ó A(i,j) ). Las matrices se almacenan por columnas (aunque se introduzcan por filas , como se ha dicho antes), y teniendo en cuenta esto puede accederse a cualquier elemento de una matriz con un sólo subíndice. Por ejemplo, si A es una matriz (3x3) se obtiene el mismo valor escribiendo A(1,2) que escribiendo A(4).
Scilab puede operar con matrices por medio de operadores y por medio de funciones. Se han visto ya los operadores suma (+), producto (*) y traspuesta ('), así como la función invertir inv( ). Los operadores matriciales de SCILAB son los siguientes:
Vamos a ver como funcionan una serie de operadores: -->a a =
! 1. 2. 1.! ! 3. 4. 2.! ! 5. 3. 1.!
-->b b =
! 1. 3. 5.! ! 2. 4. 3.! ! 1. 2. 1.!
-->a/b ans =
! 0. 0. 1.! ! - 2. 7. - 9.! ! - 7. 24. - 36.!
-->a\b ans =
! 0. - 2. - 7.! ! 0. 7. 24.! ! 1. - 9. - 36.!
Si los operadores « / » y « * » van precedidos de un “.* ” La operación se realiza elemento a elemento: -->a./b ans =
! 1. 0.66667 0.2! ! 1.5 1. 0.66667! ! 5. 1.5 1.!
-->a.\b ans =
! 1. 1.5 5.! ! 0.66667 1. 1.5! ! 0.2 0.66667 1.!
Así pues, para Scilab el infinito se representa como % inf. Scilab tiene también una representación especial para los resultados que no están definidos como números, que se representa como Not a Number ( %nan ): -->%nan ans =
Nan
Los NaN se propagan al realizar con ellos cualquier operación aritmética, en el sentido de que, por ejemplo, cualquier número sumado a un NaN da otro NaN. Scilab tiene esto en cuenta. Algo parecido sucede con los Inf. -->%nan* ans =
Nan
-->%nan*%nan ans =
Nan
-->%nan*%inf ans =
Nan
Podemos encontrar 3 variables predefinidas por Scilab que nos dan los valores máximos y mínimos de este tipo de datos: eps devuelve la diferencia entre 1.0 y el número de coma flotante inmediatamente superior. Da una idea de la precisión o número de cifras almacenadas. En un PC, eps vale 2.2204e-016. realmin devuelve el número más pequeño con que se puede trabajar (2.2251e-308) realmax devuelve el número más grande con que se puede trabajar (1.7977e+308)
Muchas veces nos vamos a encontrar que el cálculo que necesitamos ejecutar nos lleva a tener que definir el cuerpo de los números complejos, dado que el cuerpo de los números reales no es suficiente, por ejemplo, para realizar transformadas de Fourier o Laplace. Para ello se define la variable compleja % i : -->%i %i =
i
Para crear una cadena de caracteres (string) en Scilab podemos hacerlo de estos dos modos: -->a='cadena de caracteres' a =
cadena de caracteres -->a=”cadena de caracteres” a =
cadena de caracteres
Debido a que para su uso es necesario un conocimiento previo de las funciones orientadas a matrices, postpondré otras explicaciones hasta que se hayan explicado estas, al igual que con los strings , se postpone la explicación de hipermatrices, structs y cell arrays. Ya han aparecido algunos ejemplos de variables y expresiones matriciales. Ahora se va a tratar de generalizar un poco lo visto hasta ahora. Una variable es un nombre que se da a una entidad numérica, que puede ser una matriz, un vector o un escalar. El valor de esa variable, e incluso el tipo de entidad numérica que representa, puede cambiar a lo largo de una sesión de SCILAB o a lo largo de la ejecución de un programa. La forma más normal de cambiar el valor de una variable es colocándola a la izquierda del operador de asignación (=). Una expresión de SCILAB puede tener las dos formas siguientes: primero, asignando su resultado a una variable, variable = expresión y segundo evaluando simplemente el resultado del siguiente modo, expresión en cuyo caso el resultado se asigna automáticamente a una variable interna de SCILAB llamada ans (de answer ) que almacena el último resultado obtenido. Se considera por
defecto que una expresión termina cuando se pulsa intro. Si se desea que una expresión continúe en la línea siguiente, hay que introducir tres puntos (...) antes de pulsar intro. También se pueden incluir varias expresiones en una misma línea separándolas por comas (,) o puntos y comas (;). Si una expresión termina en punto y coma (;) su resultado se calcula, pero no se escribe en pantalla. Esta posibilidad es muy interesante, tanto para evitar la escritura de resultados intermedios, como para evitar la impresión de grandes cantidades de números cuando se trabaja con matrices de gran tamaño. A semejanza de Fortran , SCILAB distingue entre mayúsculas y minúsculas en los nombres de variables; además no hace falta declarar las variables que se vayan a utilizar. Esto hace que se deba tener especial cuidado con no utilizar nombres erróneos en las variables, porque no se recibirá ningún aviso del ordenador. Cuando se quiere tener una relación de las variables que se han utilizado en una sesión de trabajo se puede utilizar el comando who. Existe otro comando llamado whos que proporciona además información sobre el tamaño, la cantidad de memoria ocupada y el carácter real o complejo de cada variable. El comando clear tiene varias formas posibles: clear sin argumentos, clear elimina todas las variables creadas previamente (excepto las variables globales). clear A, b borra las variables indicadas.