pythonnumpyscipyeigenvalue

Numpy transpose multiplication problem


I tried to find the eigenvalues of a matrix multiplied by its transpose but I couldn't do it using numpy.

testmatrix = numpy.array([[1,2],[3,4],[5,6],[7,8]])
prod = testmatrix * testmatrix.T
print eig(prod)

I expected to get the following result for the product:

5    11    17    23
11    25    39    53
17    39    61    83
23    53    83   113

and eigenvalues:

0.0000
0.0000
0.3929
203.6071

Instead I got ValueError: shape mismatch: objects cannot be broadcast to a single shape when multiplying testmatrix with its transpose.

This works (the multiplication, not the code) in MatLab but I need to use it in a python application.

Can someone tell me what I'm doing wrong?


Solution

  • You might find this tutorial useful since you know MATLAB.

    Also, try multiplying testmatrix with the dot() function, i.e. numpy.dot(testmatrix,testmatrix.T)

    Apparently numpy.dot is used between arrays for matrix multiplication! The * operator is for element-wise multiplication (.* in MATLAB).