1.2. Usar Octave

En la mayoría de los casos, la forma de arrancar Octave es desde la linea de comandos tecleando octave. Octave muestra un mensaje inicial y un prompt indicando que está esperando órdenes del usuario.

	$ octave
	GNU Octave, version 2.0.16.92 (i386-pc-linux-gnu).
	Copyright (C) 1996, 1997, 1998, 1999, 2000 John W. Eaton.
	This is free software with ABSOLUTELY NO WARRANTY.
	For details, type `warranty'.
	
        octave:1>
      

Para terminar octave, basta con teclear quit o exit en el prompt de Octave.

        octave:1> exit
      

1.2.1. Ejemplos sencillos

Los capítulos siguientes describen las características de octave en mayor detalle, pero antes de continuar es recomendable mostrar (e intentar) algunos ejemplos. Cada vez que se complete una linea con una pulsación de retorno de carro, Octave responderá con un segundo prompt para seguir recibiendo entrada del usuario, o con la respuesta (puede tardar más o menos según el número de operaciones necesaria para computarla) si el usuario introdujo una orden completa.

Según se van introduciendo los comandos Octave los almacena en un "histórico de comandos" y permite su recuperación y edición. Simplemente pulsando las flechas del teclado numérico, o si esto no funcionara con las teclas C-b o C-f para mover el cursor a izquierdas o derechas en el comando que estamos tecleando, y con C-p y C-n para recuperar órdenes anteriores (retroceder en la historia) o volver a las últimas órdenes.

Sugerencia

Existen otras muchas combinaciones de teclas útiles, la mayor parte de las cuales coinciden con las de emacs.

Ejemplo 1-1. Definir números

El siguiente ejemplo define dos números, el primero el número real 2, y el segundo el número complejo 2+2j.

	    octave:1> a=2.1
	    a = 2.1
	    octave:2> b=a+2j
	    b = 2.1 + 2i
	  

Inicialmente, los símbolos i y j son representaciones de la unidad imaginaria (i*i=-1, j*j=-1). Ambos símbolos son equivalentes.

Atención

Esto es cierto siempre y cuando no se asigne otro valor a las variables i y j o a sus correspondientes mayúsculas. Por eso motivo se desaconseja su uso como variable. Lo mismo sucede con las constantes pi (relación entre la longitud de la circunferencia y su diámetro) y e (base del logaritmo neperiano)

En la definición de la variable b se ha usado la variable a. Así, si una variable está a la izquierda del signo = se estará asignando valor a esa variable, y si está a la derecha será sustituida por su valor a la hora de hacer los cálculos.

También se observa que no hay ninguna diferencia a la hora de definir un número real, complejo o imaginario, o al usarlo, lo que supone una gran comodidad a la hora de programar.

Atención

Octave usa el . (punto) para definir números decimales (exactamente igual que en las calculadoras).

Para obtener el valor de una variable basta con teclear el nombre de la variable a continuación del prompt.

	    octave:3> b
	    b = 2.1 + 2i
	  

Ejemplo 1-2. Crear un vector

Si queremos crear un vector fila con los elementos 1, 2, 1:

	    octave:4> v= [1 2, 1]
	    v =
	      1 2 1
	  

Para crear un vector columna

	    octave:5> w= [
	    > 1; -1
	    > 2
	    > ]
	    w =
	       1
	      -1
	       2
	  

Los símbolos [ y ] se usan para definir vectores y matrices. Si se trata de un vector fila, se introducen los elementos separados por espacios (o tabuladores) o por , (coma). Si es un vector columna se introducen los elementos separados por retornos de carro o por ; (puntos y coma). En el caso de las matrices, los elementos se introducen por filas. Está permitido usar cualquier cantidad de espacios para separar elementos.

Ejemplo 1-3. Crear una matriz

Para almacenar la matriz identidad de rango 3 en una variable escribiríamos lo siguiente:

	    octave:6> I= [
	    > 1 0 0
	    > 0 1 0; 0,0,1 ]
	    I =
	      1 0 0
	      0 1 0
	      0 0 1
	  

Octave responde imprimiendo por pantalla la matriz correctamente formateada. A partir de este momento la variable I contendrá la matriz identidad de orden 3. El mismo resultado hubiéramos podido conseguir usando la función eye(3). Otros ejemplos de funciones que crean matrices son ones(), zeros() y rand().

Sugerencia

Si desea saber como utilizar estas funciones teclee en el prompt de Octave help seguido por el nombre de la función. Por ejemplo: help ones. Por desgracia la ayuda estará en inglés.

Ejemplo 1-4. Aritmética de matrices

La notación de octave para aritmética de matrices, vectores y números es clara y sencilla. Por ejemplo:

	    octave:7> b * I
	    ans =
	      2.10000 + 2.00000i  0.00000 + 0.00000i  0.00000 + 0.00000i
	      0.00000 + 0.00000i  2.10000 + 2.00000i  0.00000 + 0.00000i
	      0.00000 + 0.00000i  0.00000 + 0.00000i  2.10000 + 2.00000i
	  

Y para multiplicar vectores:

	    octave:8> v * w
	    ans = 1
	    octave:9> w * v
	    ans =
	       1   2   1
	      -1  -2  -1
	       2   4   2
	    octave:10> v .* w'
	    ans =
	      1 -2 2
	  

Los vectores v y w son vectores de 1x3 y 3x1 respectivamente, esto explica que en el primer caso el resultado sea escalar y en el segundo una matriz 3x3. En el tercero se multiplican las componentes una a una (operador .*), y para que esta operación no de error es necesario que la dimensión de los dos operadores sea la misma. En este caso se transpone w mediante el operador ' (apóstrofe):

	    octave:11> w'
	    ans =
	       1 -1  2
	  

Ejemplo 1-5. Solución de ecuaciones lineales

Para solver un conjunto de ecuaciones lineales del tipo Ax=b disponemos del operador "división por la izquierda", \:

	    octave:12> A=[1 2 3; 3 1 2; 2 3 1];
	    octave:13> A\w
	    ans =
	      -0.55556
	       1.11111
	      -0.22222
	  

Sugerencia

Un ; (punto y coma) al final de una orden hace que octave después de ejecutar la orden suprima su respuesta y nos presente el siguiente prompt.

Ejemplo 1-6. Obteniendo ayuda

Para poder obtener información de Octave es necesario conocer el nombre de la orden que se quiere usar. Este nombre no tiene por qué ser obvio. Un buen sitio para empezar es simplemente teclear help. Esto nos mostrará todos los operadores, palabras reservadas, funciones, variables predefinidas (built-in) y ficheros de funciones. Si ya se conoce el nombre el comando, simplemente hay que pasarlo como parámetro:

	    octave:14> help rand
	    zeros is a builtin function
	    
	    zeros (N), zeros (N, M), zeros (X): create a matrix of all zeros
	    
	    Additional help for builtin functions, operators, and variables
	    is available in the on-line version of the manual.  Use the command
	    `help -i <topic>' to search the manual index.
	    
	    Help and information about Octave is also available on the WWW
	    at http://www.che.wisc.edu/octave/octave.html and via the
	    help-octave@bevo.che.wisc.edu mailing list.
	  

