Octave
Octave
Octave
OCTAVE 1-Introduccin
1-1. Qu es Octave?
Octave es un software que nos permite programar y utilizar una serie de funciones principalmente numricas. Esto se hace tipeando los comandos a utilizar y el software responder a cada uno de ellos mostrando los resultados a travs de la pantalla. Es decir, cada vez que nosotros tipeamos algo el software nos responder, excepto que finalicemos lo que escribimos con un punto y coma (;).
Octave es un software de distribucin gratuita que se apega a la filosofa GNU, esto es poder tener acceso al programa y al cdigo fuente del programa para modificarlo (si nos interesa), sin tener que pagar ni por su uso, ni por su obtencin, adems de poder hacer cuantas copias se quieran e instalaciones en diferentes mquinas, tambin, sin tener que pagar.
1-2. Instalacin
Existen varias versiones de Octave, todas disponibles en forma gratuita en Internet. La pgina principal de octave es http://www.octave.org . La version original se utiliza en LINUX (un sistema operativo gratuito), a pesar de ello existen varias versiones para Windows (el sistema operativo propietario de Microsoft). Una de las pginas de donde se puede obtener la distribucin para Windows, es la pgina de la Universidad de Crdoba que es http://www.efn.uncor.edu (all seguimos los link Departamentos, Departamento de Computacin, Materias, Informtica, SOFTWARE). El link que nos permite bajar el instalador de Octave para Windows es http://www.efn.uncor.edu/departamentos/computacion/materias/informatica/s oftware.html
Una vez obtenido el instalador simplemente se debe ejecutar el mismo y se iniciar el proceso de instalacin de OCTAVE.
Para ejecutar el programa, simplemente se debe hacer click en el cono correspondiente. Cuando el software se inicia, se muestra una ventana donde podemos escribir los comandos que necesitemos. Adems Octave puede graficar nuestros datos y resultados en otra ventana. La forma ms sencilla de obtener ayuda en Octave es tipeando help y luego presionando ENTER.
Existe un manual on-line en http://www.octave.org/doc/octave_toc.html . ingls en la direccin
y presionar
Estos valores se pueden ingresar directamente tipendolos y Octave nos mostrar el formato ms simple del valor tipeado.
Una constante numrica compleja se escribe como una expresin de la siguiente forma: 3 + 4i ENTER, 3.0 + 4.0i ENTER, 0.3e1 + 40e-1i ENTER. La nica condicin es que no haya un espacio entre el nmero y la i que representa el valor de la raz cuadrada de -1. Matrices
Es muy sencillo definir una matriz de valores en Octave. El tamao de la matriz es determinado automticamente, as la expresin a = [1, 2; 3, 4] ENTER, resulta en la matriz: a=
[ 1 2] 3 4
Ntese que los elementos de la matriz se separan con coma (,) y las filas con punto y coma (;). Los elementos de la matriz pueden ser expresiones arbitrarias siempre que las dimensiones mantengan coherencia, as la expresin [a , a] ENTER, ser
a=
[1 3
2 4
1 2 3 4
Rangos Un rango es una forma conveniente de escribir un vector con elementos igualmente espaciados. En un rango se define el primer elemento, un valor opcional de incremento entre los elementos y el valor mximo que los elementos del rango no deben exceder. Estos valores se separan con dos puntos (:), si el incremento no se escribe se considera 1. Por ejemplo el rango 1:5 ENTER ser equivalente a la fila [1,2,3,4,5] , mientras que el rango 1:3:5 ENTER ser [1,4], y el rango 7:-4:-18 ENTER ser [7,3,-1,-5,-9,-13,-17]. Un rango se puede leer de la siguente forma, sea 16:3:78, ir desde 16 hasta 78 avanzando de a 3. Predicados
Llamaremos predicados a las funciones predefinidas que se incluyen en Octave. Para los objetos numricos existen algunos predicados tiles como por ejemplo: is_matrix(a) que devuelve un valor 1 si a es una matriz, 0 en otro caso. is_vector(a) que devuelve un valor 1 si a es un vector, 0 en otro caso. is_scalar(a) que devuelve un valor 1 si a es un escalar, 0 en otro caso. is_square(x) si x es una matriz cuadrada devuelve la dimensin de la matriz, sino 0. is_symmetric(x,tol) si x es simtrica con tolerancia tol devuelve la dimensin de x, 0 en otro caso. Si tol se omite se toma la tolerancia que utiliza la maquina en donde se esta trabajando.
3-Variables
Una variable permite asignar un nombre a un valor que ser utilizado luego. El nombre de una variable consistir de caracteres, dgitos y caracteres de subrayados, pero no est permitido que empiecen con un dgito o con doble caracter de subrayado. Los nombres de variable no deben superar los 30 caracteres. Las maysculas y minsculas son consideradas como diferentes caracteres. Como un ejemplo, Son nombre de variables vlidos X , x15 , _quien_es , altura. El comando clear <variable> ENTER borra la variable, la variable deja de estar definida. Los comandos who y whos listan las variables que se hayan definido. El predicado exist(a) devuelve un 1 si la variable a existe, un 2 si el nombre, a, es el de un archivo .m, 3 si es un archivo .oct y 5 si es una funcin predefinida de Octave.
4- Expresiones
Las expresiones son los ladrillos con los que se construyen todo en Octave. Una expresin se evala en un valor, que se puede imprimir, comparar, pasar como parmetro a una funcin o asignar a una variable con una operacin de asignacin. Una expresin puede servir como sentencia. Una sentencia puede contener una o ms expresiones que incluyan variables, constantes, matrices, o combinaciones de ellas.
ones(<variable>,<variable>),
As, ++x puede escribirse tambin como x=x+1. Que se lee como x
La diferencia entre utilizarlos antes o despus de la variable es la siguiente. Si x = 2 ENTER ++x es equivalente a x = x + 1, devuelve 3 por pantalla (es decir se devuelve o muestra el resultado de la operacin luego de realizarla), mientra que x++ es equivalente a x = x + 1, devuelve 2, pues el resultado de la operacin se muestra antes de realizarla. Para matrices y vectores los operadores operan a nivel de elemento.
4-8. Evaluacin
Normalmente, las expresiones son evaluadas simplemente tipendolas en Octave. Pero algunas veces puede ser necesario hacerlo explcitamente. Las funciones eval y feval permiten efectuar esta evaluacin eval(a = 1;) ENTER, har que a la variable a se le asigne 1, feval("acos", -1) ENTER dar como resultado 3.1416, pues se est evaluando el arcocoseno con el argumento -1.
4-9. Sentencias
Una sentencia es una expresin simple o un conjunto de sentencias de control de flujo anidadas. Ejemplos de sentencias simples son: a=1; ENTER b=32; ENTER c= a+b; ENTER d= sqrt(c + (a*b)) ENTER
if (<condicin>) {parte-entonces} else {parte-no-entonces} endif Si <condicin> es verdadera se ejecutan las sentencias de la {parteentonces}, si <condicin> es falsa se ejecutan las sentencias de la {parteno-entonces}. As, por ejemplo: if (rem (x, 2) == 0) x++; else x--; endif Ese fragmento hace que si el resto de dividir x por 2 (que se escribe rem(x,2)) es igual a cero (==0) se sumar 1 a x (x++;) y sino se le restar 1 a x (x--;)
La tercera forma del if es la siguiente: if (<condicin>) {parte-entonces} elseif (<condicin>) {parte-entonces-elseif} elseif (<condicin>) {parte-entonces-elseif} elseif (<condicin>) {parte-entonces-elseif} else {parte-no-entonces} endif Donde cada <condicin> se chequea y cuando una <condicin> es verdadera se ejecuta su correspondiente {parte entonces}. Si ninguna es verdadera la ltima {parte-no-entonces} ser ejecutada. Puede haber muchas partes elseif. if (rem (x, 2) == 0) x++; elseif (rem (x, 3) == 0) x = x+5; else x--; endif En este caso si x es divisible por 2 se le sumar uno a su valor, si es divisible por tres se le sumar cinco a su valor y si no, se le restar 1.
En programacin un loop significa que una parte de un programa se ejecutar ms de una vez en forma sucesiva. La sentencia while es la forma ms sencilla de hacer loops en Octave. Lo que hace un while es repetir un grupo de sentencias, mientras que una condicin determinada sea verdadera. while (condicin) cuerpo endwhile Lo primero que sucede es la verificacin la condicin. Si la condicin es verdadera se ejecuta el cuerpo. Una vez ejecutado el cuerpo, se vuelve a verificar la condicin y mientras siga siendo verdadera se vuelve a ejecutar el cuerpo y haste que la condicin no es verdadera. Si la condicin es inicialmente falsa el cuerpo no se ejecuta nunca. El siguiente bloque de cdigo genera los 10 primeros nmeros de la sucesin de fibbonacci. fib = ones (1, 10); i = 3; while (i <= 10) fib (i) = fib (i-1) + fib (i-2); i++; endwhile
La sentencia break hace que la ejecucin salte fuera del ciclo while o for que la contiene. while (div*div <= num) if (rem (num, div) == 0)
break;
endif div++; endwhile
6 - Archivos de Funciones
Los programas complicados en Octave pueden ser simplificados definiendo funciones. Las funciones pueden ser directamente definidas en la lnea de comando o en archivos externos y pueden ser llamadas como funciones predefinidas.
6-1.Definiendo funciones
La forma ms simple de definicin de una funcin es la siguiente: function nombre cuerpo endfunction Un nombre vlido de funcin debe obedecer a las mismas reglas que un nombre vlido de una variable. El cuerpo de la funcin consiste en un conjunto de sentencias Octave. En el cuerpo de la funcin se define que es lo que la funcin debe hacer. Normalmente, ser necesario pasarle alguna informacin a la funcin que definimos. La estructura general para pasar parmetros a una funcin en Octave es function nombre (arg-list) cuerpo endfunction donde arg-list es una lista de argumentos separados por comas. Cuando la funcin es llamada los nombre de los argumentos son utilizados para contener los valores de los argumentos durante esa llamada.
donde ret-list ser una lista de variables separadas por comas que guardarn los valores devueltos por la funcin. Por ejemplo: function [max, idx] = vmax (v) idx = 1; max = v (idx); for i = 2:length (v) if (v (i) > max) max = v (i); idx = i; endif endfor endfunction