Características de matrices y vectores

El siguiente grupo de métodos permite obtener las principales características de las matrices:

  • Rows, Cols: número de filas y columnas de la matriz
  • Norm: una de las normas de matriz predefinidas (ENUM_MATRIX_NORM)
  • Cond: número de condición de la matriz
  • Det: determinante de una matriz cuadrada no degenerada
  • SLogDet: calcula el signo y el logaritmo del determinante de la matriz
  • Rank: rango de la matriz
  • Trace: suma de los elementos a lo largo de las diagonales de la matriz (traza)
  • Spectrum: espectro de una matriz como conjunto de sus valores propios

Además, se definen las siguientes características para los vectores:

  • Size: longitud del vector
  • Norm: una de las normas de vector predefinidas (ENUM_VECTOR_NORM)

Los tamaños de los objetos (así como la indexación de los elementos que los componen) utilizan valores del tipo ulong.

ulong matrix<T>::Rows()

ulong matrix<T>::Cols()

ulong vector<T>::Size()

La mayoría de las demás características son números reales.

double vector<T>::Norm(const ENUM_VECTOR_NORM norm, const int norm_p = 2)

double matrix<T>::Norm(const ENUM_MATRIX_NORM norm)

double matrix<T>::Cond(const ENUM_MATRIX_NORM norm)

double matrix<T>::Det()

double matrix<T>::SLogDet(int &sign)

double matrix<T>::Trace()

El rango y el espectro son, respectivamente, un número entero y un vector.

int matrix<T>::Rank()

vector matrix<T>::Spectrum()

Ejemplo de cálculo del rango de una matriz:

matrix a = matrix::Eye(44);
Print("matrix a (eye)\n"a);
Print("a.Rank()="a.Rank());
   
a[33] = 0;
Print("matrix a (defective eye)\n"a);
Print("a.Rank()="a.Rank());
   
matrix b = matrix::Ones(14);
Print("b \n"b);
Print("b.Rank()="b.Rank());
   
matrix zeros = matrix::Zeros(41);
Print("zeros \n"zeros);
Print("zeros.Rank()="zeros.Rank());

Y este es el resultado de la ejecución del script:

matrix a (eye)
[[1,0,0,0]
 [0,1,0,0]
 [0,0,1,0]
 [0,0,0,1]]
a.Rank()=4
  
matrix a (defective eye)
[[1,0,0,0]
 [0,1,0,0]
 [0,0,1,0]
 [0,0,0,0]]
a.Rank()=3
  
b
[[1,1,1,1]]
b.Rank()=1
   
zeros
[[0]
 [0]
 [0]
 [0]]
zeros.Rank()=0