问题标签 [arpack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
222 浏览

sparse-matrix - scipy.sparse.linalg.eigsh中LM和移位反转模式之间违反直觉的速度差异?

我正在尝试使用 scipy.sparse.linalg.eigsh 找到 Python 中稀疏 Hermitian 矩阵列表的最小(如最负数,而不是最低量级)几个特征值。矩阵约为 1000x1000,列表长度约为 500-2000。此外,我知道所有矩阵的特征值的上限和下限——分别称它们为eig_UBeig_LB

我试过两种方法:

  1. 使用 sigma= eig_LB的移位反转模式。
  2. 从每个矩阵的对角线中减去eig_UB(从而将最小的特征值转换为最大幅度的特征值),使用默认 eigsh 设置对生成的矩阵进行对角化(无移位反转模式并使用 which='LM'),然后将eig_UB添加到得到的特征值。

两种方法都有效且结果一致,但方法 1 的速度大约快 2-2.5 倍。这似乎违反直觉,因为(至少按照我对 eigsh 文档的理解)移位反转模式从对角线中减去 sigma,反转矩阵,然后找到特征值,而默认模式直接找到最大幅度的特征值。有谁知道什么可以解释性能差异?

另一条信息:我已经检查过,移位反转产生的矩阵(即,如果 M 是原始矩阵,则为 (M-sigma*identity)^(-1))不再稀疏,这似乎就像它应该使找到它们的特征值需要更长的时间。

0 投票
2 回答
131 浏览

c++ - 使用 Arpack EigenLibrary Wrapper 处理小矩阵的奇怪行为

我想使用 Eigen 库的 ArpackWrapper 解决以下广义 EVP:

在此处输入图像描述

K_e 是 SPD。通常 K_g 是不定的和单数的,但对于这个 MVP,它只是不定的。此外,我对最小的特征值感兴趣。对于 300kx300k 的大型系统,我获得了合理的结果,但对于这个小例子,结果看起来很奇怪。读取的前 4 个结果特征值

对于请求较少的特征值solverEig.info()返回Eigen::NoConvergence

如果我使用 Maple 来计算我得到的特征值

可以将其插入问题陈述中以查看其正确性。

因此,我的问题是为什么它没有产生正确的结果?这是 arpack 还是 eigen wrapper 的问题?或者很可能是我对 arpack 或 eigen wrapper 的错误使用/理解。

版本:

特征 3.3.7

Arpack https://github.com/opencollab/arpack-ng不同的版本导致相同的行为

编码:

文件:

ke.txt

公斤.txt

0 投票
1 回答
113 浏览

installation - 有没有人使用 preCICE 适配器成功安装了 Calculix 2.16?

我正在尝试安装 2.16 版本的 Calculix。根据( https://github.com/precice/calculix-adapter/wiki/Installation-instructions-for-CalculiX )中描述的安装到我的系统(Ubuntu 16)时,我收到一条错误消息

(Makefile:66:home/user/CalculiX/CalculiX/ccx_2.16/src/Makefile.inc:没有这样的文件或目录)。

这是 Makefile 第 66 行的代码:

我试图将 Makefile.inc 复制到这两个目录。我尝试从 SPOOLES、ARPACK 和 yaml-cpp 开始重新安装。但是当我需要使用“make”来构建库时,我还没有在最后一步做对,如 wiki “现在在 calculix-adapter-master 文件夹中编辑 Makefile 以设置库的路径(SPOOLES, CCX、ARPACK、YAML)并使用 make 构建”。任何人都可以为这个问题提供一些建议。谢谢你的帮助。

0 投票
1 回答
523 浏览

julia - 稀疏矩阵对角化的快速方法(julia):为什么 arpack 这么慢?

对于我的问题,我只对稀疏实对称矩阵 A 的几个特征态(具有最小特征值)感兴趣。据我所知,arpack 使用不同的方法,并且应该比 LinearAlgebra 包的完全对角化快得多。为什么在我的示例中速度要慢得多?

0 投票
2 回答
610 浏览

python - CVXPY 二次规划;ArpackNoConvergence 错误

我正在尝试使用 Python 包 CVXPY 来解决第一种形式的凸二次规划问题:https ://www.cvxpy.org/examples/basic/quadratic_program.html ,使用以下代码

但是,对于某些数据,它给了我错误

通过搜索互联网,似乎可以通过增加 ARPACK 中的迭代次数或增加容差来解决此问题。CVXPY 有 max_iters 和绝对精度的选项,但这些似乎不会影响 ARPACK 中的迭代次数,我假设它们适用于求解器的更高级别部分。

我在网上找不到任何关于这个特定问题的参考资料,或者确实找不到与 CVXPY 一起使用的 ARPACK。我对此感到很困惑,非常感谢任何帮助。

0 投票
1 回答
210 浏览

c++ - 犰狳 eigs_sym(A,k) 用于复稀疏矩阵 A

要找到稀疏矩阵“A”的 10 个最小特征值,下面的最小代码效果很好:

但是当我将 A 更改为复杂的稀疏矩阵时,例如:

使用相同的编译标志,我得到以下没有匹配的函数错误:

我从http://arma.sourceforge.net/docs.html#config_hpp知道

ARMA_USE_ARPACK 启用 ARPACK 或 ARPACK 的高速替代。犰狳需要 ARPACK 用于复杂稀疏矩阵的特征分解,即。eigs_gen()、eigs_sym() 和 svds()

所以我更改了 config.hpp 文件,这是我config.hpp文件中的相应行:

更多信息:我可以毫无问题地从 gfortran 运行 arpack。

知道怎么做吗?提前谢谢你的帮助。

0 投票
0 回答
288 浏览

python - CVXPY 在基本二次问题上随机失败

我发现 CVXPY 随机失败并出现以下错误:

下面的代码是一个最小示例,它只是尝试在没有约束、单位相关矩阵和正态分布均值向量的情况下进行均值方差优化。大约每千次运行失败一次。我要求它使用哪个求解器似乎并不重要,这让我认为它无法设置问题?

0 投票
0 回答
106 浏览

python - igraph上特征向量的ARPACK错误 - python

当我尝试从一些鄂尔多斯图中获取社区时,我收到了这个错误:

InternalError:d:\bld\python-igraph_1588168334861\work\vendor\build\igraph\igraph-0.9.0-pre+-msvc\src\arpack.c:1001 处出错:ARPACK 错误,达到最大迭代次数

我正在创建图表并将它们放在一个列表中:

然后我尝试让社区:

第一个循环有效,错误发生在 9 个完整循环后。

0 投票
0 回答
79 浏览

fortran - PARPACK 实现遇到内存错误

我正在 Fortran 90 中制作一个模块以在给定矩阵上运行 PARPACK。我有一个现有的 ARPACK 代码,它按预期正常运行。我尝试将其转换为 PARPACK 并遇到内存清除错误。我对编码和fortran相当陌生,请原谅我犯的任何错误。

编码:

对于大量多余的行和评论,我深表歉意,我还没有清理它以完成最终确定。

当我在单个线程上运行代码时./a.out,我得到以下输出:

第45行ptestcall parp 第3行ptestuse parpack(name of the module) 主要代码如下:

当邮件程序试图退出子程序时,内存错误发生在子程序的最后。我已经通过将语句打印为子例程的最后一行来验证这一点。并且在运行mpirun -np 4 a.out时,代码只是进入 pdneupd 进程并永远坐在那里。有人可以帮忙吗?

0 投票
1 回答
145 浏览

python - 使用 scipy.sparse.linalg.eigs 计算复杂特征值

鉴于以下输入 numpy 2d-arrayA可以通过文件通过以下链接hill_mat.npy检索,如果我可以使用像scipy.sparse.linalg.eigs这样的迭代求解器仅计算其特征值的一个子集,那就太好了。

首先,一点上下文。该矩阵A由大小的二次特征值问题产生,N该问题已在双倍大小的等效特征值问题中线性化2*NA具有以下结构(蓝色为零):

A_imshow.png

以及以下特点:

的真实尺寸A比这个可重复的小例子大得多。95%我希望真实的稀疏率和形状接近(5508, 5508)这种情况。

得到的特征值A复数(以复共轭对的形式出现),我对模数虚部最小的特征值更感兴趣。

问题:使用直接求解器时:

计算时间迅速变得令人望而却步。因此,我希望使用稀疏算法:

但似乎 ARPACK 没有以这种方式找到任何特征值。从scipy/arpack 教程中,当寻找像 的小特征值时,应该通过指定kwargwhich = 'SI'来使用所谓的移位反转模式,为了让算法知道它可以在哪里找到这些特征值。尽管如此,我所有的尝试都没有产生任何结果......sigma

是否有对此功能更有经验的人帮我完成这项工作?

下面是一个完整的代码片段: