矩阵求幂可以在python中使用scipy.linalg
库中的函数执行,即expm, expm2, expm3
。expm
使用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会导致数值不稳定性?在
在什么情况下(例如稀疏矩阵、对称矩阵等),每种算法更快/更精确?在
这在很大程度上取决于这些不同的矩阵求幂方法的实现细节。在
一般来说,我认为特征分解(
expm2
)不太适合稀疏矩阵,因为它可能会消除稀疏性。它也将更难适用于非对称矩阵,因为这将需要使用复杂的算法和更昂贵的算法来计算特征分解。在对于泰勒级数方法(
expm3
),如果存在一个独立于矩阵范数的固定项,这听起来很危险。当计算标量x的e^x时,泰勒级数中的最大项是n接近x的项然而,这些(不推荐使用的)函数的实现细节可以使用诸如对角加载矩阵这样的技巧来提高这些级数展开的稳定性。在
相关问题 更多 >
编程相关推荐