versión 20 de marzo de 2013 - lisandro...

92
Versión 20 de Marzo de 2013 El objetivo de este documento es brindar una referencia de lo que vamos a utilizar del programa Scilab durante el curso. Se efectúan cálculos desde la consola y se introducen variables numéricas. Además se muestra cómo generar archivos de comandos y funciones y se documentan algunas herramientas indispensables de programación. contacto: [email protected] 1. Instalación de Scilab y Módulos 1.1 Instalación 1.2 Instalación de Toolbox Imaging 2. Introducción al Scilab. Comandos en la Consola 2.1. Notación científica, operaciones y funciones 2.2 Variables y asignación de valores. 2.3 Arreglos de números (vectores y matrices) 2.3.1 Introducción y utilización 2.3.2 El comando length y size. Vectores fila y columna. 2.3.3 El comando zeros y ones 2.3.4 Elementos de un vector 2.3.5 Operaciones básicas con vectores 2.3.6 Operaciones con matrices 2.4 La función plot 2.4.1. Gráficos de funciones 2.4.2. Colores y formas del gráfico 2.4.3. Título, leyendas en el gráfico y nombres en los ejes 2.4.4. Como dibujar los ejes 2.4.5. Como Exportar gráficos 3. Scripts y funciones 3.1.1 ¿Qué es un script y qué es una función? 3.1.2 Abrir y guardar el editor 3.2 Cómo ejecutar archivos de comandos (scripts) 3.3 Funciones 3.4 El Entorno de Trabajo o Workspace 3.5 Anotaciones y el comando clear 3.5.1. Comentarios 3.5.2. Comando clear 4. Ciclos for y comando if 4.1. Ciclos for Ejemplo 1 Ejemplo 2 Ejemplo 3 Ejemplo 4 1

Upload: hadien

Post on 28-Sep-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Versión 20 de Marzo de 2013

El objetivo de este documento es brindar una referencia de lo que vamos a utilizar del programaScilab durante el curso. Se efectúan cálculos desde la consola y se introducen variablesnuméricas. Además se muestra cómo generar archivos de comandos y funciones y sedocumentan algunas herramientas indispensables de programación.contacto: [email protected]

1. Instalación de Scilab y Módulos1.1 Instalación1.2 Instalación de Toolbox Imaging

2. Introducción al Scilab. Comandos en la Consola2.1. Notación científica, operaciones y funciones2.2 Variables y asignación de valores.2.3 Arreglos de números (vectores y matrices)

2.3.1 Introducción y utilización2.3.2 El comando length y size. Vectores fila y columna.2.3.3 El comando zeros y ones2.3.4 Elementos de un vector2.3.5 Operaciones básicas con vectores2.3.6 Operaciones con matrices

2.4 La función plot2.4.1. Gráficos de funciones2.4.2. Colores y formas del gráfico2.4.3. Título, leyendas en el gráfico y nombres en los ejes2.4.4. Como dibujar los ejes2.4.5. Como Exportar gráficos

3. Scripts y funciones3.1.1 ¿Qué es un script y qué es una función?3.1.2 Abrir y guardar el editor

3.2 Cómo ejecutar archivos de comandos (scripts)3.3 Funciones3.4 El Entorno de Trabajo o Workspace3.5 Anotaciones y el comando clear

3.5.1. Comentarios3.5.2. Comando clear

4. Ciclos for y comando if4.1. Ciclos for

Ejemplo 1Ejemplo 2Ejemplo 3Ejemplo 4

1

Page 3: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

1. Instalación de Scilab y Módulos

1.1 Instalación

Recomendamos fuertemente, instalar la nueva versión del scilab que es la 5.3.3.Esta versión se puede bajar desde el sitio oficial de scilab que es:www.scilab.org

Cuando entramos vemos una ventana como ésta, en la que nos ofrece bajar la versión dewindows y si hacemos click en Other Systems encontraremos también linux, mac etc. Siqueremos la versión en windows simplemente hacemos click sobre el recuadro que diceDownload Scilab y debe comenzar la descarga de una archivo que tendrá un nombre parecido aéste: scilab­5.3.3.exe.

3

Page 4: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 1.1. Pagina de Scilab.

Cuando termina de descargar ese archivo, lo ejecutamos (haciendo doble click sobre elnombre) y elegimos la instalación “full”. En lugar de la instalación “full”, se puede seleccionar unsubconjunto de “paquetes” a instalar. Durante el proceso de instalación les va a preguntar elidioma.

4

Page 5: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Una vez que instalaron esta versión de scilab cuando lo ejecuten se abrirá una ventana como laque se muestra a continuación.

Figura 1.2. Ventana de Scilab.

1.2 Instalación de Toolbox Imaging

Una herramienta muy interesante que tiene esta nueva versión de scilab es el buscador einstalador de módulos adicionales. Los módulos adicionales son paquetes que no vienen con elprograma (aún cuando seleccionemos la instalación “full”) pero que uno puede agregar amedida que los necesita. Nosotros vamos a agregar un paquete que sirve para procesar

5

Page 6: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

imágenes. Nos va a permitir cargar una imagen como una matriz, mostrar una matriz como unaimagen y guardar una matriz previamente generada en scilab como una imagen.Para instalar este módulo vamos al menú Applications (pese a haberlo instalado en castellano,los nombres de los menús están en inglés) y allí seleccionamosAdministrador de Módulos­ATOMS. ver figura 3.

Figura 1.3. Abrimos el administrador de módulos atoms.

Para instalar módulos adicionales, tenemos que tener acceso a internet ya que atoms los buscaen el sitio de scilab. Una vez que ejecutamos el administrador de módulos atoms, se abre unaventana como la de la Figura 1.4 donde se listan las distintas clases de aplicacionesdisponibles. Nosotros seleccionamos Image processing (procesamiento de imágenes). Verfigura 1.4

6

Page 7: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 1.4. En la ventana del ATOMS seleccionamos Image Processing.

Una vez que seleccionamos Image Processing instalamos el Scilab Image and Videoprocessing toolbox SIVP. Ver figura 1.5

7

Page 8: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 1.5. Instalamos el toolbox SIVP. cuando terminamos tenemos que reiniciar el scilab.

8

Page 9: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

2. Introducción al Scilab. Comandos en la Consola

Scilab, es un lenguaje de programación que nos permite utilizar la computadora para procesarinformación que requiere de muchos cálculos. En este tutorial se muestran las operacionesbásicas: se efectuan operaciones con números, se definen vectores y matrices, se graficanfunciones y además se introducen los archivos de comando y las funciones.

Figura 2.1. Consola de Scilab.

En la figura 1 se muestra la ventana que se abre cuando ejecutamos el programa Scilab.Llamaremos consola a esta ventana. Además de un mensaje donde se muestra la versión delprograma (en este caso la 5.3), aparecen otros relacionados con los módulos del programa quese cargan durante el inicio. Por el momento no les prestaremos atención. Después del renglónque dice “Load demos” vemos un “prompt” o símbolo de sistema que en este caso es: ­­> . Unavez que aparece el símbolo de sistema, el programa está listo para recibir instrucciones.

9

Page 10: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

2.1. Notación científica, operaciones y funciones

Comencemos con una operación simple. Antes de hacerlo, debemos notar que, como todolenguaje de programación, el idioma base es el inglés por lo que, tanto los nombres de lasfunciones conocidas como la notación que se usa para los números, corresponden al inglés.Esto significa, por ejemplo, que en lugar de escribir 1,5 (el número que se obtiene de dividir 3por 2) se debe usar 1.5 o que la función trigonométrica seno se escribe “sin” en lugar de “sen”.Con esto en mente, supongamos que queremos sumar 5 y 2,1. Escribimos entonces en laconsola: 5+2.1 y luego presionemos enter. Como se muestra en la figura 2, el programaresponde con dos líneas la primera dice “ans =” ” (ans corresponde a la palabra en inglés“answer”, es decir, respuesta) y la segunda el resultado de la operación “ 7.1”. Más abajo vuelvea aparecer el símbolo de sistema indicando que el programa está listo para seguir recibiendoinstrucciones. Si queremos escribir números muy grandes o muy chicos deberemos recurrir ala notación “científica”. Por ejemplo, el número 2 1020 se escribe 2e20 o bien 2d20. Lo mismosucede con los números muy chicos. El número 2 10­20 se escribe 2e­20 o bien 2d­20.

Figura 2.2. Utilización de la consola para efectuar cálculos sencillos.

Además de sumar podemos hacer otras operaciones entre números.

10

Page 11: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Operaciones:

+ : mas­ : menos* : producto: : divisiónsqrt : raiz cuadrada^ : potencia

Los siguientes ejemplos ilustran los símbolos que se usan en operaciones simples entrenúmeros.

Figura 2.3. Algunos Cálculos.

El símbolo de la raíz cuadrada verifica lo que dijimos antes en relación al inglés: sqrtcorresponde a “square root” (raíz cuadrada). Las operaciones se pueden combinar.

Ejercicio. Hacer los cálculos que se listan a continuación. Practique después hacer otroscálculos que involucren operaciones sencillos entre números.

11

Page 12: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

