Мне интересно, существует ли пакет 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. Кто-нибудь знает что-нибудь об этом? Пожалуйста, помогите! Заранее спасибо!