exponentiation over a time interval
Opened this issue · 6 comments
My problem of interest is imaginary time evolution of a Schrodinger-like equation, so I need to discretize time and re-normalize the wavefunction after each time step in order to avoid the trivial zero-solution.
In point 5 of their preprint, Mohy and Higham talk about efficiently computing e^{tA}B over a time interval. I think this can be useful in my case. Is it implemented in ExpmV?
I found the following code comment which might be related
# If repeated invocation of EXPMV is required for several values of t
# or B, it is recommended to provide M as an external parameter as
# M = SELECT_TAYLOR_DEGREE(A,m_max,p_max,prec,shift,bal,true).
# This also allows choosing different m_max and p_max.
I am guessing this comes directly from the MATLAB code, as the function SELECT_TAYLOR_DEGREE
is not defined.
So here is a code example of my typical usage:
b = ones(Float64, N^2)
for k in 1:10
b = expmv(0.1,A,b/norm(b))
end
aout = b/norm(b)
Nah, it's not really implemented. The code is a direct translation of the MATLAB code with minimal modifications to make it run. Exponentiation over a number of time samples is one of the features that would be nice to add, but that takes lower precedence over the proper/working implementation of the 1 norm estimate.
BTW, is normalization really an issue? When you say the evolution is Schrodinger-like, do you mean the integrated evolution is unitary? If so, I would not think that normalization is a big issue for this algorithm.
It is an evolution in imaginary time \tau = i t, because I am interested in obtaining the ground state after the time evolution. So the decaying exponential e^{-\tau H} kills the norm of the wavefunction.
Ah, sorry, I glossed over "imaginary time".