我已经开始使用 numpy 以及连接 UMFPACK 的 pysparse 包,但是 numpy 的浮点结果存在问题。顺便说一下,这是结构问题的 lanczos 特征值求解器。
当我在 MATLAB 中执行相同的操作时,我得到了不同的结果,结果大约为 1e-6,1e-8 并且使用 MATLAB 的表示,我得到了正确的特征值。 NumPy 和 PySparse 结果也差不了那么远,至少在顺序级别上是这样,但是使用它们创建一个三对角矩阵以在其上查找特征值是问题的根源。我不明白出了什么问题,问题是浮点表示,但如果可能的话如何解决这个问题?我尝试使用“Float64”作为我的数据类型,但这并没有改变问题的结果。比如
q = ones(n, dtype = 'Float64')
还有一个,python最成熟的sparse包是什么,有的话提供了什么样的接口(interface)?如前所述,PySparse 乍一看对我来说还不错......
最佳答案
float64
是 Numpy 中的默认数据类型。您可以尝试使用 float128
以获得更高的精度,但请注意某些函数(基本上是 Windows 上的所有函数)无论如何都会将其强制转换为 float64
。
我建议使用 scipy.sparse
来解决稀疏特征向量问题。我已经尝试过 PySparse 和 scipy.sparse,我的结论是,尽管 PySparse 更易于使用,但 scipy.sparse 更成熟。
这是稀疏线性代数文档:http://docs.scipy.org/doc/scipy/reference/sparse.linalg.html
关于python - numpy 和 pysparse 浮点表示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6179156/