3 10 ) 5 × ( 2 + : 5 0.5

)(√3 27 − 45

14 ) 5×2 24−3:2 × ( − 5

3 4

Además de estas operaciones sencillas, el Scilab tiene definidas muchas funcionesmatemáticas conocidas, como las trigonométricas, el logaritmo (neperiano y en base 10) o laexponencial. En el caso de las trigonométricas, el argumento está siempre en radianes.

Funciones definidas:

sin : senocos : cosenotan : tangenteacos : arcocosenoasin : arcosenoatan : arcotangenteexp : exponenciallog : logaritmo en base e.log10 : logaritmo en base 10.

Como en el caso de la raíz cuadrada, la notación es: sin(3) para calcular el seno del ángulo de 3radianes.

Ejercicio. Hacer los cálculos que se listan a continuación:10 ln(2), 10 log(10), e2 , sen(0),cos(3,14x22 ). Practique después hacer otros cálculos que involucren el uso de funciones yadefinidas en Scilab.

2.2 Variables y asignación de valores.

En muchas ocasiones necesitamos almacenar el resultado de una operación para su usoposterior. En estos casos es útil crear una variable y asignarle a esta variable el número encuestión (puede también asignarse a una variable otros tipos de datos pero nosconcentraremos en números por el momento).

Empecemos por definir una variable,

12

Page 13: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.4. Como se crea una variable.

Nótese que escribimos un ; al final de la igualdad (o sentencia). Al escribir el ; el Scilab no nosdevuelve ninguna respuesta inmediatamente. Si omitimos el ; sí lo hace (probar introduciendo ladefinición de los dos modos). De todas maneras, en ambos casos, la variable a quedaigualmente definida. Por eso al escribir a y apretamos enter nos devuelve el valor de a.

Figura 2.5. Valor guardado.

Supongamos por ejemplo que necesitamos el valor del número π porque efectuaremoscálculos trigonométricos. Si escribimos pi y apretamos enter el programa nos devuelve unmensaje de error porque la variable pi no ha sido definida con anterioridad. Tenemos entoncesque indicarle a la computadora que pi para nosotros vale 3.1415927...... Existen muchas formasde hacerlo, una de ellas es aprovechar el hecho de que el resultado del arcotangente de 1 esπ/4 y entonces podemos escribir

pi = 4*atan(1);

Si lo hacemos y luego apretamos enter, habremos hecho dos cosas, primero creamos unavariable que se llama pi y segundo le hemos asignado a esa variable el valor del número π.

13

Page 14: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.6. La variable pi no existe en el programa, necesitamos definirla y asignarle su valor.Para ello utilizamos la función arco tangente (atan) y asignamos el valor 4*atan(1) a la variablepi. Ahora la variable pi contiene el valor del número .π

Por supuesto que la elección del nombre pi para almacenar el valor del número fueπabsolutamente arbitraria, y la asignación “x=4*atan(1);” es tan válida como la anterior. La únicadiferencia es que ahora el valor del número se almacenó en una variable que se llama x.π

De todas formas algunos números como ya se encuentran definidos en Scilab. Por ejemploπel número está guardado en una variable que se llama “%pi”, el número de Neper “e” es “%e”.πEn la figura 4 se muestra otro ejemplo de asignación. Para evitar escribir el símbolo deporcentaje cada vez que nos refiramos al número de Neper, podemos asignar su valor a unanueva variable, por ejemplo, e. Para ello utilizamos la instrucción “e=%e;”.

14

Page 15: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.7. Algunos números ya están definidos.

Cuando se asigna un valor a una variable a la que ya se le había asignado otro valoranteriormente, el programa olvida el valor anterior y se queda con el último asignado. Siqueremos saber el valor que tiene una variable escribimos su nombre y apretamos enter.

Ejercicio. Efectúe cálculos utilizando el número de Neper y y asegúrese de que son losπnúmeros que usted conoce.

Una vez definidas las variables, se pueden hacer operaciones con ellas, por ejemplo,

15

Page 16: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.8. Algunas operaciones entre variables.

2.3 Arreglos de números (vectores y matrices)

2.3.1 Introducción y utilización

Hasta ahora hemos utilizado un solo tipo de datos: números. Los arreglos de números, a losque usualmente llamamos vectores, contienen muchos números agrupados bajo una mismavariable.Por ejemplo "x=[7 5 3 ­2 23]" guarda en una variable "x" cinco números el "7", el "5", el "3", el "­2"

16

Page 17: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

y el "23". Escribamos “x=[7 5 3 ­2 23];” y luego presionemos enter. Hemos creado una variableque se llama “x” que es un arreglo de cinco números (o un vector con cinco componentes). Siescribimos "x" el Scilab nos devuelve "7 5 3 ­2 23". Si después hacemos x=[0 1 2 3 4 5 6 7 8 9];y apretamos enter, ahora x corresponde a un arreglo o vector de 10 componentes (el programa“se olvida” del valor que le habíamos dado antes a x al volver a asignarle un valor). Para accedera los elementos de un arreglo necesitamos el nombre del arreglo (en este caso x) y la posicióndel elemento. Ejemplo escribamos a continuación “x(1)” y presionemos enter. La respuesta es 0que es el primer elemento del vector “x”. “x(5)” enter, devuelve 4 porque es el quinto elementodel vector. La sentencia “x(1)=sqrt(2)” asigna el valor de raíz de 2 al primer elemento del vector.

Figura 2.9. Operaciones básicas con vectores.

Existen diversas maneras de generar un vector. Una es introduciendo a mano sus elementoscomo hicimos antes. Para ello sólo tenemos que escribir ”nombre=[elem1 elem2 .....]” . Es decirnombre del vector, el signo = y entre corchetes (y separados por espacios) los elementos delvector. Cuando el vector que queremos definir sigue cierta regla hay formas más sencillas dedefinirlo y no necesitamos escribir todos los elementos. Si necesitamos un vector cuyo primerelemento sea el 0, cuyo último elemento sea el 1 y que tenga elementos equiespaciadosseparados en por ejemplo 0.1, hacemos: “x=0:0.1:1;" . Esta sentencia guarda en "x" el vector [00.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]. La lógica es "inicio:paso:fin". Si no ponemos el paso, el

17

Page 18: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Scilab usa un paso de 1. Por ejemplo la sentencia “x=­10:10” genera un vector de nombre x quecontiene los números entre el ­10 y el 10 incrementándose de a uno.

Figura 2.10. Definiciones de arreglos de números.

Ejercicio. Defina un vector que comience en ­3 y vaya hasta el 2003 con un paso de 5.¿Cuántos elementos tiene el vector?

Así como se definen vectores, también pueden definirse matrices. Por ejemplo, la sentenciaa=[1 2 3 ; 4 5 6] define una matriz cuya primera fila es 1 2 3 y la segunda es 4 5 6.

Podemos calcular la traspuesta de una matriz o de un vector con el comando ’.Por ejemplo definamos a y calculemos la traspuesta.

18

Page 19: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.11. La matriz traspuesta de una matriz de 3x2 es una matriz de 2x3 .

2.3.2 El comando length y size. Vectores fila y columna.

De ahora en más usaremos el símbolo para indicar que debe presionar la tecla enter.

El comando length calcula el tamaño de un vector. Por ejemplo, si x=[1 2 4 4] entonceslength(x) 4

El comando size calcula el tamaño de una matriz. Por ejemplo, si A=[1 2 4;3 3 2; 2 2 1;5 6 7]entonces,size(A) 4. 3.

O sea, 4 filas y 3 columnas.

Si se calcula size de un vector devolverá por ejemplosize(x) 1.4.

En este caso por ser un vector fila (una fila y cuatro columnas).Si lo trasponemos devolverá,size(x’) 4.1. (4 filas y 1 columna).

19

Page 20: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

2.3.3 El comando zeros y ones

El comando zeros crea una matriz o vector de ceros. Por ejemplo,zeros(2,3) 0. 0. 0. 0. 0. 0. Que es una matriz de 2x3 llena de ceros.

El comando ones crea una matriz o vector de unos. Por ejemplo,ones(5,4) 1. 1. 1. 1.1. 1. 1. 1.1. 1. 1. 1.1. 1. 1. 1.1. 1. 1. 1. Que es una matriz de 5x4 llena de unos.

Observar que si queremos una matriz completa de otro número sólo tenemos que multiplicaresta matriz por ese número.

2.3.4 Elementos de un vector

A veces uno quiere ver sólo una cantidad de elementos de un vector o una matriz, para eso seusa el comando “:”.

Por ejemplo, si v=[1 4 5 8 9] y hacemosv(2:4) 4. 5. 8.

Nos estará devolviendo desde la coordenadas 2 hasta la 3 del vector.

A veces uno quiere ver sólo una fila o una columna de una matriz ya existente.

Por ejemplo si a=[ 1 2;3 4]1. 2.3. 4.

y si hacemosa(1,:) 1. 2.

20

Page 21: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

nos muestra sólo la primera fila de a.

Si hacemos,a(:,2) 2. 4.Nos muestra la segunda columna de a.

Por último si a=[1 2 4; 2 4 5; 3 4 6]

y hacemosa(:,2:3) 2. 4. 4. 5. 4. 6.

Nos muestra la segunda y tercera columna de a.

Si queremos redefinir los valores de algunas filas (no de todas) o, equivalentemente, de algunascolumnas, usamos el símbolo : intercalado entre el número de las filas o de las columnas quequeremos redefinir.

Por ejemplo,a(:,3)=[1 2]'1. 2. 1.3. 4. 2.le agrega una columna de elementos 1 y 2 a la matriz (observen que en este caso la dimensióndel vector que agregamos tiene que ser igual a la de la cantidad de filas). Por otro lado, si ahorahacemos,

a(:,1)=00. 2. 1.0. 4. 2.

es decir, hacemos todos los elementos de la columna 1 iguales a 0. Y si después hacemos

a(2,:)=30. 2. 1.3. 3. 3.

es decir, hacemos todos los elementos de la fila 2 iguales a 3.

21

Page 22: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Ejercicio. Supongamos que la matriz a está dada por

0. 2. 1.3. 3. 3.2. 3. 4.

Piense cómo podría obtenerla a partir de alguna de las matrices definidas anteriormente :y luego hagamos a(1:2,:)=6; . Antes de mirar el resultado, piense qué espera obtener. Lo quese obtiene es una matriz donde todos los elementos de las filas 1 y 2 son iguales a 6.

Ejercicio. Defina un matriz de 3x4 completa de unos. Agregue una columna de ceros y despuésuna fila completa de 2. Calcule la dimensión de la nueva matriz.

2.3.5 Operaciones básicas con vectores

Supongamos que queremos multiplicar cada componente del vector [1 3 4 2 6] con lacomponente correspondiente del vector [8 54 3 2 8]. Esto se hace así:

[1 3 4 2 6].*[8 54 3 2 8]

De este modo se obtiene como resultado un nuevo vector de cinco componentes cada una delas cuales es el producto, componente a componente, de los dos vectores multiplicados. De lamisma manera se procede para cualquier otra operación, teniendo cuidado de que los vectorestengan la misma cantidad de componentes. Por ejemplo, para dividir componente acomponente se usa el símbolo "./". Si queremos elevar al cuadrado todas las componentes deun vector usamos ".^2". Poder operar de esta forma es útil cuando los vectores tienen muchascomponentes. Consideremos, por ejemplo, el vector definido en el último ejercicio ysupongamos que queremos calcular el cuadrado de todas sus componentes. ¿Cómo lo haría?La sentencia y = x.^2 da como resultado un vector con tantas componentes como x, cada unade las cuales es igual al cuadrado de las componentes de x.

Para fijar ideas definamos el vector x como x=[1 2 3 4].Escribamos en la consola la siguiente secuencia:x=[1 2 3 4]; y=x.^2; [1 4 9 16].

22

Page 23: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figure 2.12. Operaciones con vectores

Figura 2.13. Operaciones con arreglos de números. Anteponiendo un “.” al símbolo de laoperación, Sclilab interpreta que la operación se debe efectuar elemento a elemento.

23

Page 24: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

2.3.6 Operaciones con matrices

De la misma forma que se puede operar componente a componente con vectores, conmatrices se puede hacer lo mismo.

Por ejemplo, si hacemos

­­>A=[1 2;3 4];

­­>B=[2 2; 1 8];

­­>A./Bans =

0.5 1. 3. 0.5

Que es el resultado de dividir cada componente de A por cada componente de B.Observar que si hacemos,

­­>A.*B ans =

2. 4. 3. 32.

Que es el resultado de multiplicar cada componente de A por cada componente de B.

Ojo! Si hacemos,

­­>A*B ans =

4. 18. 10. 38.

¿Por qué no da igual que si ponemos el punto? El motivo es que al no poner el punto estamoshaciendo el producto matricial, que no coincide con el producto punto a punto.

24

Page 25: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Lo mismo podemos hacer con otras operaciones.

Ejercicio. Definir dos matrices A y B de de 2x3. Calcular A.^2+sin(B). Hacer A^2 y A.^2, ¿Quésucede?

2.4 La función plot

2.4.1. Gráficos de funciones

Los vectores constituyen los elementos claves para hacer gráficos de una variable en funciónde otra. Por lo general tenemos un conjunto de datos "x" y otro conjunto de datos "y"relacionados entre sí. Por ejemplo definamos "x=­10:0.1:10" e "y=x.^3;". Si queremos graficar “y”como función de “x” escribimos en la consola: plot(x,y); .

Scilab abre entonces una nueva ventana donde hace el gráfico correspondiente y que semuestra en la Figura.

Figura 2.14. Gráico de y=x^3.

25

Page 26: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Por ejemplo. Si escribimos en la consola,

Figura 2.15. Comandos para graficar una función.

da lugar al gráfico de la Figura .

Figura 2.16.. Gráfico de la función x sen(16x).

26

Page 27: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Se puede superponer un nuevo gráfico sobre esta última figura, por ejemplo, si escribimosplot(x,x) ; se dibuja la recta de pendiente 1 que pasa por el origen de coordenadas y siescribimos plot(x,­x) ; la de pendiente ­1. Los comandos y el gráfico se observan en lasfiguras que siguen.

Figura 2.17. Superposición de gráficos.

27

Page 28: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.18. Gráfico de las tres funciones juntas.

Si se quiere hacer un gráfico en una nueva ventana (es decir, sin superponer al gráfico anterior)escribimosfigure; en la consola y eso abre una nueva ventana. Cada nueva ventana de gráficos que se abre estáidentificada con un número (ver que en el borde de la ventana dice Graphic window number y elnúmero que corresponda). El comando plot hace el gráfico en la última ventana abierta a menosque uno le indique algún otro número. Por ejemplo, si uno escribe:figure; se abre una ventana (que se llamará Graphic window number 0 o ventana de gráfico número 0si no había ninguna otra previamente abierta). Si después escribimosplot(x,y); el gráfico de “y” como función de “x” aparecerá en la ventana identificada con el número 0.

28

Page 29: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.19. Numeración de los gráficos. Ventana número 0.

Si luego hacemos nuevamentefigure; se abre una nueva ventana (Graphic window number 1 o ventana de gráfico número 1) y alhacerplot(x,x^2) ; el gráfico de x^2 como función de x aparecerá en la ventana identificada con el número 1. Siinmediatamente después escribimosplot(x,10­x^2) ; el gráfico de 10­x^2 como función de x aparecerá superpuesto al de x^2 como función de x en laventana identificada con el número 1.

29

Page 30: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.20.Numeración de los gráficos. Ventana número 1.

Y si escribimosfigure(0) ; plot(x,10­x^2) ; ahora el gráfico de 10­x^2 como función de x aparecerá superpuesto al de y como función de xen la ventana identificada con el número 0.

30

Page 31: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.21. Al poner figure(0) vuelve la numeración a cerco.

Las ventanas de figuras se pueden cerrar como cualquier ventana de windows. Los contenidosde una ventana se pueden borrar (“limpiar”) sin borrar la ventana con el comando clf. Enparticular, clf(); (clear figure) limpia los contenidos de la última ventana abierta y clf(1); los de lanúmero 1.

2.4.2. Colores y formas del gráfico

Observen que en todos los casos en los gráficos aparecen líneas suaves. Esto es así porque, amenos que uno indique alguna opción distinta, el Scilab interpola entre los puntos del plano conabscisa igual a los valores de las componentes del vector x y ordenada igual a las del vector y.La interpolación se vuelve evidente para x con pocas componentes. Por ejemplo, tomenx=[1 2 4 6]y grafiquen x^2 como función de x.

31

Page 32: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.22. Gráfico de y=x^2 usando pocos puntos.

A veces uno puede querer graficar sólo los puntos, sin interpolar por ninguna curva, puedequerer cambiar de color, superponer curvas con colores elegidos previamente por uno. Todasesas son opciones al comando plot. No vamos a detallarlas todas (pueden consultar losejemplos de la ayuda de Scilab).

Algunos de los colores básicos, formas y como hacer la línea. Lo ponemos en inglés para quese entienda la lógica de los símbolos.

Colores Puntos Linea

b blue . punto ­ solida g green o circulo : punteada r red x x ­. punteada y discontinua c cyan + mas ­­ linea discontinua m magenta * star y yellow s square k black d diamond w white

32

Page 33: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Pongamos un ejemplo si queremos gráficar la función sen(x).Primero definimos el vector cuyos puntos corresponden al eje de abscisas:

t=0:%pi/20:2*%pi;Esta última sentencia genera el vector t que toma valores entre 0 y 2π incrementándose cadaπ/20. Después graficamos con distintas opciones (usando el color cyan).

Ejemplo 1:clf();plot(t,sin(t),'c+')

Figura 2.23.. Aca estamos poniendo el símbolo + en cada punto.

Prueben con los siguientes ejemplos,

Ejemplo 2:clf();plot(t,sin(t),'co')

33

Page 34: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Ejemplo 3:clf();plot(t,sin(t),'co ­. ')

2.4.3. Título, leyendas en el gráfico y nombres en los ejes

Muchas veces es útil cuando hacemos muchos gráficos en una figura ponerle el título y hacerleyendas dentro del gráfico de manera tal que me permita saber que representa cada gráfico.Eso se hace con los comandos title y legend.

Aca ponemos un ejemplo donde graficamos la función

Figura 2.24.. Como hacer leyendas y títulos en gráficos.

Las primeras dos cosas que aparecen en el comando legend son el nombre que quiero queaparezca sobre la leyenda. El número 3 indica que la leyenda aparecerá en el extremo inferiorizquierdo del gráfico (ver Figura 2.25). Para ponerle nombre a los ejes utilizamos los comandos“xlabel” e “ylabel”. Estos se aplican al gráfico activo. Supongamos que en este caso en el eje delas abscisas representamos el tiempo en segundos y que en el eje de ordenadasrepresentamos la amplitud entonces para ponerle nombre a los ejes escribimos:xlabel(‘t [s]’);ylabel(‘Amp [V]’); En la figura 2.25 se muestra como queda el gráfico.

34

Page 35: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.25. Gráfico de las dos funciones con sus leyendas.

2.4.4. Como dibujar los ejesEn muchos casos vamos a querer representar los ejes cartesianos o que grafique la función enun intervalo dado. Para eso debemos usar el comando get("current_axes"). Lo que hace estecomando es fijar ciertos parámetros del gráfico. En el siguiente ejemplo lo que hacemos esgraficar la función 2x^2+1 pero para x en el intervalo [­2 2] y para y en el intervalo [­1 8], ademásgraficamos un punto que está sobre la curva y agregamos los ejes en el origen.

35

Page 36: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.26. Como dibujar los ejes en un gráfico.

Los comandos que usamos son:

a.data_bounds=[­2,­1;2,8];

Son los límites donde va a estar dibujada la función. Aca el x minimo es ­2, el y mínimo es ­1, elx máximo es 2 y el y máximo es 8.

a.x_location = "origin";

a.y_location = "origin";

De esta manera estamos ubicando los ejes en el origen. Hay otras opciones para poner los ejesen otros lugares. Para el eje x las opciones son: bottom, top, middle y origin. Para el eje y:left, right, middle y origin.Pruebe las distintas opciones para ver donde quedan ubicados los ejes.

También en algunos casos interesa hacer una grilla en el gráfico.

36

Page 37: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

2.4.5. Como Exportar gráficos

Muchas veces vamos a querer guardar las figuras con un formato que nos permita pegarlasluego en un archivo de texto. Para eso, una vez que tengamos la ventana de gráfico abierta,vamos a file, dentro de file, vamos a exportar (ver figura 2.26)

Figura 2.27. Como exportar un gráfico.

y allí elegimos con que extensión guardamos la imagen.

37

Page 38: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 2.28. Distintos formatos para guardar un gráfico.

38

Page 39: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

3. Scripts y funciones

3.1.1 ¿Qué es un script y qué es una función?SCRIPT o archivo de comando

Hasta ahora escribimos instrucciones en lo que se llama la consola de scilab. Si bien esto essuficiente para hacer cálculos sencillos y rápidos o para probar cosas, no es muy prácticocuando se quieren hacer cálculos que están relacionados y cuando en esos cálculos aparecenparámetros que se quieren cambiar. En SCILAB y varios programas similares es posibleescribir todas las instrucciones en un archivo de texto y luego pedirle a SCILAB que las ejecutedesde el archivo de texto. A este archivo de texto se lo llama script.

3.1.2 Abrir y guardar el editor

Para escribir el archivo con los comandos utilizaremos el editor que viene con Scilab para elloescribimos en la consola: “editor()”.

Figure 3.1. Cargamos el editor de texto para escribir las instrucciones y crear lo que se conocecomo script.

También se puede abrir este editor abriendo el desplegable “Applications” y eligiendo la opciónScinotes.

39

Page 40: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figure 3.2. Otra forma de abrir el editor.

Se abrira de esta manera el editor.

Figura 3.3. Ventana del editor SciNotes que usamos para generar archivos de texto, enparticular, los de comandos.

Lo primero que hacemos es guardar el archivo, para lo que vamos al menú “Archivo” y allíseleccionamos la opción “guardar”

40

Page 41: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 3.4. Cómo guardamos el archivo.

Le ponemos un nombre al archivo (por ejemplo, miscript.sce). El nombre tiene que terminar en.sce para que Scilab lo pueda identificar automáticamente como un archivo de comandos.En el archivo podemos introducir comandos e instrucciones como lo hicimos en la consola. Ladiferencia es que las instrucciones no se ejecutan cuando apretamos enter. Por lo tantopodemos escribir varias líneas de instrucciones en el editor que serán luego ejecutadas enforma secuencial cuando se lo indiquemos a Scilab.

3.2 Cómo ejecutar archivos de comandos (scripts)

En el ejemplo que se muestra en la figura 3.5, se definen los vectores “x” e “y” y luego se grafica“y” como función de “x”. La sintaxis es la misma que utilizamos en la consola:

41

Page 42: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 3.5. Ejemplo de un script.

Este script sencillo consta de 3 instrucciones que hemos escrito en 3 líneas diferentes.En la primera línea definimos el vector x con valores comprendidos entre 0.001 y 10 con unpaso de 0.1; en la segunda instrucción definimos el vector y y en la tercer línea graficamos.

Figura 3.6. En el menú Ejecutar del editor tenemos las opciones para ejecutar el script.

Para que Scilab ejecute las instrucciones contenidas en el archivo hay varias formas:Desde el editor vamos al menú Ejecutar, como se muestra en la figura 3.6, se despliega unmenú con 4 opciones:a) … file with no echob) … file with echoc) … until the caret, with echo

