作者yesflower (我是男人 N )
看板Fortran
标题[问题] 想找出eigenvalue所对应的eigenfuction
时间Sat Apr 17 21:22:57 2010
我计算了一个庞大矩阵的eigenvalue,eigenfuction後,又写了一个泡泡排序法的副程式
想将eigenvalue从低到高排列出来,也排序成功了,但是遇到了一个问题,我不知道怎
去取得从低到高排列出来的eigenvalue对应的eigenfuction
请问各位前被该怎麽办才好 以下程式码
!!This is a quantum and It's H operator
use imsl
implicit NONE
REAL*8,external::f
INTEGER NN,LDEVEC,LDA,NOUT,test
REAL*8 H,EVAL,EVEC,C,KM,KN,PI,MASS,L,HBAR
REAL*8 A,B,ERRABS,ERRREL,ERR
REAL*8 ANS,m,n
PARAMETER(NN=10,LDEVEC=NN,LDA=NN) !CHANGE THE SIZE OF HAMILTONIAN
parameter(ERRABS=1D-5,ERRREL=1D-5)
DIMENSION H(NN,NN),EVAL(NN),EVEC(LDEVEC),C(LDA,NN)
COMMON /QUANTUMNUMBER/ n,m
CALL UMACH(2,NOUT)
a=-20. !lower
b=20. !upper
do N=1,10 !change the size of hamiltonian
do M=1,10 !change the size of hamiltonian
call DQDAGS(f,a,b,errabs,errrel,ans,err)
!open(11,file='hamiltonian.TXT')
!WRITE(*,*) ANS
H(M,N)=ANS
enddo
enddo
!WRITE(*,*) h(2,1)
CALL DEVCSF (NN, H, LDA, EVAL, EVEC, LDEVEC)
!WRITE(*,*) "EVAL","=",eval,"evec","=",evec
call arrangement(eval,nn)
!open(20,file='eval.txt')
write(*,*) "EVAL","=",eval
end
real function f(x)
implicit none
real*8 m,n
REAL*8 KM,KN,PI,MASS,L,HBAR,V,x
COMMON /QUANTUMNUMBER/ n,m
!!!!!!! L=length=40
PI=DACOS(-1.d0)
MASS=1.
L=40. !change the length
hbar=1.
V=0.
KM=M*PI/L
KN=N*PI/L
f=(((hbar**2)*km*kn/(MASS*2.))*Dcos(km*(x+L/2.))*DCOS(KN*(X+L/2.)))+
(DSIN(KM*(X+L/2.))*DSIN(KN*(X+L/2.))*v)
return
end function
!!!!bubble sort!!!!!!!!
subroutine arrangement(eval1,nnn)
implicit none
integer nnn,i,j
real*8 temp,eval1
dimension eval1(nnn)
do i=nnn-1,1,-1
do j=1,i
if(eval1(j)>eval1(j+1))then
temp=eval1(j)
eval1(j)=eval1(j+1)
eval1(j+1)=temp
endif
enddo
enddo
return
end subroutine
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.36.204.78
1F:推 hiyiyi:另外建立一组纪录为编号,跟着bubble一起排序 04/18 16:24