Questions tagged «sparse-matrix»

与存储,组装,操作以及处理稀疏矩阵的其他方面有关的问题,对于这些问题,仅存储非零元素。不是直接与稀疏矩阵有关的问题,而是其他使用稀疏性的问题,应使用[sparse-operator]进行标记。

17
是否有适用于Python的高质量非线性编程求解器?
我要解决几个具有挑战性的非凸全局优化问题。目前,我使用了MATLAB的Optimization Toolbox(特别是fmincon()使用algorithm = 'sqp'),它非常有效。但是,我的大部分代码是在Python中进行的,我也想在Python中进行优化。是否存在可以与Python绑定竞争的NLP求解器fmincon()?它必须 能够处理非线性等式和不等式约束 不需要用户提供雅可比行列式。 如果不保证全局最优(fmincon()没有),也可以。我正在寻找一种即使在遇到挑战性问题时也可以收敛到局部最优的东西,即使它比慢一些fmincon()。 我尝试了OpenOpt提供的几种求解器,发现它们不如MATLAB的fmincon/sqp。 只是为了强调,我已经有了一个易于处理的公式和一个好的求解器。我的目标仅仅是更改语言,以使工作流程更加简化。 Geoff指出问题的某些特征可能是相关的。他们是: 10-400个决策变量 4-100个多项式相等约束(多项式范围从1到大约8) 有理不等式约束的数量大约等于决策变量数量的两倍 目标函数是决策变量之一 等式约束的雅可比行列是密集的,不等式约束的雅可比行列是密集的。

4
选择稀疏线性系统求解器时应遵循哪些准则?
稀疏线性系统在应用中会随着频率的增加而出现。解决这些系统有很多例程可供选择。在最高级别,直接方法(例如,稀疏的高斯消除或Cholesky分解,使用特殊的排序算法和多前沿方法)与迭代方法(例如,GMRES,(双)共轭梯度)方法之间存在分水岭。 如何确定使用直接方法还是迭代方法?做出了这样的选择之后,如何选择一种特定的算法?我已经知道对称性的利用方法(例如,将共轭梯度用于稀疏对称正定系统),但是在选择方法时还需要考虑其他类似因素吗?

7
计算一般矩阵最大特征值的最快方法是什么?
编辑:我正在测试是否任何特征值具有一个或更大的幅度。 我需要找到一个大型的稀疏,非对称矩阵的最大绝对特征值。 我一直在使用R eigen()函数,该函数使用EISPACK或LAPACK中的QR算法查找所有特征值,然后使用它abs()来获取绝对值。但是,我需要做得更快。 我也尝试过在igraphR包中使用ARPACK接口。但是,它给了我的一个矩阵一个错误。 最终实现必须可以从R访问。 可能会有多个相同大小的特征值。 你有什么建议吗? 编辑: 精度只需要是1e-11。到目前为止,“典型”矩阵是。我已经能够对此进行QR分解。但是,也可以有更大的对象。我目前开始阅读有关Arnoldi算法的信息。我了解这与Lanczsos有关。386 × 386386×386386\times 386 EDIT2:如果我有多个矩阵正在“测试”,并且我知道有一个不变的大子矩阵。是否可以忽略/丢弃它?

3
求解
我有矩阵AAA和GGG。AAA是稀疏的,并且是n×nn×nn\times n其中nnn非常大(可以达到几百万个数量级。)GGG是一个n×mn×mn\times m高的矩阵,其中mmm很小(1<m<10001<m<10001 \lt m \lt 1000),每列只能有一个111条目其余为的,以使得。很大,所以反转起来真的很困难,我可以求解一个线性系统,例如000GTG=IGTG=IG^TG = IAAAAx=bAx=bAx = b迭代地使用Krylov子空间方法,例如,但我没有明确地拥有。BiCGStab(l)BiCGStab(l)\mathrm{BiCGStab}(l)A−1A−1A^{-1} 我想解决以下形式的系统:,其中和是长度向量。一种实现方法是在迭代算法中使用迭代算法来为外部迭代算法的每次迭代求解。但是,这将在计算上极其昂贵。我想知道是否有一种计算上更简单的方法来解决这个问题。x b m A − 1(GTA−1G)x=b(GTA−1G)x=b(G^TA^{-1}G)x = bxxxbbbmmmA−1A−1A^{-1}

5
出色的软件设计会降低20%的性能
我正在编写一个用于稀疏矩阵计算的小型库,以此来教自己充分利用面向对象的编程。我一直在努力建立一个不错的对象模型,其中各部分(稀疏矩阵和描述其连接结构的图形)之间的耦合非常松散。我个人认为,该代码具有更大的可扩展性和可维护性。 但是,它也比我使用钝器要慢一些。为了测试具有此对象模型的权衡,我编写了一个新的稀疏矩阵类型,该类型打破了基础图的封装,以查看运行的速度有多快。 起初,它看起来很暗淡。我曾经为之骄傲的代码比没有任何精美软件设计的版本慢60%。但是,我能够进行一些低级的优化-内联一个函数并稍微改变一个循环-完全不需要更改API。有了这些更改,现在它仅比竞争对手慢20%。 这使我想到一个问题:如果这意味着我有一个不错的对象模型,我应该接受多少性能损失?


3

4
如何对变量重新排序以产生最小带宽的带状矩阵?
我正在尝试通过有限差分来求解2D泊松方程。在此过程中,我获得了每个方程式中只有变量的稀疏矩阵。例如,如果变量为U,则离散化将产生:555UUU Ui−1,j+Ui+1,j−4Ui,j+Ui,j−1+Ui,j+1=fi,jUi−1,j+Ui+1,j−4Ui,j+Ui,j−1+Ui,j+1=fi,jU_{i-1,j} + U_{i+1,j} -4U_{i,j} + U_{i,j-1} + U_{i,j+1} = f_{i,j} 我知道我可以通过迭代方法求解该系统,但是我想到,如果我对变量进行适当排序,我也许能够获得可以通过直接方法(即高斯消去w)求解的带状矩阵。 / o旋转)。这可能吗?是否有其他策略可用于其他结构较疏的稀疏系统呢?

1
在谐波振荡器的情况下,为什么SciPy eigsh()会产生错误的特征值?
我正在开发一些更大的代码,以在计算物理学的背景下执行巨大的稀疏矩阵的特征值计算。由于特征值在分析上是众所周知的,因此我在一维上针对简单的谐波振荡器测试了例程。这样做并将我自己的例程与SciPy的内置求解器进行比较,我遇到了下图中显示的异常情况。在这里可以看到第一个100个数值地计算本征值和分析本征值λ 一个Ñ 一个λñ ü 米λñü米\lambda_{num}λ一个ñ 一λ一种ñ一种\lambda_{ana} 在特征值40附近,数值结果开始与分析结果有所不同。这并不令我感到惊讶(除非在讨论中提到,否则我不会在这里解释原因)。但是,令我惊讶的是eigsh()会生成简并的特征值(大约特征值80)。为什么即使很少的特征值,eigsh()的行为也是如此? import numpy as np from scipy.sparse.linalg import eigsh import myFunctions as myFunc import matplotlib.pyplot as plt #discretize x-axis N = 100 xmin = -10. xmax = 10. accuracy = 1e-5 #stepsize h = (xmax - xmin) / (N + 1.) #exclude first and …

2
计算一个非常大且非常稀疏的邻接矩阵的所有特征值
我有两个图,每个图都有近n〜100000个节点。在两个图中,每个节点正好连接到其他3个节点,因此邻接矩阵是对称的并且非常稀疏。 困难的部分是我需要邻接矩阵的所有特征值,而不是特征向量。准确地说,这将是我一生中唯一的一次(至少据我所知!),因此我想获取所有特征值,并且不介意等待几天来获取它们。 我尝试过scipy包装器ARPACK,但是花费的时间太长。我找到了多个库,但是它们最适合于获得最大/最小特征值的子集。是否有适用于对称稀疏矩阵并可能并行实现所有特征值的库?

3
Thomas算法是求解对称对角占优稀疏三对角线性系统的最快方法吗
我想知道托马斯算法是否是解决算法复杂性(不寻找像LAPACK之类的实现包)方面最快的方法(可证明?)来解决对称对角占优的稀疏三对角线系统。我知道,托马斯算法和多重网格都为复杂度,但是多重网格的常数因子可能较小吗?在我看来,Multigrid可能不会更快,但我并不乐观。O(n)O(n)O(n) 注意:我正在考虑矩阵很大的情况。可以采用直接方法或迭代方法。

3
适用于许多右侧的稀疏线性求解器
我需要用多个右侧(300至1000)来解决相同的稀疏线性系统(300x300至1000x1000)。除了第一个问题外,我还想解决不同的系统,但是具有相同的非零元素(只是不同的值),那就是许多稀疏系统具有恒定的稀疏性模式。我的矩阵是不确定的。 分解和初始化的性能并不重要,但是求解阶段的性能很重要。目前,我正在考虑使用PaStiX或Umfpack,并且我可能会使用Petsc(支持这两个求解器)是否有能够利用我的特定需求(向量化,多线程)的库,或者我应该依赖于通用求解器?也许根据我的需要对其进行一些修改? 如果稀疏矩阵大到怎么办?106× 106106×10610^6 \times 10^6



4
是否有四对偶算术稀疏矩阵包?
我正在研究一些病态的大型稀疏线性方程组。我想使用双精度双精度算术或四进制双精度算术来解决它们。我知道有一个由Nakata Maho开发的名为MPACK的程序包,它可以在四对偶算术下执行数值线性代数计算。但是,它是为密集矩阵而不是稀疏矩阵设计的。您是否知道是否有四重对偶算术稀疏矩阵包?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.