2012-12-30 10 views
5

Weissteinの推測(https://cs.uwaterloo.ca/journals/JIS/VOL7/Sloane/sloane15.pdf)に関連する問題を扱いながら、私はすべてを生成する必要がありましたn x n(0,1)の行列n = 2,3,4 ...正しいバイナリシーケンスについて考えてそれに応じて分割するのはあまり難しくありません。例えば、ここではすべての3×3つの行列されていますすべての(0,1)nxn行列を生成する

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^2(n^2)までの整数の基数2の表現を使用し、マトリクスを作るために分割しました。他の(より効率的な)方法が必要です。

+0

[cstheory](http://cstheory.stackexchange.com)にはもっと適しているかもしれませんが、あまりにも基本的なために鼻をかき鳴らすかもしれません。=^_^= –

答えて

8

組み込みのMathematica関数Tuplesを使用できます。

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

enter image description here

:あなたの3x3の例は、単純に順序の列挙は、順序を視覚化するために二進数

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

enter image description here

によって行うことができる

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

なり

関連する問題