提问人:Archimedes_91 提问时间:4/6/2022 最后编辑:Archimedes_91 更新时间:4/6/2022 访问量:144
准确性:Python 与 Matlab 和奇怪的行为
Accuracy Python vs. Matlab and strange behaviour
问:
我发现Matlab和Python之间有一种非常奇怪的行为。首先,我试着解释一下:
我正在将 Matlab 代码翻译成 Python,它似乎运行良好。我需要确定矩阵 A 的特征值进行计算,经过一些代数后,我发现一个量与 matlab 中的量不同。因此,我将矩阵 A 从 Python 复制到 Matlab,其中包含 4 位数字,结果与 Python 相同。所以我现在从 Python 复制了相同的矩阵 A,但这次是 15 位数字,Matlab 中的结果是正确的。其次,我将矩阵 A 从 Python 复制到 Matlab,有 20 位数字,结果是“错误”的。我不明白为什么 Matlab 只显示 15 位数字的正确结果。有趣的是,如果我取 4 位或 20 位数字,matlab 会导致相同的结果。仅针对小数点后分隔符 matlab 计算所需结果的 15 位数字。
有什么方法可以解决这个问题吗?Matlab 确定结果是正确的(因为我知道答案),但 Python 是错误的。
如果有人需要更多解释,我会尝试扩展我的问题,但整个计算非常复杂,所以我无法上传整个代码。
今天,我试图找到问题所在,我发现,结果来自 .
我需要计算对称 Toeplitz 矩阵 A 的特征值和特征向量eigh
w, v = np.linalg.eigh(A, UPLO='U')
我的特征值为零,该特征值的结果不同:vs。尽管矩阵 A 在两种情况下都相同,但结果各不相同。怎么会这样呢?7.13188e-14
3.33955e-14
答: 暂无答案
评论