gpt4 book ai didi

wolfram-mathematica - 生成所有 (0,1) nxn 矩阵

转载 作者:行者123 更新时间:2023-12-04 08:13:34 25 4
gpt4 key购买 nike

在处理与韦斯坦猜想 (https://cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.pdf) 相关的问题时,我需要为 n = 2 生成所有 nxn (0,1) 矩阵, 3, 4,... 如果您考虑正确的二进制序列并相应地对它们进行分区,这并不太难。例如,这里是所有 3 x 3 矩阵:

With[{n = 3}, 
lis = PadLeft[IntegerDigits[#, 2], n^2]& /@ Range[0, 2^n^2 - 1];
mats = (Partition[#, n] & ) /@ lis
];

Weisstein 猜想涉及,对于每个 n = 2, 3, ...,计算其特征值都是实数和正数的矩阵的数量。对于 n = 2,有 3 个;对于 n = 3,有 25 个;对于 n = 4,有 543;等等。特征值计算耗时但简单。

不过,我感兴趣的是找到枚举 n x n 矩阵的其他方法。为了获得所有这些,我使用了高达 2^(n^2) 的整数的基数 2 表示并进行了分区以制作矩阵。必须有其他(更有效?)的方法。

最佳答案

我们可以使用内置的 Mathematica 函数 Tuples .您的 3x3 示例简单地变为

ms = Tuples[{1, 0}, {3, 3}];

排序的枚举可以通过二进制数来完成
FromDigits[#, 2] & /@ Flatten /@ ms

enter image description here

要可视化排序:
ArrayPlot[#, ImageSize -> 20, Mesh -> All] & /@ ms

enter image description here

关于wolfram-mathematica - 生成所有 (0,1) nxn 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14088720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com