1. Introducción

Contents of this section

Octave es un lenguaje de alto nivel, diseñado para hacer cálculos numéricos. Provee una interfase con línea de comando para resolver problemas lineales y noineales y otros experimentos numéricos numéricamente. Puede ser usado también en forma de procesamiento tipo batch.

En la mayoría de los sistemas, la forma de invocar a Octave es con el comando del shell `octave'. Octave muestra un mensaje inicial inicando que esta listo para aceptar instrucciones. A partir de allí se pueden escribir comandos inmediatamente.

Si ocurre algún tipo de problema, se puede interrumpir la tarea que esta realizando Octave con `Control-C', (usualmente escrito como `C-c' para abreviar). Para salir de Octave simplemente se debe escribir `quit' o `exit' en el prompt de Octave. En aquellos sistemas que soportan "control de tareas", (como Linux y la mayoría de los sistemas Unix, VMS, etc...), se puede "suspender" Octave enviando una señal `SIGSTP' (usualmente `C-z').

$Id: octaveintro.sgml,v 1.10 1997/10/20 13:01:17 mstorti Exp mstorti $

Los siguientes capítulos describen todas las funcionalidades de Octave en detalle, pero antes de eso, puede ser muy útil dar una muestra de sus posibilidades.

Si eres nuevo en el uso de Octave, es recomendable que trates de reproducir estos ejemplos usando Octave. Las líneas marcadas como `octave>' son líneas que tu debes escribir, terminandolas con un "retorno de carro" (la tecla `Enter' en la PC). Octave responderá con un resultado o un gráfico.

$Id: octaveintro.sgml,v 1.10 1997/10/20 13:01:17 mstorti Exp mstorti $

1.1 Cómo crear una matriz

Para crear una matriz y guardarla en una variable de manera que se pueda hacer referencia a ella más tarde, basta con escribir:

octave> a = [ 1, 1, 2; 3, 5, 8; 13, 21, 34 ]
a =
   1   1   2
   3   5   8
  13  21  34
octave>

Octave responde imprimiendo (en la pantalla) la matriz en columnas alineadas. Terminar un comando con punto y coma indica a octave que no muestre el resultado. Por ejemplo:

octave> b = rand (3, 2);
octave>

creará una matriz de 3 filas y 2 columnas con cada elemento puesto a un valor aleatorio ("random") entre cero y uno.

Para mostrar el valor de una variable, simplemente se debe escribir el nombre de la variable. por ejemplo, para mostrar el valor guardado en la matriz `b', se debe tipear el comando:

octave:3> b
b =
  0.70335  0.88008
  0.26807  0.79486
  0.94203  0.24523
octave> 

1.2 Aritmética con matrices

Octave posee una notación especial para efectuar aritmética matricial. Por ejemplo, para multiplicar la matriz `a' por un escalar:

octave> 2 * a
ans =
   2   2   4
   6  10  16
  26  42  68
octave> 

Para multiplicar dos matrices `a' y `b', se debe escribir el comando:

octave:5> a * b
ans =
   2.8555   2.1654
  10.9866   8.5763
  46.8020  36.4707
octave> 

`ans =' indica "answer" (respuesta). Para formar el producto matricial `transpuesta(a) * a', escribir el comando:

octave:6> a' * a
ans =
   179   289   468
   289   467   756
   468   756  1224
octave> 

1.3 Resolución de sistemas de ecuaciones

Para resolver el sistema de ecuaciones lineales `aX = b', es conveniente usar el operador de división a la izquierda `\':

octave:7> a \ b
warning: matrix singular to machine precision, rcond = 2.00564e-18
ans =
   1.38217   1.47409
  -1.16316  -1.25136
   0.21901   0.22272
octave> 

Esto es conceptualmente equivalente a `inv (a) * b', pero evita el cálculo de la inversa de la matriz directamente.

Si la matriz de coeficientes es singular, Octave emitirá un mensaje de advertencia y calculará una solución en el sentido de norma mínima.

1.4 Integrando ecuaciones diferenciales

Octave tiene funciones internas para resolver ecuaciones diferenciales nolineales de la forma:

dx/dt= f (x, t)

con la condición inicial:

x(t = t0) = x0

Para que Octave integre ecuaciones de esta forma, debes primero escribir una función `f(x,t)'. Esto puede ser hecho directamente en la línea de comando. Por ejemplo, los comandos siguientes definen el miembro derecho de un sistema de dos ecuaciones diferenciales nolineales de sumo interés. Nótese que mientras estás escribiendo la función, Octave responde con un prompt diferente, lo cual indica que está esperando para completar tu entrada de la misma:

octave> function xdot = f (x, t) 
> 
> r = 0.25; 
> k = 1.4;
> a = 1.5;
> b = 0.16;
> c = 0.9;
> d = 0.8;
>
> xdot(1) = r*x(1)*(1 - x(1)/k) - a*x(1)*x(2)/(1 + b*x(1));
> xdot(2) = c*a*x(1)*x(2)/(1 + b*x(1)) - d*x(2);
>
> endfunction

Dada la condición inicial:

octave> x0 = [1; 2];

y el conjunto de instantes temporales como un vector columna (nótese que el primer elemento del vector corresponde a la condición inicial dada arriba):

octave> t = linspace (0, 50, 200)';

es fácil integrar el sistema:

octave> x = lsode ("f", x0, t);

La función `lsode' usa el "Livermore Solver for Ordinary Differential Equations", described in A. C. Hindmarsh, "ODEPACK, a Systematized Collection of ODE Solvers", in: Scientific Computing, R. S. Stepleman et al. (Eds.), North-Holland, Amsterdam, 1983, pages 55-64.

1.5 Obtención de salidas gráficas

Para mostrar la solución del ejemplo previo graficamente, use el comando:

octave> plot (t, x)

Si estás usando el sistema X Window, Octave creará automaticamente una ventana separada para mostrar el gráfico.

1.6 Recuperación de comandos

En el prompt de Octave puedes recuperar, editar y reemitir comandos previos usando comandos al estilo de Emacs o Vi.

1.7 Usando la ayuda

Octave tiene facilidades de help abundantes. La misma documentación está disponible en forma impresa y también está disponible en forma interactiva, ya que ambas formas de documentación han sido creadas a partir del mismo archivo.

Para obtener ayuda, debes primero conocer el nombre del comando que quieres usar, lo cual no es siempre obvio. Un buen lugar para empezar es tipear directamente `help'. Esto mostrará todos los operadores, palabras reservadas, funciones, variables internas y funciones de archivo. Puedes obtener más ayuda sobre cualquiera de los items listados incluyendo simplemente el nombre del item como argumento. Por ejemplo:

help plot

mostrará el texto de ayuda para la función `plot'.


Next Chapter

Table of contents of this chapter, General table of contents

Top of the document, Beginning of this Chapter