Мне интересно вычислить матричную экспоненту данной разреженной матрицы H
, а затем умножить ее на заданный вектор v
. Так как размер матрицы H
будет иметь порядок 90 000, то вычислять явно его, а затем умножать на v
становится трудным (он тратит много времени). Дело в том, что я хочу, чтобы вычислить временную эволюцию состояния v
, где H
является гамильтоновой, в течение заданного времени:Умножение матричной экспоненты с заданным вектором в python
U = exp(-i*H*t)
где i
мнимая единица и t
это время. Тогда я хочу, чтобы умножить эту матрицу U
вектора v
для того, чтобы получить эволюцию этого состояния v
С другой стороны, я нашел следующую библиотеку питона:
scipy.sparse.linalg.expm_multiply
так:
scipy.sparse.linalg.expm_multiply(-(1j)*t*H,v)
который исходит от https://docs.scipy.org/doc/scipy-0.16.1/reference/generated/scipy.sparse.linalg.expm_multiply.html. С этим я могу очень эффективно вычислить только в течение небольшого времени. В течение долгого времени t
он проводит много времени, я не знаю, почему ...
Любая идея, почему это происходит? Как можно решить?
Моя цель сделать таблицу с несколькими точками времени и его соответствующих эволюционировали состояний
http://stackoverflow.com/help/mcve –
Документы для этой функции ссылаются на пару научных вычислительных документов. Это также может помочь прочитать код в 'scipy/sparse/linalg/_expm_multiply.py'. – hpaulj