有没有好的方法可以找到特征域 p>0 中矩阵的秩?

Gas*_*ull 5 python numpy matrix

我需要一种有效的算法或已知的方法来确定矩阵 A 的数学秩,该矩阵的系数位于正特征域中。

例如,在 5 个元素的有限域中,我有以下矩阵:

import numpy
A=[[2,3],[3,2]]
print numpy.linalg.matrix_rank(A)
Run Code Online (Sandbox Code Playgroud)

此方法给出的结果为 2,但在特征 5 中,该矩阵自 以来排名为 1 [2,3]+[3,2]=[0,0]

NIL*_*sky 3

Numpy 没有对有限域的内置支持。代码中的矩阵A被视为实数矩阵,因此具有秩 2。

如果您确实需要使用 Numpy 支持有限字段,则必须自己定义自己的数据类型以及算术运算,如此处所示。当然,还存在对正确错误处理(例如除以零)的担忧。

即使如此,许多常见例程也必须重写才能支持您的字段数据类型。例如,从numpy.linalg.matrix_rank文档中,该例程使用奇异值分解 (SVD),该分解对于有限域没有很好的定义,因此您必须自己编写排名查找算法。

至于算法本身,您可以尝试沿着这些思路实现普通的旧高斯消除,但这可能会很麻烦并且非常慢,所以您可能会更好地使用其他工具/包,例如Sage

  • B = 矩阵(GF(5), [[2, 3],[3, 2]]) 和 B.rank() 有效 (2认同)