如何使用zheevd对Hermitian矩阵进行对角化?

时间:2014-10-02 17:31:58

标签: matrix lapack

我正在尝试使用ZHEEVD对Hermitian矩阵进行对角化。 这是我用来对角化的子程序 -

  SUBROUTINE NAGdiagocc(nsit)
  use NAGmodule

  complex*8,  allocatable :: WORK(:)
  integer, allocatable :: IWORK(:)
  real*8,  allocatable :: RWORK(:)

  CHARACTER JOB, UPLO
  EXTERNAL zheevd
  NMAX=nsit
  LDA = NMAX
  LIWORK = 5*NMAX + 3
  LRWORK = 2*NMAX*NMAX + 5*NMAX+10
  LWORK = NMAX*(NMAX+2)+100

  ALLOCATE(WORK(LWORK),IWORK(LIWORK),RWORK(LRWORK))

  JOB='V'
  UPLO='U'

  CALL ZHEEVD(JOB,UPLO,nsit,gammamat,LDA,evalocc, WORK, LWORK, RWORK, LRWORK, IWORK, LIWORK, INFO )

  IF (INFO.GT.0) THEN
  WRITE (*,*) 'Failure to converge.'
  stop
  endif

  deALLOCATE(WORK,IWORK,RWORK)

  return
  end

我尝试对齐一个简单的矩阵,但我得到的特征值是完全错误的。 并且在主程序中使用do循环重复对角化不同的时间我每次获得稍微不同的结果。 可能是什么问题?

0 个答案:

没有答案