Rank
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