Está en la página 1de 12

MANUAL DE INICIACION RAPIDA A 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 vez obtenido el instalador simplemente se debe ejecutar el


mismo y se iniciar el proceso de instalacin de OCTAVE.

1-3. Notacin en este Documento


ENTER representa presionar la tecla enter return. EL texto que
aparece en itlica representa la estructura general de lo que se est
describiendo. Cunado aparece algo entre <corchetes> significa que
debe ser remplazado por un nombre en particular (as
<nombre_de_funcin> se reemplazar, por ejemplo, por seno(x)). El
tecto que aparece en negrita representa cdigo de OCTAVE listo para
ser ejecutado.

1-4. Ejecutando OCTAVE por primera vez


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

Para salir de Octave bastar con escribir exit


ENTER.

y presionar

2-Tipos de Datos en OCTAVE

Todas las versiones de Octave incluyen una serie de tipos de


datos predefinidos, que incluye reales, complejos, escalares, matrices
cadenas de caracteres y tipos de datos estructurados. Un tipo de
datos no slo define al dato sino que adems define que operaciones
pueden hacerse sobre l y con otros tipos de datos.
Es posible definir nuevos tipos de datos escribiendo un poco de
cdigo en C++. Estos tipos de datos pueden ser cargados al iniciarse
Octave o durante la ejecucin de Octave. Esto no ser necesario en
nuestro caso.

2-1. Tipos de Datos Numricos


Constantes Numricas
Una constante numrica puede ser un escalar, un vector o una matriz
o un nmero imaginario. La forma ms simple de una constante numrica,
un escalar, es un nmero simple que puede ser un entero, una fraccin
decimal, un nmero en notacin cientfica o un nmero complejo. Todas las
constantes numricas en Octave son representadas internamente como
nmeros de punto flotante en doble precisin (los nmeros complejos se
representan como dos valores flotantes). Un nmero de punto flotante es lo
que se conoce como real. As algunos valores reales que tienen el mismo
valor numrico sern, por ejemplo, 105 ENTER, 1.05e+2 ENTER, 1050e1 ENTER.

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=

[ 13 24 ]

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=

