gpt4 book ai didi

Python 特征向量 : differences among numpy. linalg、scipy.linalg 和 scipy.sparse.linalg

转载 作者:太空狗 更新时间:2023-10-29 17:05:57 26 4
gpt4 key购买 nike

Scipy 和 Numpy 在它们之间具有三个不同的函数来查找给定方阵的特征向量,它们是:

  1. numpy.linalg.eig(a)
  2. scipy.linalg.eig(a) , 和
  3. scipy.sparse.linalg.eig(A, k)

特别关注我在最后两个中删除的所有可选参数都保留默认值并且 a/A 是实值的情况,我很好奇这三者之间的区别,这些区别在文档中是模棱两可的——尤其是:

  • 为什么 (3) 会提示它找不到所有个特征向量?
  • 为什么必须其他两个计算所有解决方案 - 为什么他们不采用 k 参数?
  • (1) 有一条注释说特征值没有按特定顺序返回; (3) 有一个可选参数来控制顺序。 (2) 是否对此做出任何保证?
  • (3) 是否假设 A 是稀疏的? (从数学上讲,而不是表示为 scipy 稀疏矩阵)如果这个假设不成立,它会不会效率低下,甚至给出错误的结果?
  • 在进行选择时,我还应该考虑其他因素吗?

最佳答案

第三个的特殊行为与 Lanczos algorithm 有关。 ,这对稀疏矩阵非常有效。 scipy.sparse.linalg.eig 的文档说它使用 ARPACK 的包装器,ARPACK 又使用“隐式重新启动的 Arnoldi 方法 (IRAM),或者在对称矩阵的情况下,相应的变体Lanczos 算法。” (1) .

现在,Lanczos 算法具有对大特征值效果更好的特性(实际上,它使用最大特征值):

In practice, this simple algorithm does not work very well for computing very many of the eigenvectors because any round-off error will tend to introduce slight components of the more significant eigenvectors back into the computation, degrading the accuracy of the computation. (2)

所以,虽然 Lanczos 算法只是一种近似,但我猜想其他两种方法使用算法来找到精确特征值——而且看起来所有特征值,这可能取决于所使用的算法,也是。

关于Python 特征向量 : differences among numpy. linalg、scipy.linalg 和 scipy.sparse.linalg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11083660/

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