我已经开始使用numpy和连接UMFPACK的pysparse包,但是numpy的浮点结果存在问题。顺便说一句,这是一个结构问题的lanczos特征值求解器。
当我在MATLAB中进行相同的操作时,得到的结果不同,结果大约为1e-6,1e-8,并且用MATLAB表示,我得到了正确的特征值。 NumPy和PySparse结果也不是那么远,至少在订单级别上,然而使用它们创建一个三对角矩阵,在其上找到特征值是问题的根源。我无法理解出现了什么问题,问题是浮点表示,但如果可能的话如何解决?我尝试使用'Float64'作为我的数据类型,但这不会对问题的结果进行更改。如
q = ones(n, dtype = 'Float64')
另外,python最成熟的稀疏包是什么,提供了什么样的接口,如果有的话?如上所述,PySparse对我来说似乎很好......
答案 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