42

Page 43: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

d) Guardar y ejecutara) file with no echoComo se muestra en la figura 3.7, si seleccionamos la opción “... file with no echo” vemos quesi el archivo no está guardado scilab nos reclama que antes de ejecutar guardemos loscambios, una vez guardados se ejecuta el script sin mostrar nada en la consola. En este casocomo resultado de la ejecución del script se abre una ventana con el dibujo de la función. Eneste sentido with no echo (sin eco) quiere decir que no muestra nada en la consola. Esta es engeneral la forma en la que vamos a ejecutar un script cuando estamos seguros de que funcionabien.

Figura 3.7, ejecución sin eco (...file with no echo), se ejecuta el script sin mostrar nada en laconsola.Al ejecutar sin eco, lo único que aparece en la consola es el comando exec que es lo que seejecuta cuando en el editor seleccionamos la opción a del menú ejecutar.

b) file with ecoSi seleccionamos la opción “... file with echo” vemos que en la consola aparecen una a una lasinstrucciones que componen el script. Esto quiere decir con eco: que muestra en la consola lasinstrucciones a medida que va ejecutando el script. Es como si hubiésemos escrito lasinstrucciones en el script. Esto es útil cuando estamos probando cosas. En la figura 3.8 semuestra el resultado de ejecutar el script con la opción file with echo, a la izquierda vemos laconsola con las instrucciones que tenemos en el script.

