数值计算矩阵指数的有效方法

计算科学 线性代数 Python 矩阵 本征系统
2021-12-17 15:36:56

求解矩阵指数的一些计算上有效的方法是什么,即以下形式的函数: ,其中 是方阵?f(X)=eXX

到目前为止,我已经能够对一些矩阵进行对角化并找到单个对角元素的指数,但并非我正在处理的所有矩阵都是对角化的。

我将 Python 与 SciPy/NumPy 一起使用,因此可以在此处实现的解决方案将是最有用的。如果没有,也欢迎来自其他平台的通用解决方案/解决方案。

笔记:

  • 我需要指数本身,而不是使用它的解决方案。
  • 矩阵是密集的,通常很小(),可能不是对称的或 Hermitian。X3×34×4
1个回答

正如我在评论中提到的,由于您正在搜索基于 Python 的方法,并且理想情况下可用于 NumPy 或 SciPy,因此我的建议是使用scipy.linalg.expm. 它真的很容易使用,基本上你有X矩阵,你只需将它传递给scipy.linalg.expm类,它会给你指数X(IEeX)。

由于您没有指定任何特定功能X,比如它的稀疏性或者它的对称性等等,真的很难说什么时候scipy.linalg.expm会无法返回正确的指数X. 但据我所知,使用的算法的时间复杂度scipy.linalg.expmO(n3),所以,我希望如果你有一个非常大的密集矩阵,计算它的指数是不切实际的,正如其他人试图说的那样,如果你真的希望它把这个指数乘以一个向量并使用其他的会更好方法,可能更有效。