最近,我对倾斜的Hermitian矩阵提出了同样的问题。受此问题的成功启发,在将我的头撞在墙上几个小时之后,我正在研究真实的非对称矩阵的矩阵指数。寻找特征值和特征向量的方法似乎有些复杂,我怕迷路了。
背景:前段时间,我在理论物理学SE上问了这个问题。结果使我可以将主方程式表达为真实的非对称矩阵。在与时间无关的情况下,通过对该矩阵求幂来求解主方程。在与时间有关的情况下,将需要集成。我现在只关心时间独立性。
看完我认为应该调用的各种子例程(?gehrd,?orghr,?hseqr ...),尚不清楚将矩阵从转换real*8
为complex*16
并进行这些例程的复杂双精度版本是否更简单,或坚持使用real*8
,将数组的数量加倍,然后再制成一个复杂的矩阵。
那么,我应该调用哪些例程(以什么顺序),并且应该使用实数双精度版本还是复数双精度版本?下面是使用真正的双重版本进行此操作的尝试。我陷入了寻找的特征值和特征向量的困境L*t
。
function time_indep_master(s,L,t)
! s is the length of a side of L, which is square.
! L is a real*8, asymmetric square matrix.
! t is a real*8 value corresponding to time.
! This function (will) compute expm(L*t).
integer, intent(in) :: s
real*8, intent(in) :: L(s,s), t
real*8 :: tau(s-1), work(s), wr(s), wi(s), vl
real*8, dimension(s,s) :: time_indep_master, A, H, vr
integer :: info, m, ifaill(2*s), ifailr(2*s)
logical :: sel(s)
A = L*t
sel = .true.
call dgehrd(s,1,s,A,s,tau,work,s,info)
H = A
call dorghr(s,1,s,A,s,tau,work,s,info)
call dhseqr('e','v',s,1,s,H,s,wr,wi,A,s,work,s,info)
call dhsein('r','q','n',sel,H,s,wr,wi,vl,1,vr,s,2*s,m,work,ifaill,ifailr,info)
! Confused now...
end function