Rank

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

int  Rank()

返回值

矩阵的秩。

 

注意

具有 m 行和 n 列的矩阵 A 的行(或列)系统的秩是线性独立行(或列)的最大数目。 如果若干行(列)中无一可用其它行(列)线性表达,则称为线性独立。 行系统的秩始终等于列系统的秩。 此值称为矩阵的秩。

MQL5 示例:

  matrix a=matrix::Eye(4, 4);;

  Print("matrix a \n", a);

  Print("a.Rank()=", a.Rank());



  matrix I=matrix::Eye(4, 4);

  I[3, 3] = 0.;    // 无秩矩阵

  Print("I \n", I);

  Print("I.Rank()=", I.Rank());



  matrix b=matrix::Ones(1, 4);

  Print("b \n", b);

  Print("b.Rank()=", b.Rank());;// 1 维 - 秩为 1 除外所有 0



  matrix  zeros=matrix::Zeros(4, 1);

  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

 [[1. 0. 0. 0.]

 [0. 1. 0. 0.]

 [0. 0. 1. 0.]

 [0. 0. 0. 1.]]

matrix_rank(a)= 4



I

 [[1. 0. 0. 0.]

 [0. 1. 0. 0.]

 [0. 0. 1. 0.]

 [0. 0. 0. 0.]]

matrix_rank(I)= 3



b

 [1. 1. 1. 1.]

matrix_rank(b)= 1



zeroes

 [0. 0. 0. 0.]

matrix_rank(zeros)= 0