2012年12月02日 星期日 13:10
In [1]: import numpy as np (1)
In [2]: np.linalg.det([[10,0],[0,10]]) (2)
Out[2]: 100.00000000000004 (3)
文档中关于det函数的说明:
”
The determinant is computed via LU factorization using the LAPACK routine z/dgetrf.
The determinant of a 2-D array [[a, b], [c, d]] is ad - bc ” 虽然已经说明了在计算行列式时采用了LU分解,但是这个example后面的这句话也太坑爹了,显然 array [[a, b], [c, d]]的行列式不是ad - bc,否则我的运行结果(3)应该是100啊! 因为涉及到了整数矩阵的行列式计算,所以遇到了这个问题。本来不应该有小数点后的数的,而且这小数点后的数对结果还有影响。这下不知道该怎么弄了,二维的矩阵我还可以直接用ad - bc,高维的可不好办哪!Examples
2012年12月03日 星期一 19:54
Fortran的数值运算库采用的是浮点数,结果有一些误差是正常的。你不能对结果取个整吗?
2012年12月03日 星期一 23:22
确实可以,用四舍五入,我短路了。
Zeuux © 2024
京ICP备05028076号