Python和科学计算认证群组  - 讨论区

标题:晕!!numpy 不按套路出牌啊!

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.

Examples

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,高维的可不好办哪!

 

2012年12月03日 星期一 19:54

Fortran的数值运算库采用的是浮点数,结果有一些误差是正常的。你不能对结果取个整吗?

2012年12月03日 星期一 23:22

确实可以,用四舍五入,我短路了。

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号