问题标签 [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.
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 使用 Matlab
eigs()
函数的修改版本。为什么我不能只使用 Matlab 的内置eigs()
而不是eigs_new()
(它似乎确实有效)。
r - 在 R 中计算稀疏矩阵的特征向量
我正在尝试计算m
R 中大型稀疏矩阵的第一个特征向量。使用eigen()
是不现实的,因为这里大意味着 N > 10 6。
到目前为止,我发现我应该使用igraph
包中的 ARPACK,它可以处理稀疏矩阵。但是我不能让它在一个非常简单的(3x3)矩阵上工作:
然后使用arpack()
函数帮助示例中给出的代码来提取 2 个第一个特征向量:
我收到一条错误消息:
我不明白这个错误,因为这里的 ncv (3) 大于 nev (2),并且等于 N (3)。
我犯了一些愚蠢的错误还是有更好的方法来计算 R 中稀疏矩阵的特征向量?
更新
此错误显然是由于arpack()
大写/小写 NCV 和 NEV 函数中的错误所致。
欢迎任何解决错误的建议(我试图查看包代码,但它太复杂了,我无法理解)或以其他方式计算特征向量。
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 中收到有关未定义引用的错误。我应该使用哪些库文件?我在做其他明显错误的事情吗?
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 值,仍然得到相同的错误消息......
任何建议和帮助表示赞赏。非常感谢 :)
c++ - 地址未正确传递给 Fortran 函数调用
我一直在尝试通过使用 extern "C" 在 C++ 中声明 ARPACK 函数来找到矩阵的特征向量:
然后,在我的代码主体中,我调用函数:
但是,在编译和执行之后,程序会出现段错误。使用 GDB 执行回溯显示 &INFO 传递给 zneupd_ 的地址为 0x0,这会导致当 zneupd_ 尝试为该位置分配新值时出现段错误。然而,当我移动到下一帧并使用 print &INFO 时,我被告知 INFO 存储在寄存器 0x28a27c 中。出于某种原因,我的程序没有正确地将 INFO 的位置传递给 zneupd_。更令人困惑的是znaupd_能够正确接收&INFO,并且能够毫无问题地访问和修改该位置的值。谁能告诉我为什么一个函数可以正确接收参数,而另一个不能?
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 一样高效的程序。
linux - 安装 ARPACK 时的 makefile 问题
我目前正在尝试安装 ARPACK,以便可以在 Armadillo 中将稀疏矩阵用于大型信息网络。的说明
但是,当我在更改文件所在的目录后尝试运行时make lib
,却遇到了 README 的这一行的问题
在子文件夹中,平台只有四个不同的文件,分别是
默认为SUN4,平台的文件必须存在,因为该行
包含在生成文件中。但是,我的计算机具有 Sandy Bridge 架构(Ubuntu 12.04),我不确定是否应该使用该文件。
make lib
此外,运行命令后出现以下错误(make all
在此上下文中):
我刚刚使用 安装了 LAPACK 和 OpenBLAS make
,但由于某种原因,我在这里遇到了问题。我在安装库方面不是很有经验,但是我遇到的文档并没有帮助我克服这一点。
sparse-matrix - 使用 ARPACK 查找稀疏矩阵的特征向量和特征值(称为 PYTHON、MATLAB 或 FORTRAN 子程序)
几天前,我问了一个问题,如何找到大型稀疏矩阵的特征值。我没有得到答案,所以我决定描述一个潜在的解决方案。
一开始我想说的是,完全没有必要直接使用 FOTRAN 驱动程序调用 ARPACK 的子程序。那是相当困难的,我从来没有成功过。但是可以执行以下操作:
#选项 1:Python
#可以安装 numpy 和 scipy 并运行以下代码:
嗯,这一切都很好,特别是因为它让我们很高兴阅读 ARPACK 的“写得很好”的手册。
我对此有疑问,我认为它不适用于非对称矩阵。至少将结果与matlab进行比较并不是很有说服力。
#选项 2:MATLAB
#我认为使用 matlab 更简单,适用于非对称矩阵。好吧,我有一个 500000x500000 稀疏矩阵,所以这是否可以在 matlab 中工作....又是一杯茶!我必须注意,使用 python 我能够加载这种大小的矩阵并计算它的特征值而没有太多麻烦。
干杯,
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++ 是否真的那么慢,或者所有这些都是一些错误配置/安装的症状,如果是,我该怎么做才能解决它。感谢您的任何帮助,您可以提供。