2012-03-08 36 views
3

以下ダイナミックアレイは(N < = 100で)非対称のn×n個のマトリックスが含ま:C++反転行列

int **matrix; 
matrix = new int*[n]; 
for (int i = 0; i < n; i++) 
    matrix[i] = new int[n]; 

は、それを反転するための非常に簡単な方法はありますか?理想的には、私はSTLから何かを使うか、または単一のヘッダファイルをダウンロードするだけです。

+0

反転とはどういう意味ですか?いくつかのサンプル入力と出力を試してみてください – Adrian

+0

私は逆行列を見つけることを意味します:http://en.wikipedia.org/wiki/Invertible_matrix – pockethook

+0

@Adrian彼はこのことをnxn行列と呼んでいるので、反転によって。 –

答えて

7

Eigen。

http://eigen.tuxfamily.org/index.php?title=Main_Page

あなたは固有の行列に、あなたの配列をマッピングして、効率的な行列反転を行うことができます。

これだけを含める必要があります。

通常、線形システム解法のために逆行列を実行する必要がある場合は、利用可能な行列のプロパティに基づいて行列分解を使用する方がよいと付け加えます。

http://eigen.tuxfamily.org/dox/TutorialLinearAlgebra.html

2

極端にですが動作します。Numerical Recipes in cページ48、使用するLU分解。

+0

興味深い本に見えます!ちょうど1つを注文し、便利な参照ツールにする必要があります。 – john

+0

@john本のCの部分は実際には無料です(ただし閲覧時にはユーザーフレンドリーではありません) – assylias