Only eigen vectors(for square matrix) or singlular vectors(for rectangular matrix) are not changed after applying this matrix to any set of data points. Best to see it for yourself. Here is example python code to play with.
Here we are defining matrix and get its eigen vectors and values:
A = np.array([[1, 5], [2, -4]])
L, V = np.linalg.eig(A)
Here we are drawing sample circle with radius one.
angle = np.linspace( 0 , 2 * np.pi , 150 )
radius = 1
x = radius * np.cos( angle )
y = radius * np.sin( angle )
figure, axes = plt.subplots( 1 )
axes.plot( x, y )
axes.set_aspect( 1 )
And eigen vectors:
for i in range(len(V)):
x = np.concatenate([[0,0],V[i]])
plt.quiver([x[0]], [x[1]], [x[2]], [x[3]],
angles='xy', scale_units='xy', scale=1, color=colors[i])
plt.title( 'Parametric Equation Circle' )
plt.show()
Result of the code above
And here we draw this circle tranformed by matrix A. As we can see directions of eigen vectors were not changed. And only those.
x= x.reshape(1,-1)
y = y.reshape(1, -1)
transformed_circle_input = np.concatenate((x,y), axis=0)
transformed_circle = np.dot(A,transformed_circle_input)
figure, axes = plt.subplots( 1 )
axes.plot( transformed_circle[0,:], transformed_circle[1,:] )
axes.set_aspect( 1 )
eigen1 = V[:,0]L[0]
eigen2 = V[:,1]L[1]
axes.quiver([0], [0], [eigen1[0]], [eigen1[1]],
angles='xy', scale_units='xy', scale=1, color=colors[0],)
axes.quiver([0], [0], [eigen2[0]], [eigen2[1]],
angles='xy', scale_units='xy', scale=1, color=colors[1],)
plt.title( 'Parametric Equation Circle Transformed by matrix A' )
plt.show()
Circle after matrix transformation