GNU OCTAVE Principales caracter´ısticas • lenguaje de alto nivel

Anuncio
GNU OCTAVE
Principales caracterı́sticas
• lenguaje de alto nivel orientado al cálculo numérico
• software libre distribuido bajo licencia GNU GPL
• prácticamente compatible con Matlab
• página principal http://www.gnu.org/software/octave/
• contribuciones adicionales en http://octave.sourceforge.net/
• entorno gráfico QtOctave: http://qtoctave.wordpress.com/
Algunas referencias de consulta
• J. W. Eaton, D. Bateman, S. Hauberg; GNU Octave Manual.
Editado por Network Theory Ltd
http://www.network-theory.co.uk/octave/manual/
También incluido en formato pdf con el código
• G. Borrell; Introducción informal a Matlab y Octave.
Puede consultarse en http://iimyo.forja.rediris.es/
OCTAVE COMO CALCULADORA
0. Reglas de empleo y operaciones elementales
• Variables matriciales con valores complejos (otros tipos de variables: cadenas de caracteres, estructuras y celdas)
• Almacenamiento de variables
octave:1>
octave:2>
octave:3>
octave:4>
A
B
C
D
=
=
=
=
[
[
[
[
2 4.5; 7 89]
2 , 4.5; 7 , 89]
2 4.5 7 89]
2i 4.5-i; 7-3i 89]
• Consulta y modificación de posiciones
octave:5> D(1,2) = 4.5+i
• Nombres admisibles para variables en Octave
Preferentemente combinaciones de letras y números (también guión
bajo) que han de comenzar con una letra
A1, ABC, C89RT, ...
Distingue entre mayúsculas y minúsculas
A1, a1, ABC, AbC, ABc, C89RT, c89rT ...
• Operaciones elementales
+ : suma (de matrices, vectores o escalares)
− : diferencia (de matrices, vectores o escalares)
∗ : producto (de matrices, vectores o escalares)
ˆ ó ∗∗ : potencia (de matrices o escalares)
/ : división a la derecha (A/B devuelve A B −1 )
\ : división a la izquierda (A\b devuelve A−1 b)
´ : trasposición (conjugada) de matrices
• Operaciones elemento a elemento
.∗
.ˆ
.∗∗
.\
2
./
• Expresiones en Octave
Alternativa 1: variable = expresión
octave:6> E1 = B * D
octave:7> E2 = E1 * D ;
octave:8> E2 = E2+D^2
Alternativa 2: expresión
octave:9> B * D
octave:10> E1 * D ;
octave:11> E2+D^2
• Notación : en Octave
creación de tablas de puntos equiespaciados
octave:12> x = 1:10
octave:13> y = 0:0.01:5
referencias a bloques de matrices
octave:14> A = [ 1 2 3 4 5; 10 9 8 7 6; 11 12 13 14 15]
octave:15> B = A(:,2)
octave:16> C = A(2,:)
octave:17> D = A(:,2:5)
• Listados de variables y programas: who y whos
• Borrado de variables y programas: clear
• Variables permanentes: eps, pi, i, j, realmax, realmin, ...
• Formatos de salida: format short y format long
• Almacenamiento y lectura de variables: save y load
• Instrucciones del sistema operativo: ls, cd, pwd ...
otras instrucciones: system(’instruccion’)
• Llamada a la ayuda desde intérprete: help, help -i y doc
ayuda en formato .html en QtOctave
3
1. Algunas funciones básicas
• Funciones para la creación de matrices especiales: Matrix Manipulation
eye, zeros, ones, diag
• Funciones escalares (elemento a elemento): Arithmetic
sin, cos, tan, asin, acos, atan, sinh, cosh, tanh
exp, log, log10, sqrt
abs, arg, conj, real, imag
rem, sign, round, floor, ceil ...
• Funciones vectoriales (operaciones por columnas): Arithmetic y Statistics
max, min, sort, sum, prod
median, mean, std, cov
• Funciones matriciales: Linear Algebra
eig, inv, size, norm, det, cond, rank, trace
expm, sqrtm, lu, qr, chol, schur
2. Biblioteca de métodos numéricos
• Álgebra lineal numérica: Linear Algebra
• Resolución de ecuaciones no lineales: Nonlinear Equations
• Interpolación polinómica: Polynomial Manipulation e Interpolation
• Integración numérica: Quadrature
• Optimización: Optimization
• Resolución de ecuaciones diferenciales: Differential Equations
• Más contribuciones en: http://octave.sourceforge.net/
4
OCTAVE COMO ENTORNO DE PROGRAMACIÓN
0. Caracterı́sticas generales
• Lenguaje de programación interpretado (no compilado)
• Las funciones intrı́nsecas de Octave sı́ están compiladas
• Permite emplear llamadas a funciones compiladas (en C++)
1. Archivos de instrucciones
• Almacenan secuencias de instrucciones de Octave (con control de flujo)
• Se guardan en archivos con la extensión .m (para garantizar la compatibilidad con MATLAB)
• Las instrucciones se procesan llamando al archivo desde el espacio de
trabajo (tecleando el nombre del archivo)
2. Construcción de funciones
• Crean nuevas funciones de Octave
• Se guardan en archivos con la extensión .m
• El nombre de la función ha de coincidir con el nombre del archivo donde
se guarda
• La primera lı́nea en el archivo define el modo de llamar a la función
function [vs1,vs2,...,vsm]=nombre(ve1,ve2,...,ven)
donde vs1,vs2,...,vsm representan los nombres (locales) de las variables
de salida, nombre representa el nombre de la función (que ha de coincidir
con el nombre del archivo donde se guarda) y ve1, ve2,...,ven representan
los nombre (locales) de las variables de entrada
• Puede (y debe) incluir comentarios que sirvan de ayuda al usuario
5
Ejemplo: escritura de una función para el cálculo de las raı́ces de una ecuación
de segundo grado
function [z1,z2]=raices(a,b,c)
%RAICES Calcula raices de una ecuacion de segundo grado
% [z1,z2]=raices(a,b,c) devuelve en z1 y z2 las raices
% de la ecuacion a*x^2+b*x+c=0
d=sqrt(b*b-4*a*c);
z1=(-b+d)/(2*a);
z2=(-b-d)/(2*a);
que puede ser llamada desde el espacio de trabajo
octave:18> [r,s] = raices(1,0,-4)
para guardar en r y s las raı́ces de la ecuación x2 − 4 = 0. Para consultar el
uso de la nueva función: help raices
3. Control de flujo: programación de bucles
• Repiten una operación un número definido (bucle incondicional) o condicionado (bucle condicional) de veces
• Forma elemental de bucle incondicional
for i=1:n
lista de instrucciones
end
Ejemplo:
octave:19> x = [ ];
octave:20> for i=1:5
> x = [ x , i^2 ]
> end
6
• Los bucles pueden ser anidados
octave:21> H = [ ];
octave:22> for i=1:3
> for j=1:4
> H(i,j) = 1/(i+j-1)
> end
> end
• En la escritura de programas es habitual hacer un sangrado de las lı́neas
correspondientes a la lista de instrucciones (hace más fácil la lectura)
• Forma elemental de bucle condicional
while condicion
lista de instrucciones
end
• Escritura de condicion mediante operadores de relación
<
>
==
(menor que)
(mayor que)
(igual que)
<=
(menor o igual que)
>=
(mayor o igual que)
∼= ó ! =
(distinto de)
y operadores lógicos
&
(y lógico)
|
(o lógico)
∼ ó !
(no lógico)
• Ejemplo: Encontrar el menor entero no negativo n tal que 2n ≥ 15
octave:23> n = 0;
octave:24> while 2^n < 15
> n = n + 1
> end
7
3. Control de flujo: programación de condicionales
• Llevan a cabo o no una lista de instrucciones dependiendo de la veracidad
de una condición
• A diferencia de los bucles condicionales, la lista de instrucciones sólo se
lleva a cabo una vez
• Forma elemental de la estructura condicional
if condicion
lista de instrucciones
end
• Forma completa de la estructura condicional
if condicion
lista A de instrucciones
else
lista B de instrucciones
end
• Las estructruras condicionales también pueden anidarse
• Ejemplo (modificación de la función raices):
if a == 0
z1=-c/b;
z2=[];
else
d=sqrt(b*b-4*a*c);
z1=(-b+d)/(2*a);
z2=(-b-d)/(2*a);
end
8
Descargar