在Sage中求解GF(2)上的矩阵方程



我正试图在Sage中求解一个线性方程组。但是,我只想打印唯一的解决方案。我尝试过使用A.solve_right(y),其中A is coefficient matrixy is the right hand side (Ax = y)。但是,当存在多个解决方案时,这会返回一个解决方案。我试着检查行列式是否为0,但这只适用于有平方矩阵的情况。

我一直在想两种方法,但在Sage:中找不到合适的方法来实现我的想法

  1. 求解m变量的n方程组的方法。每当我调用A.solve(x)时,其中A是n x m矩阵,x是长度为n的向量,我应该得到异常"No unique solution""(如果没有或有多个解),或者如果它是唯一的,则得到该解
  2. 方法,该方法允许我向矩阵A添加行。当我添加新行时,我会检查它是否是前几行的线性组合,如果是,我会忽略该行。否则,我添加新行。当我获得n x n matrix A时,我会检查determinant is not zero是否正确并打印解决方案。否则我抛出异常"No unique solution"

我一直在网上寻找解决方案,但没有成功。我想一定有一些简单的方法可以实现这一点,但我的截止日期很短,无法深入了解Sage文档。欢迎提出任何建议!

使用galois(python),您可以使用找到矩阵的rref

import galois
GF = galois.GF(2)
g = GF(x=matrix.astype(int))
g.row_reduce()

相关内容

  • 没有找到相关文章

最新更新