Я программирование в Фортране и пытаюсь использовать матричный преобразователь DGETRI из пакета LaPack:LAPACK рутина инверсии странно смешивает все переменные
http://www.netlib.org/lapack/explore-html/df/da4/dgetri_8f.html
Но очень странно, что, кажется, возиться со всеми своими переменные. В этом очень простом примере моя матрица А, инициализированная в начале программы, изменяется с использованием DGETRI, хотя 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
Ваш код не подлежит компиляции и не воспроизводит проблему (с gfortran 4.9.1 и lapack 3.5.0). Кроме того, он не вычисляет обратный A, потому что вы забыли рассчитать факторизацию с помощью zgetrf (что не имеет значения в отношении вашей конкретной проблемы). – Stefan
Спасибо. Знаете ли вы, что теперь не так с моим вычислением обратного? (Смотри ниже). – Vim154