43

Page 44: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 3.8. ...file with echo. Cuando ejecutamos con eco, cada línea del script aparece en laconsola. Esto es útil para detectar errores o como se dice en la jerga para hacer debugging quecastellanizado sería algo así como “debaguear”

c) until the caret, with echoEsta opción ejecuta todas las líneas del archivo hasta la posición del cursor. En el ejemplo de lafigura 3.9, se ejecutan la primera y segunda líneas y se muestra en la consola el resultado (escon eco)

Figura 3.9, ejecuta hasta la posición del cursor, en este caso hasta la segunda línea.

d) Guardar y ejecutar guarda el archivo y lo ejecuta sin eco, es similar a la opción a.

44

Page 45: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

También se puede apretar un botón tipo “play” que significa Execute (sin eco). Cuandohacemos eso se ejecutan todas las instrucciones.

Figura 3.10. Botón de ejecutar.

El archivo de texto que contiene las instrucciones, el script, lo podemos generar en cualquiereditor de texto, no necesariamente lo tenemos que hacer con scilab. Si trabajamos en windowspodemos utilizar el editor de notas que viene con windows y en linux podemos utilizar cualquiereditor como el vi, el emacs o el text edit etc. Para ejecutar un script desde la consola del scilabtenemos que utilizar el comando exec . Este comando de scilab tiene esta sintaxis:(para los que leen inglés pueden consultar el help escribiendo help exec en la consola descilab).exec(ruta [,modo])Vemos que exec tiene 2 argumentos: ruta que es obligatorio y modo que es opcional. Elargumento ruta contiene la ubicación en la computadora del archivo de texto .sce que queremosejecutar y modo está relacionado con si es con eco, sin eco, linea por linea etc. Por ejemplo siqueremos ejecutar el archivo miscript.sce que tenemos guardado en la carpeta c:\conectarigualdad\scilab\miscript.sce tenemos que escribir en la consola de scilab lo siguiente:­­>exec(‘c:\conectar igualdad\scilab\miscript.sce’)En scilab existe lo que se conoce como directorio de trabajo o work directory, cuandoejecutamos el comando exec, si no especificamos una ruta completa y solo damos el nombredel archivo, scilab lo busca en el directorio de trabajo. Esto es útil porque si guardamos todosnuestros archivos en el mismo directorio y le indicamos a scilab que ese es el directorio detrabajo, cuando queremos ejecutar un archivo sólo tenemos que escribir el nombre:

45

Page 46: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

­­>exec(‘miscript.sce’)Para ver cuál es el directorio de trabajo ejecutamos el comando pwd (de sus siglas en inglésprint working directory) en la figura 3.13 se muestra la salida del comando:

Figura 3.11. La instrucción pwd imprime el directorio de trabajo actual.

Para cambiar el directorio de trabajo vamos al menú File y seleccionamos la opción Cambiardirectorio actual (ver figura 3.12)

Figura 3.12. Podemos seleccionar cualquier directorio como directorio de trabajo

Podemos también alternativamente, utilizar el comando cd (change directory) para ir navegandopor los directorios hasta el directorio deseado. Esto lo hacemos directamente desde la consola,también podemos utilizar el comando dir para ver el contenido de un directorio. En la figura 3.13se muestra un ejemplo donde desde la consola, preguntamos cuál es el directorio actual yvamos navegando hasta llegar al directorio de trabajo c:\conectar igualdad\scilab\scripts que esdonde tenemos guardado el script miscript.sce. Una vez establecido como directorio de trabajo,ejecutamos el script con el comando exec:

46

Page 47: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 3.13 Cómo cambiar el directorio de trabajo desde la consola y ejecutar scripts

47

Page 48: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Finalmente si queremos editar un nuevo archivo, utilizamos la opción de nuevo archivo en elborde de la ventana del editor. Se abre entonces una nueva pestaña que corresponderá alnuevo archivo que queramos editar. Ver figura 3.14.

Figura 3.14. Apertura de un nuevo archivo.

Ejercicio. Repita algunos de los cálculos y figuras que hizo en los ejercicios anteriores peroahora escribiendo las instrucciones en un archivo y ejecutandolo parcial o totalmente.

3.3 Funciones

De la misma forma en que guardamos en un archivo un conjunto de instrucciones para ejecutarsecuencialmente en algún momento posterior, es posible también definir funciones. La principaldiferencia entre los scripts y las funciones es que estas últimas pueden ser utilizadas dentro deun script o en la consola. El scilab tiene varias funciones incorporadas como las funcionesmatemáticas que venimos utilizando: sin(), cos() etc. Vemos también que las funciones admitenargumentos y pueden devolvernos un resultado.Para generar una función tenemos que escribir un tipo especial de archivo (código) y guardarlocon terminación sci. Este archivo tiene que empezar con la palabra function y debe terminar conendfunctionPor ejemplo, abramos un nuevo archivo y escribamos lo siguiente:

48

Page 49: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 3.15. Como generar una función.

Guardamos después el archivo con algún nombre, por ejemplo mifuncion.sci (la extensión scitambién es propia de los archivos que el Scilab reconoce).

Una vez escrito el archivo, lo ejecutamos por ejemplo desde el menú ejecutar como se muestraen la figura 3.11.

Figura 3.16. Desde el editor vamos a ejecutar y elegimos una opción para cargar la función.También podemos hacerlo desde la consola.

Al ejecutar la función, lo que hacemos es que el Scilab reconozca, de ahora en más (hasta que

49

Page 50: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

se nos ocurra redefinir el significado de “f”) a f(x) como la función definida en el archivo queguardamos.Por lo tanto, si en la consola hacemos:

Figura 3.17. Como evaluar una función.

nos devuelve un valor, que es el resultado de hacer sen(1)/1.

También podemos graficar la función. Si la función puede aplicarse a un vector, hacer el gráficoes inmediato. En el ejemplo no lo es, ya que Scilab no entiende qué significa calcular el seno deun vector y dividirlo por el mismo vector.Sí sabe hacerlo si escribimos las instrucciones en la definición de la función aclarando que encaso de tratarse de un vector el cálculo debe ser hecho componente a componente. Piensecómo debería modificar la definición de la función sin(x)/x para poder aplicarla a un vector y queel resultado sea un vector de componentes iguales a hacer este cociente para cada una de lascomponentes por separado.

Acá damos la respuesta:

50

Page 51: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 3.18. Como generar una función que permite evaluar en vectores.

Ahora es posible definir un vector y calcular el valor de f2 sobre el vector y finalmente graficar lafunción.

Ejercicio. Sobre el vector v=[0.1:0.1:1], evalue f2(v). Grafique f2(v) en función de v.

Usar la función f2 en lugar de la función f no es la única opción que tenemos para graficarla función sen(x)/x como función de x para valores de x dentro de un cierto rango. Tambiénpodemos definir un vector x, aplicarle “a mano” la función f a cada una de sus componentes yguardar cada resultado en la componente de un vector y.En la figura 3.19 se muestra un ejemplo,

Figura 3.19. Evaluación coordenada a coordenada.

Una vez definido el vector x, le asignamos manualmente al vector y los valorescorrespondientes de la función. De alguna forma esto es equivalente a hacer una tabla con lápizy papel. Si x tiene pocas componentes ésta pueda ser una opción, pero si tiene muchísimas no.Lo que sí podemos notar es que siempre escribimos casi la misma expresión, sólo cambiamosel número de la componente. Es decir, estamos haciendo algo recurrente. Es posible pedirle aScilab que haga un cálculo recurrente sin escribir tanto. Esto se hace usando “loops” (o“bucles”). En el capítulo que sigue explicaremos cómo construir un loop.

3.4 El Entorno de Trabajo o WorkspaceEl entorno de trabajo o como se suele llamar en inglés workspace, es el conjunto de variables y

51

Page 52: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

módulos que están cargado en una sesión. Cuando iniciamos scilab, se cargan las partes delprograma y hay una serie de variables que cargan automáticamente. Como se muestra en lafigura 3.20, el comando who imprime en pantalla todas la variables que están definidas en elentorno de trabajo:

Figura 3.20. El comando who imprime en pantalla todas las variables que se encuentrandefinida en el entorno de trabajo.

Vemos que varias variables que se cargan automáticamente cuando iniciamos scilab.Podemos indagar el valor de cada variable simplemente escribiendo su nombre en la consola ypresionando enter. El comando who es útil cuando queremos saber si una variable está definidao no. A medida que vamos definiendo variables estas se incorporan en el entorno de trabajo ypodemos acceder a ellas desde la consola o los script. En la figura 3.21, se muestra comoluego de definir las variables a y la v, estas aparecen listadas en el workspace cuandoejecutamos el comando who.

52

Page 53: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 3.21. A medida que definimos variables estas se agregan al entorno de trabajo.

