python – numpy和pysparse浮点表示问题

我已经开始使用numpy以及与UMFPACK接口的pysparse包,但是浮点结果存在numpy的问题.顺便说一下,这是一个结构问题的lanczos特征值求解器.

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

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

还有,python最成熟的稀疏包是什么,提供了什么样的接口,如果有的话?如上所述,PySparse乍一看对我好像……

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

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

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

点赞