Rank

利用高斯(Gaussian)方法返回矩阵的秩。

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.;    // 无秩矩阵
  Print("I \n"I);
  Print("I.Rank()="I.Rank());
 
  matrix b=matrix::Ones(14);
  Print("b \n"b);
  Print("b.Rank()="b.Rank());;// 1 维 - 秩为 1 除外所有 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
  */

 

Python 示例:

import numpy as np
from numpy.linalg import matrix_rank
a=(np.eye(4)) #   矩阵
print("a \n"a)
print("matrix_rank(a)=",matrix_rank(a))
I=np.eye(4)
I[-1,-1] = 0#  缺乏 矩阵x
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  - 秩为 1 除外 全部 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