Las funciones y los scripts se relacionan con el entorno de trabajo de forma diferentes. Desdelos scripts podemos acceder y modificar variables del entorno de trabajo, pero desde lasfunciones sólo podemos acceder a las variables del entorno y no podemos modificarlas.En la figura 3.22 se muestra un ejemplo. Primero definimos en la consola la variable a. Ademásabrimos un editor para escribir un script en el que escribimos a=2; luego de ejecutar el scriptvemos en la consola que desde el script hemos modificado el valor de la variable a. Si con elcomando clear eliminamos la variable a, vemos que ejecutando el script podemos crear unavariable a la que podemos después acceder desde la consola. Si modificamos el script y leagregamos una línea con el comando clear a, luego de ejecutar el script habremos eliminado lavariable a.

53

Page 54: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 3.22a. Desde los script podemos crear, acceder, modificar y eliminar variables delentorno de trabajo.

Figura 3.22b. Agregando la línea clear a al script, eliminamos del entorno de trabajo la variable aCon las funciones el comportamiento es diferente, si creamos una variable dentro de unafunción esta no estará accesible desde la consola. Por otro lado desde la funciones podemosacceder a variables definidas en el entorno de trabajo siempre que no hagamos una redefinición

54

Page 55: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

de la variable en el contexto de la función. En el ejemplo de la figura 3.23 dentro del entorno de lafunción definimos la variable a, cargamos la función y la ejecutamos en la consola vemos que lavariable a, no se ha incorporado al entorno de trabajo. La variable a es privada del entorno de lafunción a, se crea durante la ejecución de la función y se destruye cuando la ejecución termina.

Figura 3.23. Las variables definidas en el entorno de las funciones no se incorporan al entornode trabajo.

3.5 Anotaciones y el comando clear

3.5.1. Comentarios

Muchas veces cuando hacemos un programa es cómodo y conveniente hacer comentarios.Estos textos son “comentarios”, cosas que uno escribe para guiar el uso del programa, ya seapor uno mismo o por otros usuarios, en el futuro. Esos comentarios no son instrucciones a serejecutadas. Para ello se coloca el símbolo // delante del texto que queramos poner.

Por ejemplo,

55

Page 56: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 3.14. Como hacer comentarios.

3.5.2. Comando clear

El comando clear es un comando que me permite “borrar” una o más variables. Lo que hace eseliminar del espacio de trabajo, una variable.En el ejemplo de la figura definimos una variable x que contiene los elementos del vector [1 2 34], mostramos la variable, la eliminamos con el comando clear x, y luego mostramos que lavariable x ya no está definida en el entorno de trabajo.

Figura 3.15. Como borrar una variable.

56

Page 57: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Otra cosa que es bastante útil es escribir directamente “clear”. Eso nos permite borrar todaslas variables que fueron definidas previamente. Estas pueden ser números, vectores, matrices,etc.

Figura 3.16. El comando clear borra todas las variables que fueron definidas previamente.

57

Page 58: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

4. Ciclos for y comando ifEn este capítulo se muestran y discuten ejemplos que usan ciclos combinándolos con unaherramienta útil para la programación: las condiciones.

4.1. Ciclos for

Un ciclo permite realizar operaciones en forma reiterada hasta que se sale del ciclo. Daremosalgunas características básicas de los ciclos que se inician con el comando “for”. Losprincipales componentes de los ciclos son un contador (es decir, una variable que va tomandoun valor distinto en cada iteración del ciclo) y un conjunto de instrucciones que se ejecutan encada iteración. Estas dos características en todos los lenguajes de programación, sólo difierenen la sintaxis que se usa en cada uno de ellos. En Scilab el ciclo se inicia con la palabra for,seguido del nombre del contador con los valores que el contador puede tomar. A continuaciónse escriben todas las instrucciones y se finaliza con la instrucción end.La estructura es de esta forma:

for contador=vector con los valores que puede tomar el contadorinstrucciones separadas por ‘;’ o en líneas diferentesend

Ejemplo 1En la figura 4.1 se muestra un ejemplo de implementación del ciclo for:

58

Page 59: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 4.1 Ejemplo usando el comando for.

Veamos ahora cuáles son las instrucciones.En la primera línea del archivo definimos un vector fila x de 10 componentes (equivalentemente,una matriz de 1 fila por 10 columnas) con todos sus elementos iguales a cero.En la segunda línea, le pedimos al Scilab que muestre x (esto sólo ocurrirá cuando se ejecuteen la consola el programa que estamos escribiendo en el archivo).En la cuarta fila, comienza el ciclo for (noten que el editor de Scilab reconoce la palabra for y lapone en otro color). En esa línea se definen también el contador i y el vector con los valores quepuede tomar el contador, en este caso i va a tomar cada uno de los elementos del vector[1 2 3 4].En la quinta línea comienzan las instrucciones que se repetirán iterativamente a lo largo delciclo. En este caso se trata de una sola instrucción.En la sexta línea termina el ciclo con la palabra end.El editor de Scilab no sólo elige colores especiales para algunos comandos, sino que tambiénpone automáticamente sangrías de distinto tamaño en el ciclo, lo que ayuda visualmente aidentificar el rol que cumplen las instrucciones contenidas en cada línea.Veamos ahora qué sucede si ejecutamos las instrucciones contenidas en el archivo queacabamos de escribir. Para eso lo guardamos con un nombre cualquiera (usando la extensión.sce) y luego lo ejecutamos con “file with echo” esto hace que cada línea del script aparezca enla consola.Al hacerlo vemos, en la consola de Scilab lo que se muestra en la Figura 4.2.

59

Page 60: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 4.2. Resultados en la consola después de ejecutar usando “file with echo”.

Al ejecutar el programa, lo primero que aparece en la consola, es la primera instrucción delcódigo. Luego, el vector x definido inicialmente. Vemos entonces que está compuesto porceros. A continuación vemos las líneas del código que constituyen el ciclo.A continuación, como no escribimos ‘;’ al finalizar la instrucción contenida en el ciclo, elprograma nos muestra el resultado de cada iteración. En la iteración 1 el primer elemento delvector x es igual a 1, en la segunda iteración, el segundo elemento del vector pasa a valer 2 yasí sucesivamente.

Ejemplo 2Para enfatizar el hecho de que los valores del contador son arbitrarios, modifiquemos el códigocomo se muestra en la Figura 4.3:

60

Page 61: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 4.3. El contador toma los valores que definimos en el vector correspondiente

Ejercicio. Ejecute el ejemplo 2 y discuta la salida del programa.

Usualmente el contador toma valores consecutivos o con alguna regla por lo que es común verdeclaraciones como la siguientes:

Ejemplo 3a) for i=1:120...b) for i=1:2:250...c) N=1352;

for i=1:5:N...d) for n=1:sqrt(2):10...

En el ejemplo 3a, el contador toma 120 valores entre 1 y 120 incrementándose de 1 en 1.En el ejemplo 3b, el contador toma 125 valores entre 1 y 250 con incrementos de 2 en 2.En el ejemplo 3c, el contador toma valores entre 1 y 1352 con incrementos de 5.En el ejemplo 3d, el contador toma valores entre 1 y 10 con incrementos de .√2El contador que usemos no debe ser, necesariamente, la letra i. Puede ser, por ejemplo, la n:

for n=1:10...

Ejemplo 4Escribir un script que utilizando un ciclo for, evalúe la función definida en el ejemplo de la figura3.18 sobre los distintos elementos del vector x=0.01:0.1:1;

Solución: Al final de la sección 3.3 discutimos que además de utilizar las operaciones entre

61

Page 62: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

vectores como el ./ o .*, es posible evaluar una función para todos los valores de un vectormediante un ciclo que vaya recorriendo cada uno de los elementos de un vector y evaluando lafunción para cada elemento. En principio si sólo queremos evaluar una función matemática,esta opción es un poco artificial ya que con las operaciones como ./ o .* es posible hacerlo enforma directa, no obstante es instructivo implementarlo con un ciclo forEn la figura 4.4 se muestra el código

Figura 4.4. Evaluación iterativa de una función sobre un vector de 100 elementos

En la línea 2 si existe, borramos la variable y de la memoria para que no entre en conflicto conla que vamos a utilizar en el script. En la línea 3, definimos el vector x que contiene loselementos sobre los que vamos a evaluar la función. En la línea 4 calculamos la longitud delvector x para saber cuántas iteraciones tiene que tener el ciclo. En la línea 5 comienza el ciclocon la declaración for i=1:n, que quiere decir que a lo largo del ciclo, el contador i va a irtomando los valores comprendidos entre 1 y n incrementándose en 1 cada vez. En la línea 6está la instrucción: evalúe la función f2 para el elemento i del vector x. Notar que la instruccióny(i)=f2(x(i)) toma pirmero el elemento i­ésimo de x y luego evalúa f2 y el resultado lo asigna alelemento i del y.La línea 7 cierra el ciclo for y en la línea 8 graficamos la función con la instrucción plot

Ejemplo 5 Escribir un script que, utilizando un ciclo for, efectúe la suma de la serie armónica1+1/2+1/3+1/4+......+1/100.Solución: En este caso tendremos que implementar un ciclo de 100 iteraciones, una por cadauno de los términos que vamos a sumar. Además tenemos que ir guardando el resultado de lassumas parciales en una variable a la que iremos adicionando en cada iteración el término de laserie correspondiente. En la figura 4.5 se muestra una posible implementación.

62

Page 63: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 4.5. Implementación de un ciclo for para sumar 100 términos de una serie.

Los ciclos for también pueden utilizarse dentro de funciones. Para ejemplificarlo vamos aimplementar una función que sume los elementos de un vector. Esta función que llamaremossuma, tiene como argumento un vector y devuelve un número (un escalar) que es el resultadode sumar todos los elementos del vector. En la figura 4.6 se muestra el código:

Figura 4.6. La función suma utiliza un ciclo for para sumar los elementos de un vector

Pregunta: En el panel de la derecha de la figura 4.6 cuando se define el vectro x1 como ladivisión entre 1 y cada uno de los elementos del vector x, se utilizan unos paréntesis, ¿por qué?

Ejercicio. Utilizando un ciclo for escribir una función que determine la cantidad de elementos deun vector.

Solución.En el capítulo anterior mostramos las funciones length y size que vienen en la librería delprograma scilab. Veamos ahora una manera sencilla de implementar un ciclo for en scilab, paracontar cuántos elementos hay en un vector. Para ello utilizaremos el contador y una segunda

63

Page 64: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

variable que llamaremos j. La variable j será utilizada para contar los elementos del vector, elvalor inicial es 0. Asignamos el vector al que le determinaremos la cantidad de elementos alcontador del ciclo for. El ciclo se repetirá para cada elemento del vector por lo que la instrucciónsólo tiene que incrementar en 1 la variable j en cada iteración del ciclo. Dicho en otras palabrasla longitud del vector es igual a la cantidad de iteraciones que efectuará el ciclo.

Primero analizaremos el código con un archivo de comandos o script y luego escribiremos lafunción.

En la Figura 4.7 se muestra el script.

Figura 4.7. Contando los elementos de un vector con un ciclo for.