La tercera forma de obtener ayuda es por medio de help -i concepto, donde concepto es la palabra clave que queremos buscar.

Atención

Para que este comando funcione es necesario tener instalada la utilidad externa info (también software libre) y la documentación de octave en el formato de esta herramienta.

1.2.2. Comentarios en Octave

Siempre es recomendable documentar el código, para hacerlo más inteligible a otras personas o al propio programador, por si en alguna ocasión tuviera que modificarlo. En Octave los comentarios empiezan con un signo # o %. Todo el texto que siga a continuación hasta fin de línea es considerado como un comentario y no es evaluado por Octave.

	  function y = determinante(X)
	  #
	  # Uso: y = determinante(X)
	  # 
	  # Esta función calcula el determinante de la matriz X
	  # X debe ser una matriz cuadrada.
	  ...
	  end
	

En el ejemplo se muestra parte de la definición de una función. El comando de Octave help es capaz de buscar el primer bloque de comentarios (aquel que sucede justo después de la palabra clave function) e imprimirlo en pantalla. Por ejemplo, después de definir la función anterior, cuando se teclee help determinante se obtendrá el siguiente resultado:

	  function y = determinante(X)
	  
	  Uso: y = determinante(X)
	  
	  Esta función calcula el determinante de la matriz X
	  X debe ser una matriz cuadrada.