ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

GNU OCTAVE

folrex6 de Abril de 2012

5.706 Palabras (23 Páginas)573 Visitas

Página 1 de 23

TEMA 1

GNU Octave

Octave se puede definir como un lenguaje de alto nivel inspirado en un software comercial llamado

MATLABr

(MATrix LABoratory).MATLABr

estuvo pensado inicialmente para ´algebra

num´erica lineal (matrices, vectores y sus operaciones), y con el tiempo se le ha sacado partido a

esta forma de trabajo. De la misma forma, Octave empez´o siendo un software para que los alumnos

de Ingenier´ıa Qu´ımica de las Universidades de Wisconsin-Madison y Texas calcularan

reacciones qu´ımicas.

A partir de ese momento, las contribuciones de los usuarios han hecho evolucionar este software

y han a˜nadido librer´ıas y funcionalidades. Ahora, las aplicaciones de Octave ya no se limitan

a simple trabajo con matrices y vectores, como una mera calculadora, sino que ahora aparte

de aplicaciones puramente matem´aticas o num´ericas, es v´alido para otros campos de ciencias e

ingenier´ıas. Entre ellos, el procesamiento de se˜nales (sonido), de im´agenes (filtrados, an´alisis, etc),

estad´ıstica, geometr´ıa, redes neuronales, sistemas de control realimentados y hasta dibujo vectorial.

Intentaremos poner ejemplos de cada una de estas aplicaciones en la medida de lo posible para

mostrar la versatilidad de Octave.

Estas librer´ıas se pueden programar de forma interpretada, usando el propio lenguaje de octave,

o de forma binaria, usando cualquiera de los lenguajes que soporte gcc como C/C++, pascal o fortran

(recordemos que todo el c´odigo objeto era intercambiable). Adem´as, tambi´en se puede hacer a la

inversa, es decir, traducir programas de octave a c++ usando una librer´ıa llamada liboctave. Con

esto se elimina la etapa de interpretaci´on al ejecutarlo con lo que se gana velocidad cuando ´esta

sea determinante. Parece que hay bastantes cosas por ver, as´ı que vamos a empezar.

1.1. Entorno

Octave tiene una filosof´ıa de uso semejante a la de muchas otras aplicaciones de este libro: una

interfaz en forma de shell, con una linea de comandos potente con muchos atajos y facilidades,

para problemas sencillos, y la posibilidad de poder agrupar muchos comandos en ficheros de scripts,

organizados en funciones, para enfrentarse a problemas complejos o para realizar automatizaciones.

Para comenzar a ver el manejo b´asico vamos a ejecutar Octave de manera interactiva. Con este

m´etodo de trabajo, si cometemos un error al entrar una l´ınea, podremos corregirlo sobre la marcha.

1

Para ejecutarlo, abre un terminal y en la l´ınea de comandos teclea octave. Tras un mensaje de

bienvenida, Octave te muestra un prompt que indica que est´a preparado y a la espera de comandos.

En algunas distribuciones, Octave puede tener su icono en uno de los men´ues del sistema, en la

zona de aplicaciones matem´aticas. Teclear octave en la consola es m´as r´apido y funciona el 100%

de las veces. Esto es lo que se nos muestra:

$ octave

GNU Octave, version 2.1.34 (i386-pc-linux-gnu).

Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 John W. Eaton.

This is free software with ABSOLUTELY NO WARRANTY.

For details, type ‘warranty’.

octave:1>

Cuando quieras salir de Octave teclea exit, quit o C-D y volver´as al shell de partida.

La ayuda completa de octave la puedes obtener desde el prompt tecleando help -i. Tambi´en

puedes visualizar la misma ayuda desde el shell tecleando info octave. Luego, la documentaci´on

para cada funci´on y variables se obtienen tecleando help nombredelafuncion. Por ejemplo:

octave:9> help coth

coth is the user-defined function from the file

/usr/share/octave/2.1.34/m/elfun/coth.m

- Mapping Function: coth (X)

Compute the hyperbolic cotangent of each element of X.

La mayor´ıa de los comandos de Octave disponen de esta ayuda. Vemos que se nos dice una

descripci´on de los par´ametros y lo que realiza la funci´on, lo cual es suficiente para que podamos

utilizarla.

Cuando se invoca sin argumentos se obtiene un listado de todas las operaciones, funciones y

variables incorporadas definidas en el sistema. Para conseguir esta informaci´on, Octave rastrea

por los directorios donde est´an instaladas las funciones; de ah´ı su peculiar forma de organizar

esta salida, que nos muestra las funciones clasificadas por temas, lo que puede ayudarnos a mirar

y probar funciones. Adem´as, aqu´ı podemos encontrarnos funciones que no est´an pasadas a la

documentaci´on.

