Rank

Retorna el rango de una matriz utilizando el método de Gauss.

int  Rank()

Valor retornado

Rango de la matriz.

Observación

El rango de un sistema de filas (columnas) de una matriz A con m filas y n columnas es el número máximo de filas (columnas) linealmente independientes. Varias filas (columnas) se llaman linealmente independientes si ninguna de ellas se expresa linealmente a través de otras. El rango de un sistema de filas es siempre igual al rango del sistema de columnas, y este número se denomina rango de la matriz.

Ejemplo en MQL5:

  matrix a=matrix::Eye(44);;
  Print("matrix a \n"a);
  Print("a.Rank()="a.Rank());
 
  matrix I=matrix::Eye(44);
  I[33] = 0.;    // déficit de la matriz
  Print("I \n"I);
  Print("I.Rank()="I.Rank());
 
  matrix b=matrix::Ones(14);
  Print("b \n"b);
  Print("b.Rank()="b.Rank());;// 1 dimensionalidad - rango 1, solo si no todos son "0"
 
  matrix  zeros=matrix::Zeros(41);
  Print("zeros \n"zeros);
  Print("zeros.Rank()="zeros.Rank());
 
  /*
  matrix a
  [[1,0,0,0]
  [0,1,0,0]
  [0,0,1,0]
  [0,0,0,1]]
  a.Rank()=4
 
  I
  [[1,0,0,0]
  [0,1,0,0]
  [0,0,1,0]
  [0,0,0,0]]
  I.Rank()=3
 
  b
  [[1,1,1,1]]
  b.Rank()=1
 
  zeros
  [[0]
  [0]
  [0]
  [0]]
  zeros.Rank()=0
  */

 

Ejemplo en Python:

import numpy as np
from numpy.linalg import matrix_rank
a=(np.eye(4)) # Full rank matrix
print("a \n"a)
print("matrix_rank(a)=",matrix_rank(a))
I=np.eye(4)
I[-1,-1] = 0# rank deficient matrix
print("I \n",I)
print("matrix_rank(I)=",matrix_rank(I))
 
b=np.ones((4,))
print("b \n",b)
print("matrix_rank(b)=",matrix_rank(b)) # 1 dimension - rank 1 unless all 0
 
zeros=np.zeros((4,))
print("zeroes \n",zeros)
print("matrix_rank(zeros)=",matrix_rank(zeros))
 
a 
 [[1000.]
 [0100.]
 [0010.]
 [0001.]]
matrix_rank(a)= 4
 
I 
 [[1000.]
 [0100.]
 [0010.]
 [0000.]]
matrix_rank(I)= 3
 
b 
 [1111.]
matrix_rank(b)= 1
 
zeroes 
 [0000.]
matrix_rank(zeros)= 0