我需要写一个线性代数计算的程序。我从Matlab切换到python,使用numpy和scipy。Python和Matlab在精度上有一些小的差异,最终导致不同的结果。例如矩阵
A =[2 -25, -25 -622]
在Matlab中是det(A) = 627.0,而在python中是626.9999999999978。当我检查变量时,所有变量的这些微小差异将显著改变结果。我该怎么办?
det(A) = 627.0
626.9999999999978
anauzrmj1#
浮点数比较挑剔。当你遇到精度问题时,你可以在这里检查数字:
在本例中,626. 9999999999978是627。承认数字格式化程序本可以做得更好。有关浮点数的更多建议:https://floating-point-gui.de/errors/comparison/如果你知道所有的矩阵元素都是整数,那么考虑使用一个不使用浮点的矩阵表示。
1条答案
按热度按时间anauzrmj1#
浮点数比较挑剔。当你遇到精度问题时,你可以在这里检查数字:
在本例中,626. 9999999999978是627。承认数字格式化程序本可以做得更好。
有关浮点数的更多建议:https://floating-point-gui.de/errors/comparison/
如果你知道所有的矩阵元素都是整数,那么考虑使用一个不使用浮点的矩阵表示。