问题标签 [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.
eigenvalue - ARPACK模式3返回的特征值移位和反转
我的问题很可能在这个论坛和类似的论坛上很容易回答和重复,但奇怪的是找不到快速简单的答案。这是我的问题:
我在C中使用ARPACK来计算模式3的广义特征值问题的特征值和特征向量,即所谓的移位和反转方法,其原理是将特征值的分布更改为更合适的分布,从而提供更好的收敛速度,但我不知道 ARPACK 的例程如 dseupd 返回的特征值是什么。现在有点解释会很好:
移位和反转:想要计算问题的最大特征* K x = \lambda M x 你把问题改成这样: inv[K-\sigma M] M x = \mu x 你在特征值之间有以下关系: \mu = 1/(\lambda - \sigma)
所以我的问题很简单,似乎函数作为 dseupd 返回第二个问题的 \mu 特征值,这对我来说似乎很奇怪,因为没有你想要的。如果有人从 ARPACK 的文档或那里有任何东西知识和经验,对我和路过的人都有帮助
谢谢
python - 如何使用 CVXPY 扰动数据进行二次优化
我在这里描述了同样的问题CVXPY Quadratic Programming;ArpackNoConvergence 错误。
我想尝试 pertubation/trasformation 解决方案,但我不知道如何执行它。
我有一个像这样的二次问题https://www.cvxpy.org/examples/basic/quadratic_program.html以及所有矩阵 P、q、G、h、A、b。
只要矩阵很小(例如 150 个项目),求解器就可以工作。但是对于更大的问题,我会遇到上述问题。
如果有人能解释我如何扰乱数据(使用 Python),我将不胜感激。
谢谢你。
restart - ARPACK 的 ARNOLDI 迭代中没有重新启动
这更像是一个普遍的问题,而不是一个问题。我需要在一个大矩阵上运行 ARNOLDI 迭代,为此我使用 C 代码中的 ARPACK 或带有 scipy.sparse.linalg.eigsh 的 python 中的 ARPACK ,我真的不需要 ARPACK 来收敛。我想让 ARPACK 像 ARNOLDI 迭代的一个周期一样运行,并发送回其结果,无论它是否已经收敛。
我不确定我应该如何进行:设置 maxiter = 1 但我应该给 ARPACK 什么 tol ?托尔 = 1 ? 不知道如果我这样做会发生什么?
有没有人知道那条战线?
谢谢
maven - 微笑java库中arpack-ng/openblas/javacpp的使用
我正在尝试在 Java 中设置Smile机器学习库,但在使某些依赖项正常工作时遇到了一些问题。目前我在 Fedora 机器上,但我希望它可以在任何机器上工作,就像普通的 jar 一样。
下面是一些发生错误的示例代码:
现在 SpectralClustering 类使用了一些额外的依赖项。从我能找到的文档中(向下滚动到提到“某些算法依赖于 BLAS 和 LAPACK”的部分,我认为应该将这些依赖项添加到您的 pom.xml 中:
但是,这会导致以下 3 个错误:
- java.library.path 中没有 jnijavacpp
- java.library.path 中没有 jniopenblas_nolapack
- java.library.path 中没有 openblas_nolapack
所以我做了更多的研究,我遇到了这些不同的依赖关系。(我不确定“-platform”有何不同。)当我用这 3 个新依赖项替换上面的内容时:
这次我们取得了一些进展(我希望)并得到一个新的错误:
谁能帮我完成最后一部分?我需要添加另一个依赖项还是需要使用“dnf install ...”在外部安装软件?也许 Smile 类需要特定版本的 dseupd_c 方法?
干杯
scipy - scipy sparse svds 函数是否保证跨机器、操作系统、版本 wrt 输入的一致性?
假设我有一个给定的固定输入矩阵。
scipy
的稀疏 SVD对于我的机器(英特尔 macbook)上不同运行的相同输入svds
似乎是一致的。
svds
每次从一个处理器/机器/版本到另一个处理器/机器/版本的输入相同,是否保证产生相同的输出?或者它是特定于运行时的,并且对于给定的输入,从一个实例到另一个实例仅大致或几乎相同?
这对我来说很重要,因为虽然在大多数情况下几乎或大致相同,但存在一个对偶解,它在某些算法中的每个 SVD 分解都指向正交相反的方向(并且它根据随机播种从运行切换到运行在内部求解器中),我想确保这不会发生......
- 但是 - 虽然我的测试似乎表明它具有一致的运行时输出,但 scipy 的文档清楚地表明,至少对于他们的 k-eigvals 稀疏 svd 算法,不能保证“特征值的顺序”。
这似乎意味着 SVD 解决方案的任一侧(正常或对偶)都可能由其底层求解器返回……但 K-eigvals/eigvecs 算法与完整解决方案相比,有不同的技术可供选择。
julia - 在 Julia 中计算复厄米特稀疏矩阵的特征值
我正在使用大约 100000x100000 厄米特复杂 稀疏 矩阵,填充了大约 5% 的条目,并且想要计算特征值/特征向量。
到目前为止,我一直在使用Arpack.jl eigs(A)
。但是,一旦我将大小调到高于 5000,这将无法正常工作。
对于基准测试,我一直在使用以下代码生成一些 TestMatrices:
对于 n ~ 3000,eigs()
呼叫在我的机器上已经花费了 13 秒,对于更大的 n,它不会在任何“合理”时间内完成或直接退出。
有专门的包/方法吗?
任何帮助表示赞赏