gpt4 book ai didi

python - 计算大矩阵特征值的最快方法

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:40 42 4
gpt4 key购买 nike

到目前为止,我使用 numpy.linalg.eigvals 来计算至少有 1000 行/列的二次矩阵的特征值,并且在大多数情况下,大约五分之一的条目非零(我不知道这是否应该被认为是稀疏矩阵)。我找到了另一个 topic表明 scipy 可能会做得更好。

但是,由于我必须计算数十万个大小不断增加的大型矩阵的特征值(可能高达 20000 行/列,是的,我需要它们的所有特征值),这总是需要很长时间。如果我能加快速度,即使是最微小的一点,也很可能是值得的。

所以我的问题是:在不限制自己使用 Python 的情况下,是否有更快的方法来计算特征值?

最佳答案

@HighPerformanceMark 在评论中是正确的,因为 numpy(LAPACK 等)背后的算法是一些最好的,但也许不是最先进的,用于对角化完整矩阵的数值算法。但是,如果您有以下条件,则可以显着加快速度:

稀疏矩阵

如果您的矩阵是稀疏的,即填充条目的数量是 k,则 k<<N**2那你应该看看 scipy.sparse .

带状矩阵

有许多算法可用于处理特定 banded structure 的矩阵.查看 scipy.linalg.solve.banded 中的求解器.

最大特征值

大多数时候,您并不是真的需要所有特征值。事实上,大部分物理信息来自最大的特征值,其余只是 transient 的高频振荡。在这种情况下,您应该研究快速收敛到那些最大特征值/向量的特征值解决方案,例如 Lanczos algorithm .

关于python - 计算大矩阵特征值的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17468054/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com