numpy和pysparse浮点表示问题

时间:2011-05-30 17:29:25

标签: python numpy

我已经开始使用numpy和连接UMFPACK的pysparse包,但是numpy的浮点结果存在问题。顺便说一句,这是一个结构问题的lanczos特征值求解器。

当我在MATLAB中进行相同的操作时,得到的结果不同,结果大约为1e-6,1e-8,并且用MATLAB表示,我得到了正确的特征值。 NumPy和PySparse结果也不是那么远,至少在订单级别上,然而使用它们创建一个三对角矩阵,在其上找到特征值是问题的根源。我无法理解出现了什么问题,问题是浮点表示,但如果可能的话如何解决?我尝试使用'Float64'作为我的数据类型,但这不会对问题的结果进行更改。如

q = ones(n, dtype = 'Float64')

另外,python最成熟的稀疏包是什么,提供了什么样的接口,如果有的话?如上所述,PySparse对我来说似乎很好......

1 个答案:

答案 0 :(得分:2)

float64是Numpy中的默认数据类型。您可以尝试使用float128来获得更高的精度,但要注意某些功能(基本上是Windows上的所有功能)都会将其强制转换为float64

我建议使用scipy.sparse来解决稀疏的特征向量问题。我已经尝试过PySparse和scipy.sparse,我会得出结论,尽管PySparse更容易使用,但scipy.sparse更加成熟。

以下是稀疏线性代数文档:http://docs.scipy.org/doc/scipy/reference/sparse.linalg.html