5

Weisstein の予想 (https://cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.pdf) に関連する問題に取り組んでいるときに、n = 2、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 表現を使用し、分割して行列を作成しました。他の (より効率的な?) 方法があるはずです。

4

1 に答える 1

9

組み込みのMathematica関数を使用できますTuples。3x3の例は単純に次のようになります

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

順序の列挙は2進数で行うことができます

FromDigits[#, 2] & /@ Flatten /@ ms

ここに画像の説明を入力してください

順序を視覚化するには:

ArrayPlot[#, ImageSize -> 20, Mesh -> All] & /@ ms

ここに画像の説明を入力してください

于 2012-12-30T13:46:24.670 に答える