2016-09-25 4 views
3

正の特性のフィールドの係数を持つ行列Aのthe mathematical rankを求めるには、効率的なアルゴリズムまたは既知の方法が必要です。例えば特性p> 0のフィールドで行列のランクを見つける良い方法はありますか?

は、私は次の行列を持つ5つの要素の有限体に:

import numpy 
A=[[2,3],[3,2]] 
print numpy.linalg.matrix_rank(A) 

この方法は私の2の結果が得られますが、特徴的な5に、この行列は[2,3]+[3,2]=[0,0]以来、ランク1を有しています。

答えて

1

Numpyには有限フィールドの組み込みサポートがありません。あなたのコード内の行列Aは実数の行列として扱われ、したがって階数2を持ちます。

Numpyで実際に有限体をサポートする必要がある場合は、算術と一緒に独自のデータ型を定義する必要があります図のように自分で操作してください。hereもちろん、適切なエラー処理(ゼロでの除算など)に関する懸念があります。

でも、フィールドデータ型をサポートするために、多くの共通ルーチンを書き直す必要があります。たとえば、numpy.linalg.matrix_rankのドキュメントでは、ルーチンは有限体では明確に定義されていない特異値分解(SVD)を使用しているため、ランク検索アルゴリズムを自分でコーディングする必要があります。

アルゴリズム自体として、あなたはthese linesに沿って、昔ながらのガウス消去を実行試みることができるが、これは首の痛みと本当に遅いことができますので、あなたはおそらくセージのような他のツール/パッケージとしたほうが良いでしょう。

+0

** Sage **、MatrixSpace(GF(p)、2、2)をインストールし、関数ランクは –

+1

B = matrix(GF(5)、[2,3、 2]])とB.rank()作品 –

+0

素晴らしい!有限のフィールドで楽しんでください:) – NILobachevsky

関連する問題