为啥我使用numpy计算行列式时,为0的行列式它不等于0而是等于一个很小的数啊
import numpy as npimport numpy.linalg as nl
x1=np.array([,,])
print(x1)
print(nl.det(x1))
[
]
-9.51619735392994e-16
因为 Python 浮点数是有误差的
导致最终结果为一个非常小的数,这么小的数视为零即可
Twilight6 发表于 2021-9-16 11:59
因为 Python 浮点数是有误差的
导致最终结果为一个非常小的数,这么小的数视为零即可
那请问有什么处理方法吗{:5_99:} 為什麼我用你的代碼執行結果為0.0?
import numpy as np
import numpy.linalg as nl
x1=np.array([,,])
print(x1)
print(nl.det(x1))[
]
0.0 傻眼貓咪 发表于 2021-9-16 12:21
為什麼我用你的代碼執行結果為0.0?
我也很奇怪 是numpy版本问题么 ALNY 发表于 2021-9-16 12:20
那请问有什么处理方法吗
呃,这误差没办法处理了,这是计算机存储数据时候产生的误差,但是对结果进行处理还是可以的:
import numpy as np
import numpy.linalg as nl
x1=np.array([,,])
print(x1)
print(round(nl.det(x1),10))
楼上的结果为 0.0 ,可能是因为计算机存储方式不同的原因吧,就比如:
>>> 0.1+0.1-0.2
0.0
>>> 0.1+0.7-0.8
-1.1102230246251565e-16
Twilight6 发表于 2021-9-16 12:31
呃,这误差没办法处理了,这是计算机存储数据时候产生的误差,但是对结果进行处理还是可以的:
确实只能处理结果了....
刚刚试了下这个好神奇啊 本帖最后由 傻眼貓咪 于 2021-9-16 12:58 编辑
学到了
print(0.1+0.7-0.8)-1.1102230246251565e-16
好像只有十进制 0.1 才会这样
页:
[1]