scipy 中稀疏正定线性系统推荐的直接求解器?

2024-04-30

如果 scipy.sparse 文档中对此有清楚的解释,我很抱歉。

使用 scipy 时,您建议使用什么函数来求解稀疏正定线性方程组?我想使用直接方法,并且希望对列重新排序,以便在系数矩阵的 Cholesky 分解中尽可能保持稀疏性。理想情况下,我能够尝试各种重新排序选项。

scipy.sparse 中是否存在稀疏正定系统的直接求解器? scikit.sparse 是正确的选择吗?


scipy.sparse.linalg.spsolve http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.linalg.spsolve.html已经足够清楚了, 但似乎为了速度你必须

pip install scikit-umfpack https://pypi.python.org/pypi/scikit-umfpack

or else

  1. 构建 UMFPACK 和 AMD稀疏套件 http://www.cise.ufl.edu/research/sparse/SuiteSparse
  2. 然后从源代码重建 scipy,[umfpack] umfpack_libs = ...在 site.cfg 中。

否则 scipy.sparse.linalg 默认为较慢的 SuperLU。

scikit.sparse 是正确的选择吗?

与什么相比,以什么标准? 如果C / C++对你来说足够了,直接使用SuiteSparse。 任何工具都取决于你对什么感到满意, 对于用户:一个、两个、很多。 也许更好的可视化比更快的 spsolve 对您的项目更有帮助。

scipy.sparse 的一些非常明显的优点和缺点:

+ 用于快速开发的Python,数据输入——矩阵——可视化
+ 多个软件包基于 scipy.sparse 构建; 询问您的应用领域(是?)
- 粗糙的边缘(矩阵很痛苦),据我所知没有维基来收集提示和代码片段
- 层层叠加,scipy.sparse -- SuiteSparse -- ... BLAS ... 使计时和调试变得困难。

