Python Numpy返回0.00…002
抱歉,如果这篇文章是杜普利,我找不到答案。。。我有以下代码:Python Numpy返回0.00…002,python,numpy,Python,Numpy,抱歉,如果这篇文章是杜普利,我找不到答案。。。我有以下代码: import numpy as np V = np.array([[6, 10, 0], [2, 5, 0], [0, 0, 0]]) subarr = np.array([[arr[0][0], arr[0][1]], [arr[1][0], arr[1][1]]]) det = np.linalg.det(subarr) cross = np.cross(arr[0],
import numpy as np
V = np.array([[6, 10, 0],
[2, 5, 0],
[0, 0, 0]])
subarr = np.array([[arr[0][0], arr[0][1]], [arr[1][0], arr[1][1]]])
det = np.linalg.det(subarr)
cross = np.cross(arr[0], arr[1])
print(f"Det: {det}")
print(f"Cross: {cross}")
我希望det
返回10.0,交叉
在本例中返回[0,0,10]
,最后一个数字等于det
。出于某种原因,python返回
Det: 10.000000000000002
Cross: [ 0 0 10]
有人能解释一下原因吗?你看到的是
如果你想知道在寻找由整数组成的矩阵的行列式时,如何得到浮点值(通常的计算方法是6*5-2*10=10
),np.linalg.det
用于寻找行列式。这对于2x2矩阵不是很有效,但是当你有更大的矩阵时效率更高
对于2x2,您可以获得:
scipy.linalg.lu(A, 1)
Out:
(array([[ 1. , 0. ],
[ 0.33333333, 1. ]]),
array([[ 6. , 10. ],
[ 0. , 1.66666667]]))
行列式只是对角线的乘积,最终为6.*1.66666 7
,由于浮点错误,解析为10.00000002
。您看到的是
如果你想知道在寻找由整数组成的矩阵的行列式时,如何得到浮点值(通常的计算方法是6*5-2*10=10
),np.linalg.det
用于寻找行列式。这对于2x2矩阵不是很有效,但是当你有更大的矩阵时效率更高
对于2x2,您可以获得:
scipy.linalg.lu(A, 1)
Out:
(array([[ 1. , 0. ],
[ 0.33333333, 1. ]]),
array([[ 6. , 10. ],
[ 0. , 1.66666667]]))
行列式只是对角线的乘积,最终为
6.*1.66666 7
,由于浮点错误,解析为10.00000002
。查找浮点精度关键字:查找浮点精度关键字: