回 帖 发 新 帖 刷新版面

主题:复矩阵求特征值,求jstzhurj大姐帮忙看下怎么回事

[em2][em2][em2][em2][em2][em2][em2][em2]
我编个程序求复矩阵特征值,用evlhf函数求的,但是提示出好几个错误,大姐帮忙看下啊。
      program mceshidian
    use imsl
    implicit real*8(a-h,o-z)
    parameter(N=26)
    complex*16 i,H0(N,N),Hlr(N,N),Hrl(N,N),H(N,N)
    real ka,eval
         ka=0.25
    I=DCMPLX(0.0,1.0)

    H0=0.0D0
    HLR=0.0D0
         H=0.0

    do 32 J=1,N/2-1
    H0(J,J+1)=-T
    H0(J+1,J)=-T
    
    H0(J+N/2,J+1+N/2)=-T
    H0(J+1+N/2,J+N/2)=-T

32    continue

    DO 33 J=1,N/2,2
    H0(J,J+N/2)=-T
33    H0(J+N/2,J)=-T

    DO 34 J=2+N/2,N,2 !对右边原胞作用哈密顿矩阵
34    HLR(J,J-N/2)=-T

    DO 35 IA=1,N
    DO 35 IB=1,N
35    HRL(IA,IB)=DCONJG( HLR(IB,IA)  )

      H=H0+exp(I*ka)*HLR+exp(-I*ka)*HRL

      open(2,file='EK.txt')

       call evlhf(N,H,N,eval)

       write(2,*) eval
    end
出错信息如下:
Error: The type of the actual argument differs from the type of the dummy argument.   [H]
      call evlhf(N,H,N,eval)
H是复厄米矩阵啊?怎么老提示出错呢。奇怪啊

回复列表 (共5个回复)

沙发

楼主至少eval的定义就应该是数组.
楼主看来要独占jstzhurj大姐, 每次都高亮标题吸引大姐让她抽不出空去帮其他论坛朋友.
楼主类似的问题也遇到过了, 有没有试试自己想办法解决一次呢?

板凳


自己看一下下面的例子,运行环境ivf+imsl6.0

   program main
      include 'link_fnl_shared.h' 
      use imsl_libraries
      implicit none
!                                 Declare variables
      integer  ::  LDA, LDEVEC, N
      parameter  (N=3, LDA=N, LDEVEC=N)
      integer ::  NOUT
      real :: EVAL(N), PI
      complex :: A(LDA,N), EVEC(LDEVEC,N)

!                                 Set values of A
!
!                                 A = ((1, 0)  (  1,-7i)  ( 0,- i))
!                                     ((1,7i)  (  5,  0)  (10,-3i))
!                                     ((0, i)  ( 10, 3i)  (-2,  0))
!
      data A/(1.0,0.0), (1.0,7.0), (0.0,1.0), (1.0,-7.0), (5.0,0.0), &
          (10.0, 3.0), (0.0,-1.0), (10.0,-3.0), (-2.0,0.0)/
!
!                                 Find eigenvalues and vectors of A
      call EVCHF (A, EVAL, EVEC)
!                                 Compute performance index
      PI = EPIHF(N,A,EVAL,EVEC)
!                                 Print results
      call UMACH (2, NOUT)
      call WRRRN ('EVAL', EVAL, 1, N, 1)
      call WRCRN ('EVEC', EVEC)
      write (NOUT,'(/,A,F6.3)') ' Performance index = ', PI

   end program


自己要有依葫芦画瓢的本领。[em1]

3 楼


[em2][em2][em2][em2][em2]
老兄说得对,不该每次都高高亮亮吸引jstzhurj大姐的注意力的,哈哈。
但是这个程序我把eval定义为数组还是老错误,确实是百思不得其解了。哈哈[em17][em17][em17]慢慢来,给jstzhurj大姐点时间,也给别人求助的机会吗。

4 楼


[em4][em7][em8][em9][em10][em11][em12][em13][em14][em15][em16][em17]
jstzhurj,各位同学,晚安,回去休息了。累啊。明天回来继续。

5 楼

咋是你一直在搞这个特征值呀,搞很久了吧~~ 有那么多问题么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册