import numpy as np
%matplotlib inline
from matplotlib import pyplot
## Helper script for plotting gridlines and vectors
## Source : https://github.com/engineersCode/EngComp4_landlinear
from urllib.request import urlretrieve
URL = 'https://go.gwu.edu/engcomp4plot'
urlretrieve(URL, 'plot_helper.py')
('plot_helper.py', <http.client.HTTPMessage at 0x7fc7a1c3f0d0>)
## Import functions plot_vector, plot_linear_transformation, plot_linear_transformations from the helper script
from plot_helper import *
This wonderful video by 3 Blue 1 Brown expplains this concept through beautiful visualizations - YouTube link
Let’s start with the below example by considering a 2x2 matrix A.
A = np.array([[3, 2],
[-2, 1]])
We also have our basis vectors in 2-D coordinate system as usual.
i_hat = np.array([1, 0])
j_hat = np.array([0, 1])
How A transforms i_hat ?
A @ i_hat
array([ 3, -2])
How A transforms j_hat?
A @ j_hat
array([2, 1])
How the matrix A transforms the 2-D space?
Here’s a screenshot of the above 3B1B video that shows how we can understand this 2-D transformation by simply looking at the columns of the matrix A.
plot_linear_transformation(A)
M = np.array([[1,2], [2,1]])
plot_linear_transformation(M)
N = np.array([[1,2],[-3,2]])
plot_linear_transformation(N)
rotation = np.array([[0,-1], [1,0]])
plot_linear_transformation(rotation)
shear = np.array([[1,1], [0,1]])
plot_linear_transformation(shear)
scale = np.array([[2,0], [0,0.5]])
plot_linear_transformation(scale)
plot_linear_transformation(shear@rotation)
plot_linear_transformations(rotation, shear)
plot_linear_transformations(shear, rotation)
M = np.array([[1,2], [2,1]])
M_inv = np.linalg.inv(M)
plot_linear_transformations(M, M_inv)
Degenerate
D = np.array([[-2,-1], [1,0.5]])
plot_linear_transformation(D)
PS: If you find this concept of matrix multiplication exciting, I would urge you to check out the YouTube playlist, Essence of Linear Algebra, from 3Blue1Brown. There is also a free MOOC available from the George Washington University here and paid one on Coursera available here