Rank

Restituisce il rango della matrice utilizzando il metodo Gaussiano.

int  Rank()

Valore Restituito

Rango della matrice.

Note

Il rango di un sistema di righe (o colonne) di una matrice A che ha m righe e n colonne è il numero massimo di righe (o colonne) indipendenti linearmente. Diverse righe (colonne) sono chiamate linearmente indipendenti se nessuna di esse può essere espressa linearmente in termini di altre. Il rango del sistema di righe è sempre uguale al rango del sistema di colonne. Questo valore è chiamato rango della matrice.

Esempio in MQL5:

  matrix a=matrix::Eye(44);;
  Print("matrix a \n"a);
  Print("a.Rank()="a.Rank());
 
  matrix I=matrix::Eye(44);
  I[33] = 0.;    // rango di matrice insufficente
  Print("I \n"I);
  Print("I.Rank()="I.Rank());
 
  matrix b=matrix::Ones(14);
  Print("b \n"b);
  Print("b.Rank()="b.Rank());;// 1 dimensione - rango 1 salvo tutti 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
  */

 

Esempio in 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