Собственное значение и собственный вектор numpy

vals, vecs = numpy.linalg.eig([[1 , 2], [2, 1]])
print vals                                      #Output : [ 3. -1.]
print vecs                                      #Output : [[ 0.70710678 -0.70710678]
                                                #          [ 0.70710678  0.70710678]] 

Я не понимаю этих результатов. Пусть вектор A равен ([1,2], [2,1]), который я передал в аргумент eig. Основываясь на выводе, A * vecs должно быть равно vals * vec в зависимости от собственного значения и собственного вектора. A * vecs и vals * vecs дают мне значения ниже, которые не совпадают. Почему это так?

>>> a.dot(vecs)
array([[ 2.12132034,  0.70710678],
       [ 2.12132034, -0.70710678]])
>>> vals.dot(vecs)
array([ 1.41421356, -2.82842712])

person Ninja Dude    schedule 13.02.2018    source источник
comment
vals – это массив 1D, а A – массив 2D, поэтому вы получаете другой результат.   -  person Sociopath    schedule 13.02.2018
comment
Разве формула для собственных значений и собственных векторов не -> A * vecs = vals * vec? Я знаю, что это разные измерения. В этом случае значения, возвращаемые numpy, для меня странные. Что-то я еще не понимаю   -  person Ninja Dude    schedule 13.02.2018
comment
Возможный дубликат собственных векторов , созданных numpy.linalg.eig, не кажется правильным   -  person Sociopath    schedule 13.02.2018
comment
Попробуйте A @ vecs и vecs @ np.diag(vals)   -  person Paul Panzer    schedule 13.02.2018