Matrix LAPACK-DGETRF失败(矩阵反转)

Matrix LAPACK-DGETRF失败(矩阵反转),matrix,fortran,fortran90,Matrix,Fortran,Fortran90,我试图计算矩阵的逆矩阵,但DGETRF一直说,即使矩阵不是奇异的,矩阵在数值上也是奇异的 real :: testM(1:2, 1:2), workT(2) integer :: ipivT(2), info testM = reshape((/4,2,7,6/), shape(testM)) WRITE(*,*) "started matrix inversion" ! DGETRF computes an LU factorization of a general M-by-N matr

我试图计算矩阵的逆矩阵,但DGETRF一直说,即使矩阵不是奇异的,矩阵在数值上也是奇异的

real :: testM(1:2, 1:2), workT(2)
integer :: ipivT(2), info
testM = reshape((/4,2,7,6/), shape(testM))

WRITE(*,*) "started matrix inversion"

! DGETRF computes an LU factorization of a general M-by-N matrix A
! using partial pivoting with row interchanges.
call DGETRF(2, 2, testM, 2, ipivT, info)

WRITE(*,*) "info = ", info

if (info /= 0) then
   stop 'Matrix is numerically singular!'
end if

! DGETRI computes the inverse of a matrix using the LU factorization
! computed by DGETRF.
call DGETRI(2, testM, 2, ipivT, workT, 2, info)

if (info /= 0) then
   stop 'Matrix inversion failed!'
end if
WRITE(*,*) testM
WRITE(*,*) "Matrix success"
我得到的错误是,矩阵在数值上是奇异的(info=2)。 然而,矩阵在数值上不是奇异的,我不知道为什么会给出误差


最后,我想将代码缩放为(33,33)矩阵。但我首先尝试让它在这个(2,2)矩阵中工作。

dgetrf()的文档说明:

因此,一个
双精度
变量
a
,但是您用一个
real
变量
testM
调用例程


类似的问题可能会出现在
DGETRI

中,dgetrf()的文档说明:

因此,一个
双精度
变量
a
,但是您用一个
real
变量
testM
调用例程


类似的问题可能会发生在
DGETRI

从一个小问题开始的好选择。从一个小问题开始的好选择。如果您打算让编译器自动检查和匹配数据类型,lapack95已经有一段时间了。如果您打算让编译器自动检查和匹配数据类型,lapack95已经有相当一段时间了。
subroutine dgetrf   (   integer     M,
        integer     N,
        double precision, dimension( lda, * )   A,
        integer     LDA,
        integer, dimension( * )     IPIV,
        integer     INFO 
    )