Мне было интересно, есть ли пакет Python, numpy или другой, который имеет функцию, которая вычисляет первое собственное значение и собственный вектор малой матрицы, скажем, 2x2. Я мог бы использовать пакет linalg в numpy следующим образом.
import numpy as np
def whatever():
A = np.asmatrix(np.rand(2, 2))
evals, evecs = np.linalg.eig(A)
#Assume that the eigenvalues are ordered from large to small and that the
#eigenvectors are ordered accordingly.
return evals[0], evecs[:, 0]
Но это занимает очень много времени. Я подозреваю, что это потому, что NumPy вычисляет собственные векторы посредством своего рода итеративного процесса. Поэтому мне было интересно, существует ли гораздо более быстрый алгоритм, который возвращает только первое (наибольшее) собственное значение и собственный вектор, поскольку мне нужен только первый.
Конечно, для матриц 2x2 я могу написать функцию, которая аналитически вычисляет собственное значение и собственный вектор, но тогда возникают проблемы с вычислениями с плавающей запятой, например, когда я делю очень большое число на очень маленькое число, я получаю бесконечность или NaN. Кто-нибудь знает что-нибудь об этом? Пожалуйста помоги! Заранее спасибо!