title: Multiplication of the matrix exponential with a given vector in python
body: <p>I am interested in compute the matrix exponential of a given sparse matrix <code>H</code> and then multiply it with a given vector <code>v</code>. Since the size of the matrix <code>H</code> becomes to be of order of 90.000, then compute explicitly it and then multiply by <code>v</code> becomes difficult (it spend a lot of time). The point is that I want to compute the time-evolution of the state <code>v</code>, where <code>H</code> is the Hamiltonian, for a given time:</p>
  
  <pre><code>U = exp(-i*H*t)
  </code></pre>
  
  <p>where <code>i</code> is the imaginary unit and <code>t</code> is the time. Then I want to multiply this matrix <code>U</code> by the vector <code>v</code> in order to obtain the evolution of this state <code>v</code></p>
  
  <p>On the other hand, I have found the following library in python:</p>
  
  <pre><code>scipy.sparse.linalg.expm_multiply
  </code></pre>
  
  <p>so:</p>
  
  <pre><code>scipy.sparse.linalg.expm_multiply(-(1j)*t*H,v)
  </code></pre>
  
  <p>which comes from <a href="https://docs.scipy.org/doc/scipy-0.16.1/reference/generated/scipy.sparse.linalg.expm_multiply.html" rel="nofollow noreferrer">https://docs.scipy.org/doc/scipy-0.16.1/reference/generated/scipy.sparse.linalg.expm_multiply.html</a>. With this I can compute very efficiently only for small time. For a high time <code>t</code> it spends a lot of time, I don't know why...</p>
  
  <p>Any idea why it happens? How can be solved?</p>
  
  <p>My goal is make a table with several points of time and its respective evolved states</p>