问题标签 [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 投票
3 回答
5500 浏览

matlab - 使用 Matlab 2013a 进行标准化切割

我正在使用来自http://www.cis.upenn.edu/~jshi/software/Ncut_9.zip的标准化剪切包 (在 Windows 7 上)

这曾经与 Matlab2010a 一起工作得很好。但是我已经升级到 Matlab2013a(32 位学生版),现在我收到以下错误:

很明显in中的new_eigs()函数ncuts与最新Matlab中的ARPACK版本不兼容。

  • 有人知道解决方法吗?
  • Normalized 使用 Matlabeigs()函数的修改版本。为什么我不能只使用 Matlab 的内置eigs()而不是eigs_new()(它似乎确实有效)。
0 投票
2 回答
2356 浏览

r - 在 R 中计算稀疏矩阵的特征向量

我正在尝试计算mR 中大型稀疏矩阵的第一个特征向量。使用eigen()是不现实的,因为这里大意味着 N > 10 6

到目前为止,我发现我应该使用igraph包中的 ARPACK,它可以处理稀疏矩阵。但是我不能让它在一个非常简单的(3x3)矩阵上工作:

然后使用arpack()函数帮助示例中给出的代码来提取 2 个第一个特征向量:

我收到一条错误消息:

我不明白这个错误,因为这里的 ncv (3) 大于 nev (2),并且等于 N (3)。

我犯了一些愚蠢的错误还是有更好的方法来计算 R 中稀疏矩阵的特征向量?


更新

此错误显然是由于arpack()大写/小写 NCV 和 NEV 函数中的错误所致。

欢迎任何解决错误的建议(我试图查看包代码,但它太复杂了,我无法理解)或以其他方式计算特征向量。

0 投票
1 回答
1784 浏览

arpack - Windows 上的 Arpack(++)

我正在尝试让 Arpack 和 Arpack++ 在带有 Visual Studio 2010 的 Windows 7 中工作,并使用 swig 制作可与 C# 一起使用的界面。这基本上是为了创建一个基准,我将根据它来衡量使用 C# 解决特征向量问题的所有进一步尝试,但首先我需要它来工作。

我已经设法使用本指南编译了 Arpack ,尽管由于 g77 不再是 MinGW 附带的 Fortran 编译器,我们得到了 gfortran。进一步的更改ARmake.inc包括注释掉-cg89选项,这会产生错误(我不知道这填充 g77 的目的是什么,但 gfortran 不接受它)。

进一步遵循指南,思考“至少它现在已经编译,有或没有选项。” 我继续dllwrap。但是,该-lg2c选项未被接受,因为libg2c新版本的 MinGW 中不包含库文件。如果我尝试不使用该选项,我会从我的一些.o和相应的.f-files 中收到有关未定义引用的错误。我应该使用哪些库文件?我在做其他明显错误的事情吗?

0 投票
0 回答
2475 浏览

python - python scipy sparse matrix SVD with error ARPACK error 3: No shifts could be applied during an cycle of the Implicitly restarted Arnoldi iteration

我正在使用 scipy 对一些大数据进行稀疏矩阵 svd。matix 的大小约为 200,000*8,000,000,有 1.19% 的非零条目。我使用的机器有 160G 内存,所以我想内存应该不是问题。

所以这是我使用的一些代码:

错误信息如下:

当K=1000(即#eigen values=1000)时一切正常。当我尝试 K>=1250 时,错误开始出现。我也尝试了各种 ncv 值,仍然得到相同的错误消息......

任何建议和帮助表示赞赏。非常感谢 :)

0 投票
1 回答
222 浏览

c++ - 地址未正确传递给 Fortran 函数调用

我一直在尝试通过使用 extern "C" 在 C++ 中声明 ARPACK 函数来找到矩阵的特征向量:

然后,在我的代码主体中,我调用函数:

但是,在编译和执行之后,程序会出现段错误。使用 GDB 执行回溯显示 &INFO 传递给 zneupd_ 的地址为 0x0,这会导致当 zneupd_ 尝试为该位置分配新值时出现段错误。然而,当我移动到下一帧并使用 print &INFO 时,我被告知 INFO 存储在寄存器 0x​​28a27c 中。出于某种原因,我的程序没有正确地将 INFO 的位置​​传递给 zneupd_。更令人困惑的是znaupd_能够正确接收&INFO,并且能够毫无问题地访问和修改该位置的值。谁能告诉我为什么一个函数可以正确接收参数,而另一个不能?

0 投票
0 回答
292 浏览

c++ - 大规模稀疏矩阵求逆及其在 ARPACK OP 中的使用

我正在尝试将 matlab eigs 函数重写为 ARPACK 的 C++ 包装器,因为 arpack++(arpack 的 C++ 包装器)在常规模式下非常慢,移位反转模式无法正常工作。但我被困住了,我需要一脚。:)

Matlab函数:

