fortran90特征值中的LAPACK

时间:2017-11-01 12:51:42

标签: fortran lapack

我很难理解用于查找特征值的LAPACK zgeev例程是如何工作的。我已经阅读了here

中的文档和MKL示例

我想用fortran90风格做我自己的例子。这是我的代码:

program test_zgeev
implicit none
integer, parameter :: n = 2, lwmax = 1000
integer :: lwork, info, i
real(8) :: rwork(n*2) 
complex(16) :: w(n), work(lwmax), vl(n), vr(n), a(n, n)
integer :: lda, ldvl, ldvr
lda = n; ldvl = n; ldvr = n

a(1, 1) = 1.0d0; a(1, 2) = -1.0d0
a(2, 1) = 5.0d0; a(2, 2) = -1.0d0

lwork = lwmax

CALL ZGEEV( 'Vectors', 'Vectors', N, A, LDA, W, VL, LDVL, &
            VR, LDVR, WORK, LWORK, RWORK, INFO )

do i = 1, n
    write(*, *) w(i)
enddo

end program

它编译并正式运行但是特征值是错误的,我得到(1,0)(0,0)而不是正确的(0,2)(0,-2)。当我尝试在MKL示例(fortran 77)中直接使用相同的矩阵时,它可以正常工作。因此,由于我对f77和f90之间的差异的误解,在某处出现了错误。你能帮我找一下吗?

0 个答案:

没有答案