En este ejemplo contamos los elementos del vector x que está definido entre 1 y 2000 conincrementos de .√2El código tiene la variable j inicializada en el valor 0. Se define el contador i como el vector x alque se le quieren contar los elementos. Como el ciclo comienza en el primer elemento delcontador y termina en el último pasando por todos, dará tantas vueltas como elementos haya enel vector. En cada vuelta del ciclo, la variable j se incrementa en 1 y cumple con el cometido decontar cuántos elementos hay en el vector x.Para generar una función que haga esta cuenta tenemos que escribir un código como el que semuestra en la Figura 4.8 y guardarlo con terminación sci.

64

Page 65: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 4.8. Definición de la función longitud.

La función longitud, tiene como entrada un vector (al que le vamos a calcular la longitud) ydevuelve un número (la longitud del vector de la entrada).

Figura 4.6. Resultado en la consola.

En resumen un ciclo for se ejecuta tantas veces como elementos haya en el vector que leasignamos al contador. El contador va tomando en cada vuelta (iteración) los sucesivos valoresde los elementos de dicho vector. En cada vuelta se ejecutan una serie de comandos hasta quese termina los elementos del vector contador.Ejercicio: Utilizando un ciclo for, evaluar el valor de la función y=x^3 para los valores de xcomprendidos entre ­2 y 2 con un incremento de 0.1. Guardar el resultado en un vector llamadoy.

Solución:En la figura se muestran dos maneras de hacer esto.

65

Page 66: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

El script hace lo siguiente: la línea 1 es un comentario. En la línea 2 se declara el array o vectorx que contiene los valores en los que tenemos que evaluar la función: es un vector que empiezaen ­2 y va hasta 2 de a pasos de 0.1. En la línea 3 calculamos la cantidad de elementos quetiene el vector x; necesitamos ese dato porque el ciclo se va a ejecutar una vez por cada uno delos elementos del vector x, es decir si n es la cantidad de elementos que hay en el vector x, elciclo se ejecutará n veces. En la línea 4 iniciamos el ciclo for con la instrucción:for i=1:nEl contador i tomará uno a uno los valores del vector 1:n. En la primera vuelta del ciclo vale 1, enla segunda vuelta i vale 2, en la tercera 3 y así sucesivamente hasta que llega a n.En la línea 5 está la única instrucción que tiene este ciclo que hace lo siguiente:toma el valor i­ésimo del vector x, lo eleva al cubo y se lo asigna al i­ésimo elemento del vector y

4.2. La instrucción “if”. Condiciones

66

Page 67: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

4.2.1 IntroducciónAdemás de los ciclos, una herramienta muy útil que muchas veces es utilizada dentro de losciclos es la instrucción if (if en inglés significa si, no con el significado de afirmación sino decondicionante). Se usa cuando uno quiere poner una condición para que el programa ejecute unsubconjunto de instrucciones sólo si se cumple la condición deseada.La estructura básica es de la forma:

si tal cosase hace esto

sinoesto otro

Esto quiere decir que hay una condición a evaluar y dependiendo del valor de la condición sehace una u otra cosa.En general la condición toma un valor que puede ser 0 o 1. El valor 0 significa que la condiciónes falsa mientras que el valor 1 significa que la condición es verdadera. El tipo de dato quedevuelve una condición se llama lógico (sólo toma los valores 0 o 1) o booleano.Antes de implementar una instrucción if, veamos cómo se incorporan las condiciones opreguntas sobre el estado de una variable. La comparación más sencilla con datos numéricoses la igualdad. Es decir queremos preguntar si una variable tiene o no asignado algún valor. Enla mayoría de los lenguajes de programación esta pregunta se implementa así:

x==1

Observen que escribimos “x==1” no x=1. Esto significa que no le estamos asignando el valor 1a x, si no que estamos preguntando si x es igual a 1. Esta es nuestra condición. El valor de unacondición es verdadero o falso. Una condición es de alguna manera una pregunta sobre elestado de una o varias variables. En este caso la pregunta es si la variable x tiene asignado elvalor 1. Para familiarizarnos con las condiciones es útil probar directamente en la consola descilab algunos ejemplos.

Escribamos las siguientes líneas en la consola,

Figura 4.7. Ejemplo de respuesta falsa.

67

Page 68: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

La línea ans=F quiere decir que la respuesta es falsa ya que x no tiene asignado el valor 1, xtiene el valor 5.

Si ahora ejecutamos:

Figura 4.8. Ejemplo de respuesta verdadera.

Esta T viene de la palabra ‘true’ en inglés que quiere decir verdadero.Ahora bien, el resultado de la condiciones no son letras sino que las letras F y T se utilizan pararepresentar un 0 y un 1 que se corresponde con la respuesta negativa o afirmativarespectivamente.

Desde el punto de vista computacional, una condición es una operación por lo que el resultadode evaluar una condición se puede guardar en una variable es decir es lícito crear una variable yque guarde el resultado de preguntar ¿tiene la variable x asignado el valor 5?Esto se hace así

y=(x==5)Los paréntesis no son necesarios pero ayudan a la legibilidad del código.Podemos utilizar la variable y en otras operaciones por ejemplo:x=5;y=(x==5);x+yel programa devuelveans=6.

Es decir que scilab convirtió la variable booleana y en un número 1 porque el resultado de lacondición es verdadero y pudo hacer el cálculo x+y es decir 5+1.

Si ejecutamosx=5;y=(x==4);x+yel programa devuelveans=

68

Page 69: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

5En este caso y es Falso que es interpretado como el número 0.

Figura 4.9. Ejemplos de variables booleanas o lógicas.

Es muy útil indagar sobre condiciones diferentes a la igualdad, la lista siguiente muestra otrascondiciones que se pueden probar directamente en la consola de scilab:

Operadores:

< : menor< = : menor o igual> : mayor>= : mayor o igual== : igual~= : diferente<> : diferente& : y| : o

69

Page 70: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

~ : no

Ejercicio. Escribir al menos 1 ejemplo en la consola de scilab con cada una de los operadoresmencionados.

