Собственные векторы Python: различия между numpy.linalg, scipy.linalg и scipy.sparse.linalg

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является разреженным? (математически говоря, а не в виде разреженной матрицы) Может ли это быть неэффективным или даже давать неправильные результаты, если это предположение не выполняется?
  • Есть ли другие факторы, которые я должен учитывать при выборе среди них?

15
задан lvc 18 June 2012 в 13:12
поделиться