Actualizado el 22 de Abril del 2018 (Publicado el 3 de Septiembre del 2017)
1.960 visualizaciones desde el 3 de Septiembre del 2017
810,6 KB
92 paginas
Creado hace 19a (10/04/2006)
Manual de iniciación a GNU Octave
Autor: José María Valiente Cifuentes
Trabajo realizado dentro de un Proyecto Fin de Carrera dirigido por
Carlos Medrano Sánchez
en la E.U. Politécnica de Teruel
Año 2006
Licencia
Copyright (c) 2006 José María Valiente Cifuentes
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no FrontCover Texts, and no BackCover Texts. A copy
of the license is included in the section entitled "GNU Free Documentation
License", at the end of the document.
Manual de Iniciación a GNU Octave
Manual
De
GNU Octave
Pág -1-
Manual de Iniciación a GNU Octave
1. Operaciones Básicas
1.1. Operaciones con matrices y vectores
1.1.1. Introducción de matrices desde el teclado
1.1.2. Operaciones con matrices
1.1.3. Tipos de datos
1.1.3.1. Números reales de doble precisión
1.1.3.2. Números Complejos
1.1.3.3. Cadenas de caracteres
1.1.3.4. Otras formas de definir matrices
1.1.3.4.1 Tipos de matrices predefinidos
1.1.3.4.2 Formación de una matriz a partir de otras
1.1.3.4.3 Direccionamiento de vectores y matrices a partir de
vectores
1.1.3.4.4 Operador <<Dos Puntos>> (:)
1.1.3.4.5 Definición de matrices y vectores desde fichero
1.1.3.5. Operadores Relacionales
1.1.3.6. Operadores Lógicos
1.2. Funciones de Librería
1.2.1 Características Generales de las funciones de librería
1.2.2. Funciones matemáticas elementales que operan de modo escalar
1.2.3. Funciones que actúan sobre matrices
1.2.3.1 Funciones elementales
1.2.3.2 Funciones Especiales
1.2.3.3 Funciones de Factorización y/o Descomposición Matricial
1.3. Más sobre operadores relacionales con vectores y matrices
1.4. Otras funciones que actúan sobre vectores y matrices
2. Otros tipos de datos de GNU Octave
2.1. Cadenas de caracteres
2.2 Hipermatrices (arrays de más de dos dimensiones)
2.2.1 Definición de Hipermatrices
Pág -2-
Manual de Iniciación a GNU Octave
2.3 Estructuras
2.3.1 Creación de Estructuras
2.3.2 Funciones para operar con Estructuras
2.4 Vectores o matrices de celdas (Cell Array)
2.4.1 Creación de vectores y matrices de Celdas
2.4.2 Funciones para trabajar con vectores y matrices de celda
3. Programación en GNU Octave
3.1. Bifurcaciones y bucles
3.1.1. Sentencia IF
3.1.2. Sentencia SWITCH
3.1.3. Sentencia FOR
3.1.4. Sentencia DO-UNTIL
3.1.5. Sentencia WHILE
3.1.6. Sentencia BREAK y CONTINUE
3.2 Ficheros *.m
3.2.1 Ficheros de Comandos (SCRIPTS)
3.2.2 Definición de Funciones
3.2.3. HELP para las funciones de usuario
4. Gráficos bidimensionales
4.1 Funciones gráficas 2D elementales
4.1.1 Función PLOT
4.1.2 Estilos de Línea y Marcadores para PLOT
4.1.3 Añadir Líneas a un gráfico ya existente
4.1.4 Comando SUBPLOT
4.1.5 Control de los Ejes
4.2 Control de ventanas gráficas: Función Figure
4.3 Otras funciones gráficas 2-D
5. Gráficos tridimensionales
5.1 Tipos de funciones gráficas tridimensionales
5.1.1 Dibujo de líneas: Función PLOT3
5.1.2 Dibujo de mallados: Funciones MESHGRID, MESH Y SURF
5.1.3 Dibujo de líneas de contorno: Función CONTOUR
5.2. Elementos Generales: Ejes, Puntos de vista, líneas ocultas,…
Pág -3-
Manual de Iniciación a GNU Octave
6. Otros aspectos de GNU Octave
6.1 Guardar variables y estados de una sesión: Comandos save y load
6.2 Guardar sesión: Comando diary
6.3 Medida de tiempos y de esfuerzo de cálculo
6.4. Funciones de función
6.4.1 Integración numérica de funciones
6.4.2 Integración Numérica de Ecuaciones Diferenciales Ordinarias
Pág -4-
Manual de Iniciación a GNU Octave
1. Operaciones Básicas
1.1. Operaciones con matrices y vectores
Como se comentó en la introducción que hemos visto en el punto anterior, GNU
Octave es un programa creado para trabajar con matrices, por lo tanto, este punto es
probablemente el más importante y en el que mejor tenemos que aclararnos para
empezar a trabajar. Tenemos muchas opciones para trabajar con ellas, podemos
intercambiar matrices, permutarlas, invertirlas; GNU Octave es una herramienta de
cálculo muy potente en lo que a matrices se refiere.
1.1.1. Introducción de matrices desde el teclado
Las matrices y vectores son variables del programa cuyos nombres podemos
definir, siempre y cuando no utilicemos los caracteres que el programa tiene como
caracteres prohibidos.
Para definir una matriz en GNU Octave se determina el número de filas y de
columnas en función del número de elementos que se proporcionan (o se utilizan). Las
matrices se definen por filas; los elementos de una misma fila están separados por
blancos o comas, mientras que las filas están separadas por pulsaciones intro o por
caracteres punto y coma (;). Tomemos como ejemplo:
octave:31> a=[1 1; 2 5]
Cuya salida será:
a =
1 1
2 5
A partir de este momento la matriz a está disponible para hacer cualquier tipo de
operación con ella (además de valores numéricos, en la definición de una matriz o
vector se pueden utilizar expresiones y funciones matemáticas). Por ejemplo, una
Pág -5-
Manual de Iniciación a GNU Octave
sencilla operación con a es hallar su matriz traspuesta. En GNU Octave, el apóstrofo
(') es el símbolo de trasposición matricial. Para calcular a’ (traspuesta de a) basta
teclear lo siguiente (se añade a continuación la respuesta del programa):
octave:32> a’
ans =
1 2
1 5
Como el resultado de la operación no ha sido asignado a ninguna otra matriz,
GNU Octave utiliza un nombre de variable por defecto (ans, de answer), que contiene
el resultado de la última operación. La variable ans puede ser utilizada como operando
en la siguiente expresión que se introduzca. También podría haberse asignado el
resultado a otra matriz llamada b.
Ahora vamos a definir una matriz b diferente para hacer operaciones básicas
con estas 2 matrices:
octave:32> b=[7 6; 8 3]
b =
7 6
8 3
Comenzamos con las operaciones más básicas que podemos encontrar, la suma
y la resta de matrices:
octave:33> a + b
ans =
8 7
10 8
octave:34> a -b
ans =
-6 -5
-6 2
Si realizamos la multiplicación de matrices con el operando * tendremos que
tener cuidado con que el número de columnas de la primera matriz debe coincidir con el
número de filas de la segunda:
Pág -6-
Manual de Iniciación a GNU Octave
octave:35> a * b
ans =
15 9
54 27
También podemos utilizar una multiplicación elemento a elemento, que aunque
no tiene demasiado sentido como multiplicación de matrices, si que es muy utilizable en
el caso de que la matriz no sea más que un conjunto ordenado de valores.
octave:36> a .* b
ans =
7 6
16 15
A continuación vamos a definir una nueva matriz a a partir de una función que
genera valores aleatorios entre 0 y 1.
octave:4> a=rand(3); #generar una matriz aleatoria de 3x3
octave:5> a
a =
0.6086115 0.0010003 0.3250563
0.4910289 0.2250230 0.4538064
0.6238124 0.5558372 0.9002053
Vamos ahora a crear una matriz 3x3 para realizar nuevos cálculos a partir de una
matriz más manejable si queremos comprobar a mano los datos que creamos.
octave:6> a=[1 2 1;1 2 3;4 3.4 4.5]
a =
1.0000 2.0000 1.0000
1.0000 2.0000 3.0000
4.0000 3.4000 4.5000
A partir de esta matriz a calculamos su inversa con el comando inv(a):
octave:7> b=inv(a)
b =
Pág -7-
Manual de Iniciación a GNU Octave
-0.13043 -0.60870 0.43478
0.81522 0.05435 -0.21739
-0.50000 0.50000 0.00000
Podemos comprobar multiplicando una por la otra que el cálculo es correcto:
octave:9> c=a*b
c =
1.00000 0.00000 0.00000
0.00000 1.00000 0.00000
0.00000 0.00000 1.00000
Si los valores no son exactos podemos utilizar el comando round() ya que
debido a los errores de aproximación en los cálculos podemos encontrar valores como
2.3e-109 que representa un valor extremadamente pequeño.
Si queremos comentar las líneas de código que ejecutamos, a continuación de la
operación podemos poner un comentario anteponiendo el carácter # o %
octave:10> c=a*b #podemos ver que la matriz c es la matriz identidad
De igual manera que se define una matriz podemos definir un vector:
octave:49> b=[2 0 0]
b =
2 0 0
octave:50> b=[2 0 0]’
b =
2
0
0
Como podemos observar, podemos definir vectores fila y vectores columna, con
sólo hacer la traspuesta del vector en la definición. También podemos definir un vector
columna como si hicieramos una matriz de 1xn
octave:46> b=[1;0];
Como podemos ver, no hemos obtenido resultado tras realizar la operación; esto
es debido a que hemos puesto un “;” al final de la línea de comando, esto hace que no
salga por pantalla lo que hemos ejecutado, cosa que resulta muy útil cuando las
Pág -8-
Manual de Iniciación a GNU Octave
matrices/vectores son de un número muy grande (100, 1000, …) y por lo tanto, difíciles
de manejar visualmente.
En GNU Octave se accede a los elementos de un vector poniendo el índice entre
paréntesis (por ejemplo x(3) ó x(i)). Los elementos de las matrices se acceden poniendo
los dos índices entre paréntesis, separados por una coma (por ejemplo A(1,2) ó A(i,j)).
Las matrices se almacenan por columnas (aunque se introduzcan por filas, como se ha
dicho antes), y teniendo en cuenta esto puede accederse a cualquier elemento de una
matriz con un sólo subíndice. Por ejemplo, si A es una matriz (3x3) se obtiene el mismo
valor escri
Comentarios de: Manual de iniciación a GNU Octave (0)
No hay comentarios