Veamos ahora cómo se incorporan las condiciones dentro del código de un programa. Para ellose utiliza la instrucción if que puede incluirse en ciclos, dentro de funciones, scripts etc.Comencemos con algunos ejemplos sencillos.La función que escribimos en el punto 3 ver (figura 3.10 y 3.14 tiene un problema para x=0 yaque la función está definida como:(x) in(x)./xf = sEfectivamente para x=0 la función no está definida porque hay que dividir por 0. Sin embargo lafunción toma valores cercanos a 1 cuando x se acerca a 0. Es decir es una discontinuidadevitable y podemos salvarla diciendo que f(0)=1. Esto requiere que incluyamos una condición enel código que define la función. Esta condición debe comparar el valor de la variable x con unaconstante en este caso con 0. Si la variable x tiene el valor 0 entonces la función devuelve elvalor 1 si no la función devuelve el valor sin(x)/x. En la figura 4.10 se muestra el código:

Figura 4.10. Incluyendo la verificación x==0 para evitar el error al dividir por 0.Notar que en esta implementación de la función perdimos la posibilidad de aplicársela a unvector. El problema es que cuando aplicamos la condición x==0 para un vector, excepto que setrate de un vector de 0 la condición va a ser falsa. Para verlo considerar las instrucciones quese muestran en la figura 4.11

70

Page 71: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 4.11. Cuando comparamos un vector contra un escalar dentro de un if da verdadero sitodos los elementos del vectro son iguales al escalar. Asignamos a x el vector [­1 0 1]; cuando ejecutamos la comparación x==0 en la consola; scilabdevuelve un vector con F T F, es decir falso verdadero falso, porque sólo el segundo elementode x es 0. Sin embargo cuando hacemos esa comparación dentro de un if el resultado es falso.En la figura 4.11 se muestra esto con un ejemplo. Como a vale ­1 quiere decir que el resultadode la comparación fue falso.Para poder aplicar la función a un vector vamos a tener que revisar el vector para ver si el valor0 se encuentra en el vector. Para ello vamos a introducir la función find (encontrar) que viene enla librería de scilab. Esta función busca el primer elemento distinto de 0 de un vector y devuelvesu posición. En la figura 4.12 se muestra cómo buscar la posición del elemento 0 dentro de unvector:

Figura 4.12 Utilizamos la función find para ubicar la posición del elemento 0 en un vector

Para poder aplicar una función partida a un vector es necesario evaluar por separado que pasaen los puntos singulares en este caso en el 0. Para ello verificamos si en el argumento de la

71

Page 72: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

función se encuentra el elemento 0, sino se encuentra se evalúa la función normalmente, si seencuentra, se parte el argumento en 2 desde el elemento 1 hasta la posición anterior a laposición del 0, y desde la posición siguiente a la posición del 0 al final. Esto se muestra en lafigura 4.13.

Figura 4.13. Implementación de una función partida que acepta un vector como argumento.

Más ejemplo sencillos: Supongamos que queremos que cada vez que una variable, x, sea iguala 1, el programa cambie su valor y le asigne el valor 2. Por otro lado, si x no es 1, queremos quela variable conserve su valor. La forma de implementar esto en Scilab es mediante lassiguientes instrucciones:

if x==1;x=2;end

En caso de que x sea igual a 1 (es decir, si la respuesta a la pregunta “¿es x=1?” representadapor la sentencia if x==1, es afirmativa), el programa ejecuta las instrucciones que están entre la“pregunta” (el condicionante) y el “end”. En este ejemplo, si x es igual a 1, el programa le asignaa x el valor 2. En caso de que la respuesta a la pregunta “¿es x=1?” sea negativa, no seejecutan las instrucciones. En este ejemplo, x permanece entonces invariante.

Ejercicio. Implemente el código anterior y pruebe que funciona dándole distintos valores a x ydespués ejecutando dicho código.

72

Page 73: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 4.14.. Como usar el comando if.

Ejercicio. Escriba un código similar al anterior pero utilizando otra condición para cambiarle elvalor a x (por ejemplo, que sea mayor o menor que algún número, etc).

Como dijimos anteriormente, en muchas oportunidades es necesario realizar más de unacomparación antes de ejecutar una instrucción. Supongamos, por ejemplo, que queremoscambiarle el valor a x sólo si es mayor que cero y menor que 10. En ese caso, la condición seescribirá

if x > 0 & x < 10x=1endFigura 4.15.. Como usar el comando if.

En algunas ocasiones no sólo se desea introducir cambios si se cumple una condición dejandotodo invariante en caso de que no se cumpla, sino que se quiere introducir cambios diferentesdependiendo de que una condición se cumpla o no. En ese caso se usa el comando if (en

73

Page 74: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

inglés, si) en combinación con else (en inglés, si no). Consideremos el siguiente ejemplo.Supongamos que queremos sumarle 1 a una variable, m, si su valor es mayor o igual a 1 y quequeremos sumarle 2 en cualquier otro caso. Por ejemplo, si inicialmente m=0, el código lereasignará el valor 2, mientras que si m=4 inicialmente, luego de ejecutadas las instruccionesserá m=5. La forma de combinar if y else para lograr este propósito es la siguiente:

if m>=1m=m+1;else

m=m+2;end;

Ejercicio 2. Implementar el código y probarlo con distintos valores de m. Implementar códigosanálogos combinando otras condiciones.

Figura 4.15. Como usar el comando if con dos condiciones.

En algunos casos se desea separar a las situaciones posibles en más de dos casos pararealizar operaciones distintas dependiendo de la situación de que se trate. En esos casos esposible utilizar el comando elseif. Se pueden utilizar tantos elseif como hagan falta, dependiendodel número de situaciones distintas. Por ejemplo, si tenemos cuatro tipos de situaciones,usaremos: if para identificar la primera, else para identificar la última y dos elseif, para identificarlas otras dos. En la Figura que sigue se muestra un ejemplo con 3 situaciones (s>1, s <=­1,

74

Page 75: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

cualquier otro caso).

Figura 4.16. Como usar el comando if con más de dos condiciones.

Obviamente en estos ejemplos tiene que estar definida la variable anteriormente para podertestear cuál de todas las condiciones se cumple.

75

Page 76: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

5. Ejemplos y problemas

Daremos varios ejemplos en donde se puede usar el comando for, el if combinándolo con otroscomandos como el for, que ya vimos, y uno nuevo que introduciremos acá, break .

5.1 La sucesión de Fibonacci

La sucesión de Fibonacci es una sucesión que se puede definir por recurrencia de la siguientemanera:f1=1f2=1fn=fn­1+fn­2, n>2

Como toda sucesión dada por recurrencia es muy directo su implementación en Scilab usandoun for. En la Figura 5.1 se muestra una función, fibo(n), que calcula todo los términos de lasucesión de Fibonacci hasta el término n­ésimo. Por lo tanto, si ejecutamos o “cargamos” lafunción fibo en el Scilab (de modo que el programa pase a saber qué significado tiene fibo(algúnnúmero)), cuando la llamemos escribiendo en la consola, por ejemplo, fibo(10), aparecerántodos los valores de la sucesión hasta el décimo.

Figura 5.1. Función que calcula hasta el término n­ésimo de la sucesión de Fibonacci.

76

Page 77: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

A diferencia de las funciones que utilizamos en los ejemplos anteriores, la función fibo devuelveun vector aún cuando su argumento es un número. El vector a se va cargando con los datos amedida que el ciclo se va ejecutando. En cada iteración del ciclo, se incorpora un elementonuevo que se calcula como la suma de los 2 elementos anteriores del vector.

Hagamos ahora un segundo script que ejecute la función fibo (ver Figura 5.2) y la utilice paravisualizar los primeros términos de la sucesión.

1. En la primera línea carga la función fibo usando el comando exec (si el directorio detrabajo no fuese el mismo que el directorio donde se encuentra la función fibo habría queespecificar toda la ruta hasta el directorio).

2. En la segunda línea ejecuta la función fibo con el argumento 10 (es decir, calcula todoslos elementos de la sucesión hasta el décimo).

3. En la última gráfica el resultado. A diferencia de lo que vinimos haciendo anteriormente,en este caso usamos plot dando un solo vector, y. Cuando se hace eso, el gráfico es elde los valores que toman las componentes del vector y como función del número decomponente o elemento del que se trate.

Figura 5.2: script que ejecuta la función fibo en 10 y grafica el vector resultante que contiene losprimeros 10 elementos de la sucesión de Fibonacci.

Existen muchos ejemplos de la naturaleza, el arte y la matemática donde aparece la sucesiónde Fibonacci, algunos de ellos se pueden encontrar en la wikipedia.

77

Page 78: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Este ejemplo sirve además para ilustrar un aspecto que no debe descuidarse en laprogramación y que tiene que ver con el uso de la memoria y recursos de la computadora. Sonalgunos puntos a considerar cuando se diseña un programa que no tienen que ver tanto con lalógica del problema que uno quiere resolver sino con el hecho de que en ninguna computadorase cuenta con recursos ilimitados para poder guardar datos o realizar cálculos.En general siempre que uno pueda saber de antemano el tamaño que tendrá una variable esmejor reservar para ella el “espacio de memoria” que ocupará al principio del programa. En esteejemplo el vector a donde se guardan los valores de la sucesión tiene un tamaño conocido apriori. Sabemos que si ejecutamos fibo(20) nos devuelve un vector de 20 elementos. En laimplementación que se muestra en la Figura 5.1, el programa no sabe de antemano el tamañodel vector a esto fuerza a que cada vez que tiene que incorporar un elemento al vector, elprograma le tenga que pedir memoria al sistema operativo para incorporar este nuevo elemento.Esto es poco deseable, hay ocasiones en las que no queda más remedio porque no se sabe deante mano la longitud de un vector. Para esto ayudan las funciones zeros y ones. Podemosdefinir de antemano un vector que tenga n elementos todos nulos, como hicimos en ejemplosanteriores. De esta forma el programa hace un uso más eficiente de los recursos. En la Figura5.3 se muestra la implementación de esta versión de la función fibo que llamamos fibo1.

Figura 5.3. Una mejor implementación de la función fibo que aprovecha que el tamaño del vectora es conocido de antemano y reserva espacio en memoria para guardar el resultado.

5.2 Máximos y mínimos

78

Page 79: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Ejercicio 3: Usando el comando if hacer un programa que encuentre el valor máximo del vectorv=[1 2 4 3 ]. Modificar el programa para que además diga en qué coordenada está el máximo.

La idea es pensar como uno lo haría a mano. Empezaríamos comparando la primera y segundacomponente y nos quedaríamos con la mayor de las dos. Después compararíamos ésta con latercera y nuevamente nos quedaríamos con la mayor. Repeteríamos esto sucesivamente hastahaber comparado todas las componentes. Escribamos un programa que actúe de este modo.Para ello usamos un for, y para hacer las comparaciones y quedarnos con la mayor entre doscomponentes, usamos un if. Se muestra cómo hacerlo en la figura que sigue.

Figura 5.4. Script para hallar máximos.

Analicemos qué hace este código. En la línea 1 tenemos la definición del vector que estamosestudiando, es sólo un ejemplo para mostrar cómo funciona el algoritmo. En este caso el vectortiene sólo 4 componentes.En la línea 2 elegimos el primer elemento del vector y lo guardamosen la variable m. En la línea 3, entramos en el ciclo for que recorrerá el vector e irá comparandolos elementos del vector y registrando el máximo. Para ello en la línea 4, en cada paso del ciclo,s es el valor de la componente del vector que estamos “mirando”. Para compararlo con elmáximo actual incluimos un if que compara el elemento actual del vector con m, si el elementoactual del vector es mayor que el máximo encontrado hasta ahora entonces tenemos queactualizar el valor de m, sino no hacemos nada y continuamos con el siguiente elemento delvector. Cuando hayamos recorrido todo el vector en la variable m estará guardado el valormáximo de v.Una observación: Si quisiéramos el de valor absoluto máximo deberíamos poner s=abs(v(i)).

Si además quisiéramos guardar en qué componente está el valor máximo entonces, antes decerrar el if, deberíamos guardar el número de iteración cada vez que el loop “entra” al if. Sihacemos eso, al final de todo tendremos guardado el último valor de i por donde el if pasó.En este caso j será 3 (o sea la tercera componente).

79

Page 80: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 5.5. Script para hallar máximos guardando la componente.

Ejercicio 4: Repetir el ejercicio anterior pero permitiéndole a v que tenga cualquier longitud.Acá lo único que tendremos que hacer es hacer variar el for desde 2 hasta length(v).

Ejercicio 5: Repetir el ejercicio anterior pero para buscar el mínimo de un vector.

Ejercicio 6: Repetir el ejercicio anterior pero para buscar el mínimo y el máximo de un vector.

Ejercicio 7: Dada la función f(x)=­x^2+x+4 se desea aproximar el máximo de la función en elintervalo [­10 10]. Aproximarlo primero evaluando la función con un espaciado de 1 y luego conun espaciado de 0,1.¿En qué punto se alcanza el máximo? Graficar la función y los puntoshallados.

Figura 5.6. Máximo de la función ­x^2+x+4

Observar en la siguiente figura que dibujamos el máximo del vector y en verde cuando el

80

Page 81: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

espaciado es de 0,1 y en rojo cuando el espaciado es de 1. Observen que a medida que la grillaes mas chica el máximo del vector y se va acercando al máximo de la función.

Figura 5.7. Gráfico de ­x^2+x+4 y la aproximación del máximo.

Esta función es una función cuadrática a la que sabemos calcularle sus máximos pero enmuchos casos eso no es tan fácil. Por ejemplo,

Ejercicio8: Dada la función f(x)=­log(x^2+1)+sin(x)+10 aproximar el máximo y el mínimo de f enel intervalo [­10 10]. ¿En qué puntos se alcanzan el máximo y el mínimo? Graficar la función ylos puntos hallados.

81

Page 82: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 5.8 Aproximación del máximo y mínimo de ­log(x^2+1)+sin(x)+10

Figura 5.9. Gráfico de la función ­log(x^2+1)+sin(x)+10 en el intervalo [­10 10] , de los extremos.

82

Page 83: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

5.3 Aproximación de ceros de funcionesPara programas que utilizan el comando for en combinación con el if muchas veces vamos anecesitar otro comando que es el comando break (break en inglés y en este contexto significainterrumpir). Este comando por lo tanto lo que hace es interrumpir el proceso.

Por ejemplo,

Ejercicio 8: Dado el vector v=[1 4 2 5 5 6] escribir un programa que encuentre la primercoordenada donde la siguiente coordenada sea igual a esta.

Observar que aquí el elemento que se repite es el 5 en las coordenadas 4 y 5. Tendremos quehacer un for hasta 6 (la longitud del vector), pero que pare cuando v(i+1)=v(i).

Figura 5.10. Script que encuentra la primer coordenada de v que coincide con la siguiente.

5.3.1 Método de la Bisección: Usando los comandos for, if y break.

Se sabe que si tenemos una función continua en un intervalo [a,b] que cambia de signoentonces la función tiene un cero en dicho intervalo. Este es el llamado Teorema de Bolzano.Usando este Teorema se puede construir un método para encontrar una sucesión de númerosque aproximan a un cero de la función. Dicho método se conoce como el método de labisección. El método consiste en empezar con un intervalo [a,b] donde la función cambia designo, y en cada paso dividir el intervalo en dos y quedarnos con un nuevo intervalo de la mitadde longitud que el anterior y donde la función cambia de signo. Para fijar ideas vamos aconsiderar la función f definida como:(x) /2f = x3 + 1 [5.1]que estudiaremos en el intervalo [­1, 1]. Sabemos que la función tiene una raíz en dicho intervalo

83

Page 84: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

pues f(­1)<0 y f(1)>0, es decir la función cambia de signo en el intervalo por lo que como escontinua debe forzosamente pasar por cero. En la figura 5.11 se grafica la función en el intervalode interés. Como primera aproximación de la raíz de la función tomamos el punto medio delintervalo: . Hemos definido a1=­1 y b1=1 como los extremos del intervalo inicial enx1 = 2

a +b1 1 = 0el que analizamos la función. x1 es nuestra primera aproximación de la raíz de la función,entonces evaluamos la función en x1 para ver que tanto se aproxima a cero.

. En la figura 5.12 se ilustra este paso, se grafica la función, los extremos del(x ) (0) .5f 1 = f = 0intervalo con puntos rojos y el punto medio del intervalo como primera aproximación de la raízse grafica en azul. Como se observa en la figura 5.12, la raiz se sitúa a la izquierda de x1. Por loque podemos repetir el proceso pero ahora trabajando con el intervalo [­1 0]. Es decir nosquedamos con el valor de a1 que teníamos de la iteración anterior pero el valor de b1 loreemplazamos por el valor de x1. Dicho en otras palabras, el cambio de signo de la función seproduce en el intervalo [­1 0]. Entonces para la segunda iteración tenemos a2=­1 y b2=0; ydefinimos x2 igual que antes como el punto medio del intervalo de trabajo:

− .5x2 = 2a +b2 2 = 0

Evaluamos la función en x2 y obtenemos que f(x2)=0.375. De nuevo vemos que la raíz quedaen el intervalo definido por a2 y x2, ver figura 5.13. Definimos entonces el intervalo y el puntomedio para la tercer iteración:a3=a2=­1; b3=x2=­0.5 y x3 es:

− .75x3 = 2a +b3 3 = 0

Al evaluar la función en x3=­0.75 obtenemos f(­0.75)=0.078. La raíz se encuentra entre a3 y x3por lo que nuevamente redefinimos el intervalo y el valor medio (ver figura 5.14). Para la cuartaiteración nos queda:a4=­1; b4=­0.75 y x4=­0.875. Evaluamos ahora la función en x4 y obtenemos f(x4)=­0.17.A diferencia de lo ocurrido con x1, x2 y x3 vemos que f(x4) es negativo, esto indica que en lapróxima iteración tendremos que quedarnos con el intervalo comprendido entre x4 y b4. Esto seilustra en la figura 5.15. Para la quinta iteración tenemos: a5=x4=­0.875; b5=­0.75 y x5=­0.8125.El proceso se puede continuar indefinidamente o hasta que encontremos la raíz de la función.Normalmente esto no ocurre, por lo que nosotros tenemos que definir cuántas iteraciones levamos a dejar hacer al programa o con cuánta precisión queremos encontrar la raíz de lafunción. Lo importante para remarcar aquí es que para implementar una rutina que haga estotenemos que ir definiendo el intervalo de interés y el valor medio en cada iteración.La condicióninicial que se tiene que cumplir es que la función en cuestión cambie de signo en los extermos.Definimos entonces a1 y b1 como los extremos del intervalo y luego x1 como el punto medio dedicho intervalo. Evaluamos entonces f(x1) y comparamos el signo con f(a1) y con f(b1), si f(x1)tiene el mismo signo que f(a1) entonces en la próxima iteración debemos trabajar en el intervalo[x1 b1] como en el caso de la figura 5.15. Si por el contrario ocurre que f(x1) y f(a1) tienen signocontrario entonces nos quedamos con el intervalo [a1 x1] para la próxima iteración. Para tomaresta decisión en un programa es útil notar que dos números tienen distinto signo si y solo si elproducto de estos dos números es negativo. Es decir si a y b son dos números y a*b <0entonces es seguro que estos números tienen signos distintos. Esto lo vamos a usar en elcódigo para discernir con qué mitad del intervalo nos tenemos que quedar: si f(a)*f(x)<0

84

Page 85: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

entonces nos tenemos que quedar con el intervalo [a x] y si f(a)*f(x)>0 nos tenemos que quedarcon el intervalo [x, b]. En la tabla 5.1 se muestra el resultado para las primeras iteraciones delalgoritmo de la bisección aplicado a la función f definida en la ec 5.1:

Figura 5.11 La función tiene una raíz en el intervalo [­1 1]

Figura 5.12. En el primer paso elegimos x=0 como candidato para raíz

85

Page 86: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 5.13. Al evaluar la función en el punto x2 observamos que la raíz pertenece al intervalo[a2 x2];

Figura 5.14.

86

Page 87: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Figura 5.15. El valor de f(x4) es negativo por lo que la raíz se encuentra a la derecha de x4.

iteración a b x f(x) signo de f(x)*a

1 ­1 1 0 0.5 ­

2 ­1 0 ­0.5 0.375 ­

3 ­1 ­0.5 ­0.75 0.078125 ­

4 ­1 ­0.75 ­0.875 ­ 0.1699219 +

5 ­0.875 ­0.75 ­0.8125 ­ 0.0363770 +

6 ­ 0.8125 ­0.75 ­0.78125 0.0231628 ­

7 ­ 0.8125 ­0.78125 ­0.797 ­ 0.0060234 +

8 ­ 0.797 ­0.78125 ­0.789 0.0087142 ­

9 ­ 0.797 ­ 0.789 ­0.793 0.0013817 ­

10 ­ 0.797 ­ 0.793 ­0.795 ­ 0.0023118 +

11 ­ 0.795 ­ 0.793 ­0.794 ­ 0.0004628 +Tabla 5.1. Resultado de la aproximación de la raíz de la función en el intervalo [­1(x) /2f = x3 + 11] para la primeras 11 iteraciones del método de la bisección.

En la figura 5.16 se muestra cómo el valor de x se va aproximando a una constante que es el

87

Page 88: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

valor que aproxima la raíz de la función.

Figura 5.16. Muestra cómo el valor del punto medio del intervalo va convergiendo hacia laaproximación numérica de la raíz

Ejercicio 9: Dada la función f(x)=2x^3+x­2 hacer un programa que calcule mediante el métodode la bisección un cero en el intervalo [0,1] pidiéndole que itere hasta un máximo de 600 y quepare si f(x)=0. Graficar en cada paso la sucesión obtenida.Primero recordemos las situaciones que se pueden dar en cada iteración:

1) Si f(a)*f(b)<0 entonces tomo el punto medio x=(a+b)/2.2) Si f(x)*f(a)<0 me quedo con el intervalo [a,x].3) Si f(x)*f(a)>0 me quedo con el intervalo [x,b].4) En otro caso (o sea, cuando f(x)=0) terminamos porque esto nos dice que x es un cero.