Octave usa la librer´ıa GNU readline para la edici´on en l´ınea de comandos, al igual que bash

y otros programas GNU. Contiene un historial que se puede leer con las flechas arriba y abajo,

muchas combinaciones de teclas para hacer muchas cosas. Para m´as informaci´on y explicaci´on sobre

estas caracter´ısticas teclea desde un shell info rluserman. No entraremos m´as en este tema.

Cada vez que te equivoques en la sintaxis, octave te indicar´a la posici´on donde cree que est´a el

fallo con un angulillo ^. A veces no se puede fiar uno completamente, y s´olo te ayuda a saber m´as

o menos donde se localiza. Ve´amoslo aqu´ı:

octave:13> functon y = f (x) y = x^2; endfunction

parse error:

2

>>> functon y = f (x) y = x^2; endfunction

^

Otro tipo de errores pueden ocurrir dentro de funciones. En este caso, son errores en tiempo de

ejecuci´on, porque ocurren por un fallo en la ejecuci´on del programa. En este caso, lo que aparece

es la l´ınea y posici´on dentro de la funci´on y en la funci´on que lo llam´o y en las siguientes. Por

ejemplo, en este hipot´etico caso:

octave:13> f ()

error: ‘x’ undefined near line 1 column 24

error: evaluating expression near line 1, column 24

error: evaluating assignment expression near line 1, column 22

error: called from ‘f’

En este caso, la funci´on f se compone de unas funciones que se llaman a otras. El error est´a en

la l´ınea 1 con una x mal definida. La funci´on que contiene este error, seg´un octave, formaba parte

de una expresi´on en la linea 1, que a su vez formaba parte de una asignaci´on tambien en la l´ınea

1. Obs´ervese que la funci´on es la que definimos en el anterior ejemplo y el error es que hace falta

pasarle un par´ametro a la funci´on.

Los comentarios dentro del c´odigo de octave se preceden con el car´acter # o % y abarcan desde

ese car´acter hasta el final de la l´ınea. Si ponemos en octave un c´odigo como ´este:

function xdot = f (x, t)

# usage: f (x, t)

#

# This function defines the right hand

# side functions for a set of nonlinear

# differential equations.

r = 0.25;

...

endfunction

Octave interpreta los comentarios despu´es de la funci´on como el texto de ayuda. De esta forma,

cuando hagamos help xdot nos mostrar´a como ayuda el texto que hemos definido en el ejemplo.

Cuando una l´ınea se hace demasiado larga se puede a˜nadir al final de la linea una barra invertida

\ o unos puntos suspensivos ... y continuar en la siguiente l´ınea.

x = long_variable_name ...

+ longer_variable_name \

- 42

Otra cosa interesante es que por defecto se muestra el resultado de la operaci´on al realizarla

salvo cuando se a˜nade un ; al final de la operaci´on. Tambi´en se pueden hacer varias operaciones

en una misma linea separ´andolas con ;.

3

octave:1> a=sqrt(3)

a = 1.7321

octave:2> b=sqrt(5);

octave:3> b

b = 2.2361

octave:4> sqrt(7)

ans = 2.6458

Como ´ultima nota, hay que a˜nadir que cuando no capturamos el valor de retorno aparece la

palabra ans, que representa el ´ultimo resultado, y que se puede usar como variable en la siguiente

l´ınea. Continuando el ejemplo anterior:

octave:5> ans*ans

ans = 7.0000

octave:6> ans*ans

ans = 49.000

1.2. Tipos de datos

En Octave hay tres tipos de datos: num´ericos (escalares, vectores y matrices), cadenas (strings)

y estructuras. Como es de suponer, los num´ericos son los m´as usados, mientras que cadenas s´olo se

usan para presentar mensajes. Las estructuras son algo que nos pueden dar una buena base para

organizar tareas m´as complicadas. A continuaci´on se muestra la forma de definir cada uno de ellos.

octave:13> a=[1 2 3]

a =

1 2 3

octave:14> b=[1,2,3;4,5,6]

b =

1 2 3

4 5 6

octave:15> c="hola mundo"

c = hola mundo

octave:16> d.vector=[1;2];

octave:17> d.matriz=[1 2; 3 4];

octave:18> d.texto="titulo";

octave:19> d

d =

{

texto = titulo

vector =

1

2

4

matriz =

1 2

3 4

}

octave:20> d.vector

d.vector =

1

2

Se observar´a que las definiciones de matrices o vectores, las filas van separadas por comas (,) o

espacios ( ) mientras que las columnas se separan por punto y coma (;). Tambi´en observamos que

una estructura

...

Descargar como (para miembros actualizados) txt (41 Kb)
Leer 22 páginas más »
Disponible sólo en Clubensayos.com