Fwiw,我的 iMac 上的求解器时间差异很大。 这些都是带有默认参数的,没有 umfpack。
(这不是一个现实的测试用例;但是满意的 http://en.wikipedia.org/wiki/Satisficing通常就足够好了。)

X = sparse.rand( m, n, dens, format="csr" )
A = 1e-6 * sparse.eye(m) + X * X.T
linalg solvers( A, b )

(5000, 5000)  density 0.42 % --
   51 msec spsolve
    5 msec bicg
    3 msec bicgstab
    2 msec cg
    4 msec cgs
    3 msec gmres
    4 msec lgmres
    1 msec minres
    6 msec qmr
    5 msec lsmr
(5000, 5000)  density 0.84 % --
  428 msec spsolve
   12 msec bicg
    7 msec bicgstab
    5 msec cg
   10 msec cgs
    6 msec gmres
    8 msec lgmres
    2 msec minres
   13 msec qmr
   12 msec lsmr
(5000, 5000)  density 1.3 % --
 1462 msec spsolve
   16 msec bicg
    9 msec bicgstab
    7 msec cg
   11 msec cgs
    7 msec gmres
   10 msec lgmres
    1 msec minres
   18 msec qmr
   14 msec lsmr
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scipy 中稀疏正定线性系统推荐的直接求解器? 的相关文章

  • 如何使用 python 将威布尔分布拟合到数据?

    我正在寻找使用 Python 3 4 找到最适合一组数据的威布尔参数 import scipy stats as ss list1 list2 for x in range 0 10 list1 append ss exponweib pd
  • 如何将附加参数传递给 numba cfunc 作为 LowLevelCallable 传递给 scipy.integrate.quad

    文档讨论 http numba pydata org numba doc 0 34 0 user cfunc html example使用 numba 的cfuncs as LowLevelCallable的论证scipy integrat
  • 大熊猫群体中的百分位排名

    我不太清楚如何编写函数来完成分组百分位数 我将 1985 年至 2012 年的所有球队都放在一个数据框中 前 10 个如下所示 目前按年份排序 我想给一个百分位LgRnk分组依据Year 例如 1985 年的 23 LgRank 最差球队
  • 三次样条内存错误

    在具有 4GB 内存的计算机上 这种简单的插值会导致内存错误 基于 http docs scipy org doc scipy reference tutorial interpolate html http docs scipy org
  • 在Python中计算矩阵乘以其转置(AA^T)的最快方法

    在Python中将矩阵与其转置 AA T 相乘的最快方法是什么 我认为 NumPy SciPy 没有考虑使用例如时涉及的对称性 np dot or np matmul 得到的矩阵总是对称的 所以我可以想象有一个更快的解决方案 None
  • pyspark中的稀疏向量RDD

    我一直在使用 mllib 的功能通过 Python Pyspark 实现此处描述的 TF IDF 方法 https spark apache org docs 1 3 0 mllib feature extraction html http
  • 如何开始使用“scipy”

    我之前安装过 Python 3 4 2 和 3 5 2 在这两种情况下 我都可以在 Idle 中涉足编写和测试代码 这给了我两个窗口 一个用于代码的 运行 窗口 一个用于交互和测试的 Shell 窗口 输出 抱歉 不确定术语是否正确 现在我
  • 在 Python 中倾斜数组

    我有一个 2D 数组 我将使用它保存为灰度图像scipy misc toimage 在此之前 我想将图像倾斜给定角度 像这样进行插值scipy ndimage interpolation rotate 上图只是为了说明倾斜过程 我知道我必须
  • 求解超定系统最小二乘的最快方法

    我有一个大小为 m n 的矩阵 A m 阶约为 100K n 阶约为 500 和向量 b 另外 我的矩阵是病态的并且等级不足 现在我想找出 Ax b 的最小二乘解 为此我比较了一些方法 scipy linalg lstsq 时间 剩余 14
  • SciPy 曲线拟合参数的方差到底是多少? (Python)

    我目前正在 Python 中使用 scipy optimize 包的 curve fit 函数 并且知道 如果取从 curve fit 获得的协方差矩阵的对角线条目的平方根 您将获得 curve fit 参数的标准偏差计算出来的 我不确定这
  • 使用 python 生成器高效创建 scipy.lil_matrix

    我有一个生成单一维度的生成器numpy arrays 的长度相同 我想要一个包含该数据的稀疏矩阵 行的生成顺序与我希望它们出现在最终矩阵中的顺序相同 csr矩阵优于lil矩阵 但我认为后者在我描述的场景中更容易构建 假设row gen是一个
  • 在 scipy 中创建新的发行版

    我试图根据我拥有的一些数据创建一个分布 然后从该分布中随机抽取 这是我所拥有的 from scipy import stats import numpy def getDistribution data kernel stats gauss
  • 在 HDF5 (PyTables) 中存储 numpy 稀疏矩阵

    我在使用 PyTables 存储 numpy csr matrix 时遇到问题 我收到此错误 TypeError objects of type csr matrix are not supported in this context so
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • 3D 网格之间的豪斯多夫距离

    我有多个网格 numpy 数组 Nk Ny Nx 并且想使用 Hausdorff 距离作为这些网格相似性的度量 scipy 中有几个模块 scipy spatial distance cdist scipy spatial distance
  • 使用时间、日期、时间增量

    我有一个问题 我的工作时间和时差很多 到目前为止 我已经使用许多 if 语句解决了这个问题 但这些语句很容易出错 在寻找更好的解决方案并且无需重新发明轮子的过程中 我遇到了时间 日期和时间增量 但这些对我来说似乎太不灵活了 所以我正在寻找如
  • 如何在Python中高效地添加稀疏矩阵

    我想知道如何在Python中有效地添加稀疏矩阵 我有一个程序 可以将大任务分解为子任务 并将它们分配到多个 CPU 上 每个子任务都会产生一个结果 一个 scipy 稀疏矩阵 格式为 lil matrix 稀疏矩阵尺寸为 100000x50
  • Scipy Sparse:SciPy/NumPy 更新后出现奇异矩阵警告

    我的问题是由大型电阻器系统的节点分析产生的 我基本上是在设置一个大的稀疏矩阵A 我的解向量b 我正在尝试求解线性方程A x b 为了做到这一点 我正在使用scipy sparse linalg spsolve method 直到最近 一切都
  • scipy.optimize on pandas dataframe

    我试图搜索它 但结果很差 有人可以向我解释一下如何在 Pandas DataFrame 上执行 optimize minimize 以便最小化 DataFrame 中的类别和结果列之间的错误 考虑这个例子 import pandas as
  • 将 scipy 稀疏矩阵的几行采样到另一个中

    如何对 scipy 稀疏矩阵的某些行进行采样 并从这些采样的行中形成一个新的 scipy 稀疏矩阵 例如 如果我有一个 10 行的 scipy 稀疏矩阵 A 并且我想创建一个新的 scipy 稀疏矩阵 B 其中 A 的第 1 3 4 行 该

随机推荐