私は Fortran でプログラミングしており、Lapack パッケージの DGETRI マトリックス インバーターを使用しようとしています。
http://www.netlib.org/lapack/explore-html/df/da4/dgetri_8f.html
しかし、非常に奇妙なことに、それは私のすべての変数をいじっているようです。この非常に単純な例では、DGETRI が A を含まないにもかかわらず、DGETRI が適用されると、プログラムの開始時に初期化された行列 A が変化します。
誰が何が起こっているのか教えてもらえますか? ありがとう!
PROGRAM solvelinear
REAL(8), dimension(2,2) :: A,Ainv
REAL(8),allocatable :: work(:)
INTEGER :: info,lwork,i
INTEGER,dimension(2) :: ipiv
info=0
lwork=10000
allocate(work(lwork))
work=0
ipiv=0
A = reshape((/1,-1,3,3/),(/2,2/))
Ainv = reshape((/1,-1,3,3/),(/2,2/))
CALL DGETRI(2,Ainv,2,Ipiv,work,lwork,info)
print*,"A = "
do i=1,2
print*,A(i,:)
end do
END PROGRAM solve linear
これは出力です:
A =
1.0000000000000000 0.0000000000000000
-1.0000000000000000 0.33333333333333331