2010-11-23 7 views
2

行操作を使ってnxn行列Aの逆行列を求めるコードが必要です。 私はこのコードを書いてばかげている。何かが助けてくれる、私は大学院生で、何年もプログラミングクラスを取らなかった。ありがとう。行列の逆符号(c、C++、fortranまたはtksolver)

+0

インバータを書く必要があると仮定すると、最初の質問は次のようになります。手動で反転を実行できますか?もしそうなら、手続きをコーディングして、*あなたが立ち往生した場所を教えてください* ... – dmckee

+0

私はプロジェクトのコードが必要です – user517851

+0

逆行列はnxn行列のためにコード化する必要がありますので、問題は – user517851

答えて

1

何年もプログラミングクラスを習得していない場合は、ScilabまたはMATLABを使用することをお勧めします。

1回限りの計算であれば、WolframAlphaをご覧ください。

ライブラリを使用することがC++のオプションである場合は、Armadilloを参照してください。

+0

は、理想的には私はMathematicaを使用しますが、これらは、コードに使用できる唯一のプログラムです: C C++ FORTRAN tksolver – user517851

2

あなたは本当に逆を望んでいないかもしれません。方程式の系を解くことを試みるなら、あなたはLU分解を使う方が良いでしょう。

あなたはこのアプリケーションを書いてみたい言語を言っていません。JavaにはApache Commons Mathがあります。 PythonにはNumPyがあります。 FORTRANにはLinPackがあります。言語を選択してライブラリを使用する。自分で書いてはいけません。

+0

まさに、http://www.johndcook.com/blog/2010/01/19/dont-invertを参照してください行列のために/もっと。しかし、これは宿題の問題であるため、彼はおそらく反対を求められます。 – ustun

0

Numerical Recipies Onlineをご覧ください。 Fortran 77、Ansi C、Fortran 90のコードは無料で、最善の方法についての手がかりを得ることができます。

1
SUBROUTINE MATINV(A,N) 
    DIMENSION A(N,N) 
    DO 1 I=1,N 
    Z=A(I,I) 
    A(I,I)=1.0 
    DO 2 J=1,N 
2  A(I,J)=A(1,J)/Z 
    DO 1 K=1,N 
     IF (K-I) 3,1,3 
3   Z=A(K,I) 
     A(K,I)=0.0 
     DO 4 J=1,N 
4   A(K,J)=A(K,J)-Z*A(I,J) 
1 CONTINUE 
    RETURN 
    END 
関連する問題