Rank

가우스 방법을 사용하여 행렬 순위를 반환합니다.

int  Rank()

반환값

행렬의 순위.

참조

m개의 행과 n개의 열을 갖는 행렬 A의 행(또는 열)의 시스템의 순위는 선형적으로 독립인 행(또는 열)의 최대 개수입니다. 여러 행(열) 중 어느 것도 다른 항목에 대해 선형으로 표현할 수 없는 경우 선형 독립이라고 합니다. 행 시스템의 순위는 항상 열 시스템의 순위와 같습니다. 이 값을 행렬의 순위라고 합니다.

MQL5 예:

  matrix a=matrix::Eye(44);;
  Print("matrix a \n"a);
  Print("a.Rank()="a.Rank());
 
  matrix I=matrix::Eye(44);
  I[33] = 0.;    // rank deficient matrix
  Print("I \n"I);
  Print("I.Rank()="I.Rank());
 
  matrix b=matrix::Ones(14);
  Print("b \n"b);
  Print("b.Rank()="b.Rank());;// 1 dimension - rank 1 unless all 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
  */

 

파이썬 예:

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