2016-08-31 4 views
7

nullspace(A)は、行列Aのヌルスペースの基底を求めます。返されるベクトルは浮動小数点座標を持ちます。行列Aが整数行列の場合、整数座標で基底を見つけることができます。 Mathematicaの、例えば整数行列の完全整数零空間?

NullSpace[RandomInteger[{-10, 10}, {3, 4}]] 

は常に整数ベクトルを返します。

Juliaの整数行列の整数基底を計算する方法はありますか?

更新:Nemo.jlでビルドエラーが発生しました(Dan Getzのコメントへのコメントを参照)。一方、代替手段はありますか?

+0

この魔法を理解できたら助かりますか? WolframAlphaで 'NullSpace [RandomInteger [{-10,10}、{3,4}]]'を実行しました。これは '[-9 5 3 -9; 0 5 -10 8; -3 -10 7 5] 'は' [-56; 440; 639; 310] 'であるが、その2つの行列 - ベクトル積は非ゼロであるか? (具体的には '[1831; -1710; 1791]'です) –

+0

@AhmedFasihトランスポーズしよう – becko

+0

3x4の行列なので、何を置き換えるべきか分かりません... –

答えて

7

Nemo.jlはJuliaの代数のパッケージです。それには多くの機能があり、空き領域も計算できるようにする必要があります。それについて移動する一つの方法は、次のようになります。dはゼロ空間の次元であり、bmatは、その列の根拠を持っている

using Nemo # install with Pkg.add("Nemo") 

S = MatrixSpace(ZZ, 3, 4) 
mm = rand(-10:10,3,4) 
m = S(mm) 
(bmat,d) = nullspace(m) 

た後。

希望します(他の代数パッケージを使用する可能性のある代替ソリューションが表示されます)。

+0

エラー:Nemoでエラーが発生しました:エラー:LoadError:コンパイルエラー__init__:ライブラリを読み込めませんでした "/ opt/julia/v0。 4/Nemo/local/lib/libpari " – becko

+0

' nullspace'の出力(特にヌルベクタ)を出力できますか?それらは整数ですか? – becko

+1

@beckoは私のために働く: 'm = S([ - 9 5 3 -9; 0 5 -10 8; -3 -10 7 5]); (bmat、d)=ヌルスペース(m) 'プリントアウト '([65] [288] [300] [195]、1)'。ですから、ゼロ空間ベクトルは整数であり、 'm * bmat'はゼロベクトルであることが確認されました。 –