按单元取整数的矩阵/数组元素的检查条件

Checking condition on matrix/array element-wise modulo an integer

提问人:Scipham 提问时间:5/11/2021 最后编辑:Scipham 更新时间:5/11/2021 访问量:313

问:

我的目的是检查矩阵(即二维数组)模 d 是否是辛的(参见维基百科上的条件:https://en.wikipedia.org/wiki/Symplectic_matrix)。也就是说,矩阵集中是否存在任何元素相等模数 d 的辛矩阵。

有没有合乎逻辑且特别有效的方法来检查这种涉及矩阵乘法的条件,而无需遍历(可能的)无限矩阵? 但是,目标语言是 Julia,如果有人有 python 解决方案,那也很好。Julia 中没有模 d 条件的条件现在以这种方式实现(容差为 0.001,M 是 2n x 2n 数组):

omega = [zeros((n,n)) Matrix(1I, n, n)); -Matrix(1I, n, n) zeros((n,n))]

isSymplec = maximum(abs.(transpose(M)*(omega*M) - omega)) < 0.001

举个简单的例子:数组/矩阵 [1 0 0 0; 1 1 0 0; 0 0 1 1; 0 0 0 1] 不是辛的,但有一个模 2 辛的“等价”伙伴:[1 0 0 0; 1 1 0 0; 0 0 1 -1; 0 0 0 1]

python numpy 数学 矩阵 julia

评论

1赞 obchardon 5/12/2021
所以你需要知道是否至少存在一个这样的矩阵?因为对于您的示例,有无限多个可能的解决方案,我们看到每个矩阵(其中为正整数)将是一个解决方案。[1 0 0 0; n 1 0 0; 0 0 1 -n; 0 0 0 1]n
2赞 Jérôme Richard 5/12/2021
我认为这是一个非常困难的数学问题,而不是一个编程问题,所以在 math.stackexchange.com 上问这个问题应该是一个好主意。
0赞 Scipham 5/12/2021
@obchardon我同意这种情况,但可以肯定的是,任何输入都不是这种情况。这只是一个简单的案例之一。但是,是的,事实上,这不是真正找到明确解决方案的练习,而是是否有任何解决方案。这就是为什么我理解,但不同意杰罗姆·理查德(Jerome Richard)的观点,这是一个数学问题,因为要统计的条件很清楚。这是关于如何告诉计算机根据此条件回答是/否问题。使它变得困难的是涉及矩阵乘法的事实。
2赞 obchardon 5/12/2021
即使要满足的条件是明确的,你也可能需要检查无限数量的可能矩阵。因此,您需要一个数学技巧(如果有的话),以减少所需的计算次数。我同意@JérômeRichard,这个问题更适合数学堆栈交换
0赞 Scipham 5/12/2021
谢谢,伙计们,我会在那里尝试并尽快结束这个问题。

答: 暂无答案