是否有任何 C++ 库可以像上面的代码一样返回输出?我想问一下 qq 和 dgAsB 是什么意思。L和U的意思很清楚,pp也很清楚,我在大学学过,但我不知道其他人是什么意思。

Arpack OP

移位反转模式的 Arpack OP 定义为 (A - sigma*I)^-1*I*u。首先,我无法理解 matlab 代码与 Arpack OP 的关系。我想问一下是否存在任何 C++ 库,我可以用它在 C++ 中编写 AminusSigmaBsolve 的效率代码。

感谢您的回答,因为我想在 C++ 中使用像 Matlab 一样高效的程序。

0 投票
2 回答
1227 浏览

python - Scipy稀疏中eigs函数的特征值不一致

我正在使用 scipy.sparse.linalg 模块中的 eigs 函数,发现一些不一致的结果。运行两次相同的代码会得到不同的结果,即 np.allclose 的输出为 False。谁能解释这是为什么?

IPython 中的示例可以在这里看到(抱歉不知道如何发布 IPython 输出)

编辑 1

这不是@Kh40tiK 建议的对特征值进行排序的问题。见这里

编辑 2

在尝试了不同版本的 Scipy 并运行 @Kh40tiK 发布的脚本并额外调用 scipy.show_config() 之后,似乎使用 MKL 编译的 SciPy 版本是错误的。

使用 MKL:

没有 MKL:

0 投票
2 回答
1852 浏览

linux - 安装 ARPACK 时的 makefile 问题

我目前正在尝试安装 ARPACK,以便可以在 Armadillo 中将稀疏矩阵用于大型信息网络。的说明

但是,当我在更改文件所在的目录后尝试运行时make lib,却遇到了 README 的这一行的问题

在子文件夹中,平台只有四个不同的文件,分别是

默认为SUN4,平台的文件必须存在,因为该行

包含在生成文件中。但是,我的计算机具有 Sandy Bridge 架构(Ubuntu 12.04),我不确定是否应该使用该文件。

make lib此外,运行命令后出现以下错误(make all在此上下文中):

我刚刚使用 安装了 LAPACK 和 OpenBLAS make,但由于某种原因,我在这里遇到了问题。我在安装库方面不是很有经验,但是我遇到的文档并没有帮助我克服这一点。

0 投票
0 回答
1252 浏览

sparse-matrix - 使用 ARPACK 查找稀疏矩阵的特征向量和特征值(称为 PYTHON、MATLAB 或 FORTRAN 子程序)

几天前,我问了一个问题,如何找到大型稀疏矩阵的特征值。我没有得到答案,所以我决定描述一个潜在的解决方案。

一开始我想说的是,完全没有必要直接使用 FOTRAN 驱动程序调用 ARPACK 的子程序。那是相当困难的,我从来没有成功过。但是可以执行以下操作:

#

选项 1:Python

#

可以安装 numpy 和 scipy 并运行以下代码:

嗯,这一切都很好,特别是因为它让我们很高兴阅读 ARPACK 的“写得很好”的手册。

我对此有疑问,我认为它不适用于非对称矩阵。至少将结果与matlab进行比较并不是很有说服力。

#

选项 2:MATLAB

#

我认为使用 matlab 更简单,适用于非对称矩阵。好吧,我有一个 500000x500000 稀疏矩阵,所以这是否可以在 matlab 中工作....又是一杯茶!我必须注意,使用 python 我能够加载这种大小的矩阵并计算它的特征值而没有太多麻烦。

干杯,

0 投票
1 回答
1122 浏览

c++ - Arpack++ 稀疏特征求解器比等效的 Matlab eigs() 慢很多倍

我需要在 C++ 程序中计算一个非常大的稀疏对称矩阵的 n 个最小幅度特征向量。在我的示例中,假设 n=30,矩阵为 10k x 10k,大约有 70k 个非零值。

在对一些库进行大量研究和试验后,我发现 ARPACK++ 可能是我最好的选择,我按照此页面中的步骤安装了它。

使用以下代码段进行计算:

这让我得到了正确的结果,但大约需要 8.5 秒,而在 Matlab 中,我可以通过调用在大约 0.5 秒内得到相同的结果

从我对主题的研究中,Matlabeigs()还为相同的计算调用了 ARPACK fortran 库,所以我不明白为什么 C++ 包装器要慢得多。

此外,ARPACK++ 在许多情况下表现得非常奇怪,例如当我尝试使用浮点数而不是双精度数时,程序将简单地停止并且什么都不做,直到我将其取下,或者当尝试计算像 0 或 0.0001 这样的值附近的特征向量时,应该相当于'SM',它只是吐出垃圾和崩溃。

因此,我怀疑 ARPACK++ 是否真的那么慢,或者所有这些都是一些错误配置/安装的症状,如果是,我该怎么做才能解决它。感谢您的任何帮助,您可以提供。