RowReduceをmod変数でどのように使用できますか?


2

フィールドにRowReduceを使用できます。

{{1,0,22},{0,1,2}} 

を...だから、我々は効果的にフィールドに線形システムを解決しています:たとえば、私たちはその後、返し

RowReduce[{{1,3,5},{0,1,2}},Modulous->23] 

を...述べます。

QUESTION

我々は何とかすなわちシンボリックシステムを解決するため、変数を使用してシステムを解決するためにこれを使用することはできますか? 例として、私は何とか解決したいと思います:より良い可能性が

{{1,0,a - 3b},{0,1,b}} 

か::

{{1,0,a + 20b},{0,1,b}} 

RowReduce[{{1,3,a},{0,1,b}},Modulous->23] 

アイデアは、我々は基本的に何かを述べる結果を得るべきであるということです

最初の結果は、modulousが含まれていないソリューションに過ぎません。私は2番目の結果を得るための方法があるのだろうかと思っています。

  0

'RowReduce [{{1、3、A}、{0、1、B}}]'、{1 { '与えます0、a-3 b}、{0,1、b}}となる。あなたが望むように見えるのは、これの各要素がモジュラスによって削減されることだけです。 26 8月. 132013-08-26 00:54:59

  0

@bills:の並べ替え私が持っている問題は、私がフィールドを使わなければ、値/係数は天文学的に大きいということです。ですから、可能であれば、もっと小さな係数で作業する方法を見つけたいと思います。最終的に、私がこの線形代数の部分から得た結果は、とにかくフィールドで使用されます。 26 8月. 132013-08-26 03:19:36

+1

nb [ここ](http://library.wolfram.com/infocenter/Conferences/325/)を確認してください。 「ガロア体の線形代数」の節を参照してください。 26 8月. 132013-08-26 18:57:58

  0

@DanielLichtblau:私が探している解決策があるようです。残念ながら、Groebner Basisを理解するための数学的背景はありません。誰かがこのコードを本質的に$ pを法とする整数で動作するものに変換できるのであれば、私は感謝しています。 26 8月. 132013-08-26 19:08:15

  0

本質的に変換されました。 26 8月. 132013-08-26 19:24:45

3

コメントごとに、これはノートブックからの "Galoisフィールドの線形代数"に基づいていますhere。 (その年齢を考えれば、どれくらいの頻度で必要と思われるかに驚くかもしれません)。

パッケージコード:

rowReduceModP[mat_?MatrixQ, p_] /; PrimeQ[p] := Module[ 
    {n = Length[mat[[1]]], z, newvars, gb}, 
    newvars = Array[z, n]; 
    gb = GroebnerBasis[mat.newvars, newvars, 
    CoefficientDomain -> RationalFunctions, Modulus -> p]; 
    Reverse[Outer[D, gb, newvars]] 
    ] 

例:

mat = {{1, 3, a}, {0, 1, b}}; 
rowReduceModP[mat, 23] 

(* Out[42]= {{1, 0, a + 20 b}, {0, 1, b}} *)