python - 找到所有可逆方阵

标签 python numpy matrix algebra

我想编写一个函数,给定两个整数“n”和“p”,它生成所有 n 阶可逆矩阵,其中元素来自 {0,1,...,p-1}。 我有以下代码:

import itertools 
import numpy as np 

def invertible_matrices(n, p):
    invertibleMatrices = set()
    # generates all the possible matrices
    x = [y for y in range(p)]
    a = [j for j in itertools.product(x, repeat=n)]
    b = {k for k in itertools.product(a, repeat=n)}
    for each in b:
        if np.linalg.det(each) != 0:
            invertibleMatrices.add(each)
    return invertibleMatrices

对于 n=2p=2 工作正常,但对于 n=2p=3 > 我得到 50,而答案是 48。 任何帮助将不胜感激。

p.s:如果你熟悉群论,我正在尝试找到 GL(n, p) 的所有元素(具有 p 个元素的有限域上的一般线性群)

最佳答案

我猜你想要模 p 的行列式(这是 GL(n,p) 上下文中的行列式,即在具有 p 元素的有限域上)。

if not np.isclose((np.linalg.det(each)+1)%p,1):
    invertibleMatrices.add(each)

注意:+1 是为了避免出现小的数字错误。

关于python - 找到所有可逆方阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62424142/

相关文章:

R-如何从距离矩阵中获取匹配元素的行和列下标

excel公式如何建立相似度矩阵

python - 在 SQLite 中关闭游标或连接之间有什么区别吗?

python - Pandas 选择倒数第二列也不是 nan

python - 代码库应用更新机制设计

python - 在 Python 中查找 2D np.array 中的局部最小值

c++ - 如何优化 N 个滤波器组 vector ?

python - Behave 测试框架的测试覆盖工具

python - 将逻辑矩阵(假/真)映射到 uint8 矩阵(0/255)的更有效方法?

python - 如何在python中将多个numpy文件附加到一个numpy文件中