scipy.sparse.linalg.expm计算结果不自洽问题求助
scipy.sparse.linalg.expm计算结果不自洽问题求助
各位好,我最近在用scipy.sparse.linalg.expm计算矩阵指数时碰到了一个棘手的问题:当矩阵中的数值达到中等偏大的程度时,计算结果就出现了明显的错误。
为了验证问题所在,我做了一个 sanity check——构造了一个简单的矩阵:
X = np.array([[06.1, 52.0],[016., 01.6 ]])
理论上,exp(X) * exp(-X)的结果应该是单位矩阵[[1, 0],[0, 1]],但实际运行后得到的结果却是:
[[ 2.39599500e+08 -2.12377558e+08],[-6.89818242e+07 4.93089944e+08]]
下面是我运行的完整代码:
import numpy as np from scipy.sparse.linalg import expm X = np.array([[06.1, 52.0], [016., 01.6 ]]) Id = np.dot(expm(X),expm(-X)) print(Id)
还有两个值得注意的细节:
- 如果矩阵里用更小的数值,最终确实能得到预期的单位矩阵
- 更奇怪的是,我的同事运行完全相同的代码,结果却是正常的
有没有大佬能帮忙分析下可能的原因?提前感谢!
备注:内容来源于stack exchange,提问作者Etienne
相关产品推荐
相关产品推荐