[ 13

Rangos

2 1 2
4 3 4

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.

4-1. Expresiones ndices


Una expresin ndice permite recuperar o referenciar elementos de
una matriz o un vector.
Los ndices pueden ser escalares, vectores, rangos o el caracter
especial dos puntos (:) que se utiliza para seleccionar la filas o columnas
enteras. Los vectores utilizan un solo ndice mientras que las matrices
utilizan dos.
Por ejemplo, dada la matriz A = [1,2;3,4;5,6] ENTER, la siguiente
expresin A(2,1) selecciona (y retorna su valor) el elemento de la segunda
fila y la primera columna (el 3), mientras que las siguientes expresiones
seleccionan la primera fila de la matriz A(1,1:2) A(1,:), la segunda fila de
la matriz A(2,1:2) A(2,:) y la segunda columna A(1:3,2) A(:,2).
Ntese que para seleccionar una columna entera se puede utilizar un
rango (1:2 en el ejemplo) el caracter especial dos puntos (:)

4-2. Llamadas a Funciones


Otro tipo de expresin bsica es la llamada a una funcin que puede o
no, estar predefinida en Octave. Una funcin es un nombre para un clculo
particular. As, por ejemplo, sqrt ejecuta las sentencias para obtener (o
calcular) la raz cuadrada de un valor.
Un conjunto fijo de funciones est predefinidas en Octave, pero se
pueden construir las propias funciones en caso de ser necesario.
La forma de utilizar una funcin es a travs de una expresin de
llamada a la funcin que consiste de: el nombre de la funcin ms una lista
de argumentos entre parntesis. Estos argumentos son asimismo
expresiones, que se separan con comas (,). Si no son necesarios
argumentos se pueden omitir los parntesis, pero es mejor utilizarlos para
que quede en claro que se esta llamando a una funcin.
Algunos ejemplos son, sqrt(64) ENTER, ones(4,5) ENTER, rand()
ENTER, zeros(t,y).
Cada funcin posee una cantidad determinada de argumentos y cada
argumento debe ser de un determinado tipo. Adems, Octave permite que
se devuelvan varios valores como resultado de utilizar dicha funcin. Por
ejemplo, una funcin sobre una matriz podra devolver el mayor, el menor y
el valor ms repetido de la misma.
Algunas
funciones
predefinidas
son
sqrt(<variable>),
sin(<variable>), cos(<variable>), tan(<variable>), asin(<variable>),
acos(<variable>),
atan(<variable>),
sinh(<variable>),
cosh(<variable>),
tanh(<variable>),
ones(<variable>,<variable>),
zeros(<variable>,<variable>), rand().

4-3. Operadores Aritmticos


Los operadores aritmticos son elementos que permiten construir
expresiones ms complejas partiendo de expresiones sencillas o atmicas
(indivisibles).

Adicin: x + y : Si ambos operandos son matrices el nmero de filas y


columnas debe coincidir. Si un operando es escalar su valor es sumado a
cada elemento del otro operando.
Adicin elemento por elemento: x .+ y : Este operador suma dos matrices
elemento a elemento. Es equivalente a x +y.
Sustraccin: x y
Sustraccin elemento a elemento: x .-y
Multiplicacin Matricial: x * y : El nmero de columnas de x debe coincidir
con el nmero de filas de y.
Multiplicacin elemento a elemento: x .* y : Si ambos operandos son
matrices deben coincidir en dimensin.
Divisin a derecha: x / y : Este concepto es equivalente a efectuar el
producto del inverso de y transpuesta por x transpuesta, transpuesto.
Divisin a derecha elemento a elemento: x ./ y
Divisin a Izquierda: x \ y : El concepto es equivalente multiplica el inverso
de x por y.
Divisin a Izquierda elemento por elemento: x .\ y : Cada elemento de y es
dividido por el correspondiente de x.
Potencia: x ^ y x ** y : Si x e y son escalares devuelve x elevado a la
potencia y.
Potencia elemento por elemento: x .^ y x .** y : Si los dos operandos son
matrices las dimensiones deben coincidir.
Negacin: -x
Suma unaria: +x : Este operador no tiene efecto sobre el operando.
Conjugado: x' : Para argumentos reales este operador es lo mismo que el
operador Transpuesta. Para operandos complejos calcula el conjugado.
Transpuesta: x.'

4-4. Operadores de Comparacin


Los operadores de comparacin comparan los valores numricos con
respecto a la igualdad. Todos los operadores de comparacin devuelven un
valor 1 si la operacin es verdadera 0 si es falsa. Para matrices los
operadores trabajan elemento por elemento. As por ejemplo, [1, 2; 3, 4]
== [1, 3; 2, 4] ENTER dar un resultado de unos y ceros elemento por
elemento [1,0;0,1]. Si un operador fuera un escalar y el otro una matriz, el
escalar se comparar con cada elemento de la matriz.
x
x
x
x
x
x
x
x

< y es verdadero si x es menor que y


<= y es verdadero si x es menor o igual que y
== y es verdadero si x es igual a y
>= y es verdadero si x es mayor o igual que y
> y es verdadero si x es mayor que y
!= y es verdadero si x es distinto que y
~= y es verdadero si x es distinto que y
<> y es verdadero si x es distinto que y

4-5. Expresiones Booleanas


Una expresin booleana es una combinacin de expresiones de
comparacin usando operadores "o" (||), "y" (&&) y "no" (!), junto con
parntesis que controlan el orden de las operaciones lgicas. La veracidad
de una expresin booleana es computada combinando la veracidad de las

expresiones componentes elementales. Un valor cero es considerado falso y


un valor distinto de cero es considerado verdadero.
x && y: es verdadero si x e y son verdaderos.
x || y: es verdadero si x o y son verdaderos.
!x: es verdadero si x es falso.

4-6. Expresiones de Asignacin


Una expresin de asignacin es una expresin que almacena un
nuevo valor en una variable. Por ejemplo, para asignar un valor 1 a la
variable z se utiliza la siguiente expresin z = 1 ENTER.
Luego de que esta expresin es ejecutada la variable z tiene un valor
1, sin importar el valor que tena z antes. As el signo igual (=) se conoce
como operador de asignacin (y suele leerse como "se vuelve"). La parte
izquierda del operador (lvalue) debe ser una variable, un elemento de una
matriz, o una lista de valores. La parte derecha del operador puede ser
cualquier expresin.
Es importante notar que las variables puede cambiar de tipo durante
la ejecucin de un programa, en un momento ser un valor numrico y luego
ser una matriz. Esta tcnica si bien es vlida no es recomendada.
Asignar un escalar a un conjunto de ndices de una matriz har que
los elementos de la matriz se vuelvan el valor escalar. As, a(:, 2) = 5
ENTER, har que todos los elementos de la segunda columna de la matriz a
sean 5.
Una asignacin es una expresin y por lo tanto tiene un valor. La
expresin z=1 tiene valor 1 (es verdadera, o vlida). Esto permite escribir
mltiples asignaciones simultaneas, como por ejemplo x = y = n = 0
ENTER, que almacena 0 en las tres variables. Siguiendo con nuestro
ejemplo de asignacin, teniendo ya un valor en z otro ejemplo de asignacin
sera x = z +5 ENTER con lo que la variable x tendr un valor de 6. Si
leemos la sentencia anterior, obtenemos, "La variable x se vuelva el valor
de la variable z ms 5".

4-7. Operadores de Incremento


Los operadores de incremento incrementan o decrementan el valor de
una variable en 1. El operador de incremento se escribe como dos signos
ms seguidos sin espacio entre ellos (++) y el de decremento como dos
signos menos seguidos sin espacio entre ellos(--). La forma de utilizarlos
ser antes o despues de variables que ya se hayan definido, por ejemplo ,
entradas++, y--, --altura, ++indice.
As, ++x puede escribirse tambin como x=x+1. Que se lee como x

se vuelve el valor que tiene la variable x ms uno.

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

5- Sentencias de Control de Flujo


5-1.La sentencia IF
La sentencia if (si condicional) es la sentencia que permite tomar una
decisin en Octave. Existen tres formas bsicas, la ms sencilla es:
if (<condicin>)
{parte-entonces}
endif
Donde <condicin> es una expresin que controla que lo que se va a
hacer. Si <condicin> es verdadera, las sentencias de la {parte-entonces}
se ejecutarn. Si <condicin> es falsa no se ejecutarn las sentencias de la
parte entonces. Por ejemplo, en el siguiente fragmento de cdigo, si x es
menor que dos, se sumar uno a x.
if (x< 2) ENTER
x++; ENTER
endif ENTER
La segunda forma del if es:
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.

5-2. La sentencia WHILE


En programacin un loop significa que una parte de un
ejecutar ms de una vez en forma sucesiva. La sentencia
forma ms sencilla de hacer loops en Octave. Lo que hace
repetir un grupo de sentencias, mientras que una condicin
sea verdadera.
while (condicin)
cuerpo
endwhile

programa se
while es la
un while es
determinada

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

5-3. La sentencia FOR


El for es ms conveniente cuando queremos contar la cantidad de
veces que iteramos en el loop. La estructura de un for es como sigue:
for nombre-variable = expresin
cuerpo
endfor
La parte nombre-variable puede tener varias formas. La forma ms
comn es el nombre de una variable simple. El operador de asignacin (=)
que figura en el for funciona de la siguiente manera. En vez de asignar la
expresin a la nombre-variable de una vez, trabaja por columnas. Si la
expresin es un rango, un vector o un escalar, el valor de nombre-variable
ser asignado cada vez que el cuerpo se ejecute. Como puede verse en el
siguiente cdigo que genera los 10 primeros nmeros de la sucesin de
fibonacci.
fib = ones (1, 10);
for i = 3:10
fib (i) = fib (i-1) + fib (i-2);
endfor
El rango 3:10 se va asignando a la variable i, hasta que no quedan
valores.
Cualquier sentencia for se puede traducir como while y viceversa.

5-4. La sentencia BREAK


La sentencia break
while o for que la contiene.
while (div*div <= num)
if (rem (num, div) == 0)

break;
endif
div++;
endwhile

hace que la ejecucin salte fuera del ciclo

5-5. La sentencia CONTINUE


La sentencia continue saltea el resto del ciclo que la incluye y
empieza con el siguiente ciclo de iteracin inmediatamente.
vec = round (rand (1, 10) * 100);
i = 0;
for x = vec
if (rem (x, 2) != 0)
continue;
endif
i++
endfor

5-6.La sentencia INPUT


La sentencia input permite el ingreso de un valor numrico.
input("Ingrese un valor ");
Si se agrega el argumento "s" el valor ingresado se considera una
cadena de caracteres.

5-7.La sentencia DISP


La sentencia disp permite mostrar en pantalla el argumento que
utiliza.
disp("Ingrese un valor ");

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.

6-2.Devolucin de Valores desde una funcin


En la mayora de los casos tambin se desea que alguna informacin
regrese desde las funciones que se definan. La forma general de hacer esto
se logra:
function ret-val = name (arg-list)
cuerpo
endfunction
Donde ret-val es el nombre de la variable que contendr el valor que
la funcin retornar. Esta variable debe estar definida antes del fin del
cuerpo de la funcin.
Las variables usadas en el cuerpo de la funcin son locales a la
funcin (no existen fuera de ella). Las variables nombradas en la arg-list y
ret-val tambin son locales a la funcin.
Por ejemplo, esta sera una funcin que computa el valor promedio de
una serie de valores almacenados en un vector.
function retval = avg (v)
retval = sum (v) / length (v);
endfunction

6-3.Retorno de Mltiple Valores desde una funcin


A diferencia de muchos otros lenguajes, Octave permite que una
funcin retorne ms de un valor. La sintaxis para definir funciones que
devuelvan mltiples valores ser:
function [ret-list] = nombre (arg-list)
cuerpo
endfunction
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

6-4.Retornando desde una funcin


El cuerpo de una funcin puede contener una sentencia return.
Esta sentencia hace que la ejecucin vuelva al resto del programa. La
sintaxis es:
return
El comando return simplemente permite salir fcilmente del
cuerpo de una funcin.

6-5.Archivos de Funciones (.m)


Excepto para programas muy sencillos no es prctico tener que
definir todas las funciones que necesitamos utilizar cada vez que las
necesitemos. En lugar de ello, la idea es guardar las funciones en un archivo
que sea fcil de utilizar, ya sea para agregar funciones nuevas o modificar
las que ya hemos creado y luego utilizarlas desde Octave.
Octave no requiere que las funciones sean cargadas desde un archivo
para utilizarlas, simplemente hay que poner las definiciones de las
funciones en algn sitio donde Octave pueda encontrarlas.
Cuando Octave encuentra un identificador que no ha sido definido,
primero verifica que no sea una variable o funcin que ya haya sido usada.
Si no la encuentra all, busca en la lista de directorios que se encuentra
almacenada en la variable predefinida LOADPATH, buscando archivos .m
que tengan el mismo nombre que el identificador. As por ejemplo si Octave
encuentra el identificador promedio en un programa y no es una variable,
buscar por el archivo promedio.m en la lista de directorios definidos en
LOADPATH. Una vez que Octave encuentra el archivo, el contenido del
mismo es ledo. Si se define slo una funcin dentro de ese archivo esta
funcin se ejecuta. El lugar por defecto en donde OCTAVE espera que se
encuentren los archivos es <directorio de instalacin>/octave_files,
entonces por ejemplo si instalamos Octave con las opciones por defecto
este
lugar
sera
c:/Archivos
de
programas/GNU
Octave
2.1.36/octave_files.

También podría gustarte