Para hacer este problema tendremos que combinar los tres comandos, el for, el if y el break. Elfor para indicarle que itere hasta 600, el if para que verifique si sucede 2) o 3) y el break paraque termine el proceso si sucede 4). Además en cada paso vamos a pedirle que grafique elpunto x.

88

Page 89: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Observar que miramos cuando f(a)*f(b)<0 pues eso nos dice que tienen signo contrario.Iteramos este procedimiento hasta que lleguemos a una cantidad fija de iteraciones.Observar que la diferencia de los extremos se hace cada vez más chica (la longitud es la mitaddel paso anterior). Además el cero de la función queda siempre encerrada entre los dosextremos del intervalo.

Figura 5.11. Script que encuentra creos de una función por el método de la bisección.

Si ejecutamos el programo y escribimos i en la consola nos devolverá el último i al que llegó.Observamos que en este caso i=48. Lo que significa que, cuando llegamos a este número deiteraciones, x está tan cerca del cero de la función que para la computadora es cero allí. O seaque no necesitamos llegar hasta N=600. El hecho de que pare mucho antes tiene que ver concuán rápido se va a cero la función. En general no siempre se va a detener antes del número deiteraciones que le demos.

Ejercicio 10: Dada la función f(x)=log(x^2)+x­1 hacer un programa que calcule mediante elmétodo de la bisección un cero en el intervalo [0,1] pidiéndole que itere hasta un máximo de600 y que pare si f(x)=0. Graficar en cada paso la sucesión obtenida.¿En qué número deiteración se detiene?

5.3.2 Método de la Bisección: Usando los comandos while e if.

89

Page 90: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Una forma alternativa de programar el método de la bisección es usando el comando llamadowhile. La palabra while en inglés significa mientras. Este comando se usa para que unprograma continúe haciendo algo mientras suceda una condición dada. En este caso no habráque usar el comando break. La estructura con la que se escribe es,

while suceda estohaga estoend

Haremos ahora un programa que aplique el método de la bisección, pero usando ahora elcomando while.

IFigura 5.12. Método de la bisección usando el comando while.

Observar que de esta manera nos ahorramos también de hacer un for.

En la línea 10 definimos i=0. Cuando pase por la linea 11: primero se fijara si i es menor a 600, y además se fijará si

la función se anula en x. Si las dos condiciones se cumplene, entonces el programacontinua. Si alguna de las dos deja de valer, entonces el programa se detiene.

En la línea 12: le suma 1 a i. Luego, cuando pase la primera vez i valdrá 0, la segunda

90

Page 91: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

vez, i valdrá 1, así sucesivamente hasta que el programa se detenga.

Pueden pasar dos cosas:1. Que se detenga cuando i=600.2. Que se detenga antes pues allí mif(x)=0.

Observar que aquí se vuelve a detenerse en i=48. Lo cual es razonable porque ya vimos que allíla función se “anulaba”.

Este comando, al igual que el if me permite poner más de una condición.Así entonces le podemos pedir que se detenga si a y b ya están demasiado cerca.Por ejemplo, le podemos pedir que además se detenga si .a | 0| − b < 1 −10

Figura 5.13. Método de la bisección usando el comando while con varias condiciones.

Observar que ahora el método se detiene antes.

Ejercicio 11: Dada la función f(x)=log(x^2)+x­1 hacer un programa que calcule mediante elmétodo de la bisección un cero en el intervalo [0,1] usando el comando while pidiéndole queitere hasta un máximo de 600 y que pare si . Graficar en cada paso la sucesióna | 0| − b < 1 −5

obtenida.¿En qué número de iteración se detiene?

91

Page 92: Versión 20 de Marzo de 2013 - Lisandro Lanfrancolisandrolanfranco.com/wp-content/uploads/2016/05/tutorialscilab... · Notación científica, operaciones y funciones 2.2 Variables

Observación: Una cosa que hay que tener en cuenta cuando usamos el comando while es quesiempre hay que poner condición que haga que el programa pare en algún momento. Si lacondición no está bien hecha, puede no parar nunca.

Ejercicio 12. Pruebe lo siguiente e interprete que está sucediendo,­­> i=0;­­> while i>­1­­> i=i+1;­­>end

92