2016-07-24 3 views
1

Я использую матрицы в numpy python. У меня есть матрица A и I, тогда я вычисляю ее обратную. Теперь я умножаю A на свой обратный, и я не получаю идентификационную матрицу. Может ли кто-нибудь указать, что здесь не так?Python numpy: Матричное умножение, дающее неправильный результат

A = matrix([ 
     [4, 3], 
     [3, 2] 
     ]); 

print (A.I)  # prints [[-2 3], [ 3 -4]] - correct 
print A.dot(A.T) # prints [[25 18], [18 13]]  - Incorrect 
print A*(A.T)  # prints [[25 18], [18 13]]  - Incorrect 

ответ

4

Вы используете точку на матрице и транспонированной матрицы (не инверсной) ...

In [16]: np.dot(A.I, A) 
Out[16]: 
matrix([[ 1., 0.], 
     [ 0., 1.]]) 

С транспонированная у вас есть результат, который вы показали:

In [17]: np.dot(A.T, A) 
Out[17]: 
matrix([[25, 18], 
     [18, 13]]) 
1

Вот еще один метод:

I работает только с matrix

вы можете использовать np.linalg.inv(x) для inverse

In [11]: import numpy as np 

In [12]: A = np.array([[4, 3], [3, 2]]) 

In [13]: B = np.linalg.inv(A) 

In [14]: A.dot(B) 
Out[14]: 
array([[ 1., 0.], 
     [ 0., 1.]])