NumPy linalg.eig

У меня есть эта неприятная проблема, и я еще не понял ее. У меня есть матрица, и я хочу найти собственные векторы, поэтому я пишу:

val,vec = np.linalg.eig(mymatrix)

а потом я получил век. Моя проблема в том, что когда другие из моей группы делают то же самое с той же матрицей (mymatrix), мы не получаем одинаковые собственные векторы !!

Кто-нибудь, кто может дать объяснение?


person Guest    schedule 28.03.2011    source источник
comment
Насколько отличаются выходы? Можете ли вы привести пример?   -  person JoshAdel    schedule 28.03.2011
comment
Это почти то же самое, но цифры другие.   -  person Guest    schedule 28.03.2011
comment
не могли бы вы быть немного более количественным? Мы говорим об ошибках, близких к точности с плавающей запятой вашей машины? Опубликуйте результаты простого (небольшого) тестового примера, который иллюстрирует вашу проблему. Это упростит ответ на ваш вопрос.   -  person JoshAdel    schedule 28.03.2011
comment
например, я получаю что-то вроде: array([[-4.4, 6.6, -1.7], [7.1, 7.8, -2,9], [-9.8, 2.3, -1.4]]) А они: array([[4.4 , -6.6, 1.7], [7.1, 7.8, -2,9], [-9.8, 2.3, -1.4]]) Итак, часть моего результата такая же, но первый в моем выводе умножается на -1   -  person Guest    schedule 29.03.2011


Ответы (1)


Фундаментальное свойство собственного вектора x:

A x = lambda x

для некоторой константы lambda.

Если x является собственным вектором, то и -x:

A (-x) = - A x = - lambda x = lambda (-x)

Заметим также, что набор собственных векторов может быть не уникален. Например, любой вектор (подходящей размерности) может быть собственным вектором единичной матрицы.

np.linalg.eig пытается вернуть набор собственных векторов, но не гарантирует конкретный, уникальный набор.

person unutbu    schedule 28.03.2011
comment
Благодарю вас! могу ли я что-то сделать со своим кодом, чтобы получить другой результат? Или я должен жить с моим компьютером, выбранным для расчета собственных векторов? - person Guest; 29.03.2011
comment
Вы должны жить с тем, что выбирает ваш компьютер. - person Robert Kern; 29.03.2011
comment
@Guest: если вам нужно уникальное представление собственных пространств вашей матрицы, вы можете вычислить Координаты Грассмана каждого собственного пространства (но это, вероятно, выходит далеко за рамки этого форума). - person Sven Marnach; 29.03.2011