我有兴趣计算给定稀疏矩阵H
的矩阵指数,然后将其与给定矢量v
相乘。由于矩阵H
的大小变为90.000的数量级,因此明确计算它,然后乘以v
变得困难(它花费大量时间)。问题的关键是,我要计算状态v
,其中H
是哈密顿,对于给定的时间的时间演化:矩阵指数与python中的给定矢量的乘积
U = exp(-i*H*t)
其中i
是虚数单位和t
是时间。然后我想在矢量v
为了获得这种状态v
在另一只手的进化乘这个矩阵U
,我发现了以下库在python:
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