Estas son algunos ejemplos de constantes numéricas con valores reales. Todas tienen el mismo valor:
105
1.05e+2
1050e-1
Para valores complejos:
3 + 4i
3.0 + 4.0i
0.3e1 + 40e-1i
`i'
denota la unidad imaginaria.
Las matrices son entradas entre corcheter por filas. Los elementos en la misma fila van separados por comas y las filas van separadas por punto y coma:
octave> a = [1, 2; 3, 4]
a =
1 2
3 4
octave>
Los elementos que inervienen en una matriz pueden ser expresiones arbitrarias mientras que las dimensiones tengan sentido cuando se combinan entre si:
octave> [a , a]
ans =
1 2 1 2
3 4 3 4
octave> [a ; a]
ans =
1 2
3 4
1 2
3 4
octave> [a ; [1 1] ]
ans =
1 2
3 4
1 1
octave> [a , [1 1] ]
error: number of rows must match
octave>
Las funciones `columns()'
, `rows()'
, `length()'
y `size()'
permiten
inspeccionar las diferentes dimensiones de las matrices. `size()'
retorna
un vector de dos componentes con el número de columnas y de filas,
mientras que `columns()'
y `rows()'
retornan cada uno de esos valores
por separado. `length()'
retorna el maximo de ambas dimensiones: su
uso está orientado a vectores ya sean horizontales o verticales.
octave> a=rand(3,5)
a =
0.700263 0.029678 0.858449 0.836040 0.205443
0.814676 0.162003 0.361927 0.325249 0.740022
0.223069 0.722034 0.221037 0.202889 0.606426
octave> columns(a)
ans = 5
octave> rows(a)
ans = 3
octave> size(a)
ans =
3 5
octave> b=rand(5,1);
octave> length(b)
ans = 5
octave> length(a)
ans = 5
octave> length(b)
ans = 5
octave> length(b')
ans = 5
octave> columns(b)
ans = 1
octave> columns(b')
ans = 5
octave>
Además, existen funciones básicas que retornan valores Booleanos
(1=true, 0=false): `is_empty(A)'
, `is_vector (A)'
, `is_scalar (A)'
,
`is_square (X)'
, `is_symmetric (X, TOL)'
.
Un "rango" es una forma conveniente de construir vectores con
elementos espaciados uniformemente. El rango esta definido por el
valor inicial, incremento (opcional) y valor final separados por
`:'
. Si el incremento no está se asume 1.
octave> a=1:0.5:3
a =
1.0000 1.5000 2.0000 2.5000 3.0000
octave> a=5:10
a =
5 6 7 8 9 10
octave>
Los rangos son muy utilizados para controlar los valores que toman los índices en los lazos. Sin embargo el rango no es convertido explícitamente a vector hasta que esto es necesario para ahorrar memoria. Por ejemplo si queremos hacer un lazo (esto se ver después) de 1 a 1000000 y lo ponemos de la forma 1:1000000, esto generaría en principio un vector de longitud 1000000 de reales doble precisión, lo cual consume 8Mb de memoria RAM.
Otro punto a tener en cuenta en cuanto a los rangos es que (debido a
errores de redondeo) el punto final puede no estar dentro del vector
generado. En el caso de que esto sea absolutamente necesario debe
usarse en su lugar la función `linspace()'
.
Next Chapter, Previous Chapter
Table of contents of this chapter, General table of contents
Top of the document, Beginning of this Chapter