使用scipy进行矩阵求幂:expm、expm2和expm3

2024-09-28 03:14:50 发布

您现在位置:Python中文网/ 问答频道 /正文

矩阵求幂可以在python中使用scipy.linalg库中的函数执行,即expm, expm2, expm3expm使用Pade近似;expm2使用特征值分解方法,expm3使用默认项数为20的泰勒级数。在

在SciPy 0.13.0发行说明中指出:

The matrix exponential functions scipy.linalg.expm2 and scipy.linalg.expm3 are deprecated. All users should use the numerically more robust scipy.linalg.expm function instead.

尽管自从scipy0.13.0发布以来,expm2和{}就被弃用了,但我发现在许多情况下,这些实现都比{}快。 由此产生了一些问题:

在什么情况下expm2和expm3会导致数值不稳定性?在

在什么情况下(例如稀疏矩阵、对称矩阵等),每种算法更快/更精确?在


Tags: the方法函数情况矩阵scipy级数特征值
1条回答
网友
1楼 · 发布于 2024-09-28 03:14:50

这在很大程度上取决于这些不同的矩阵求幂方法的实现细节。在

一般来说,我认为特征分解(expm2)不太适合稀疏矩阵,因为它可能会消除稀疏性。它也将更难适用于非对称矩阵,因为这将需要使用复杂的算法和更昂贵的算法来计算特征分解。在

对于泰勒级数方法(expm3),如果存在一个独立于矩阵范数的固定项,这听起来很危险。当计算标量x的e^x时,泰勒级数中的最大项是n接近x的项

然而,这些(不推荐使用的)函数的实现细节可以使用诸如对角加载矩阵这样的技巧来提高这些级数展开的稳定性。在

相关问题 更多 >

    热门问题