Python numpy вычислить первое собственное значение и собственный вектор

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

7
задан Ray 20 October 2011 в 16:55
поделиться