Description
Solve the following using Python with numpy.
In numpy, there are some handy ways of working with matrixes (they are all explained later in this document):
| import numpy as np from numpy.linalg import inv
# Creating matrices A = np.array([[ 1, 2 ],[ 3, 4]]) B = np.array([[ 9, 8 ],[ 7, 6]]) # Transposing: A.T # A transposed (danish: A transponeret) B.T # B transposed # Matrix multiplication: A @ B # Inverse: inv(A) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Figure 1: Basic matrix functionality with numpy.
In the following, when talking about multiplication, we implicitly mean matrix multiplication (same as dot product).
Task 1
Given the two following matrices
- Find AT
- Find BT
- Find AB (matrix multiplication). Compare with simple multiplication (using * instead of @ in Python). Can you see what is the difference?
- Find ABT
- Compare ABT and BTAT
- Find (AT)T
- Find AAT
Task 2
Given
- Find AB
- Find BA
Confirm that they are different! Clearly, when doing matrix multiplication, order matters! AB 6= BA, so matrix multiplication is not commutative.
Task 3
The inverse of a matrix is found by
(1)
As seen in listing 1, the inverse of a matrix can be found easily with numpy (after having imported numpy.linalg.inv) by: inv(A). Using the same matrices from Task 2:
- Find A−1
- Find B−1
- Find AA−1. Look closely at the result. (d) Find A−1A. Look closely at the result.
- Find BB−1. Look closely at the result.
- Find B−1B. Do you start to see a pattern?
It appears that a matrix multiplied with its inverse always gives .
Incidentally, a matrix with only ones in the diagonal is called an identity matrix, often denoted I.
Task 4
Given
(a) Find A−1
Oops. We see that not all matrices have an inverse! Looking at equation 1 (the equation for finding the inverse), can you figure out why? (hint: look at the denominator!)
Task 5
Plotting (lines, graphs, coordinates, etc) can be done using matplotlib. Try the following:
| import numpy as np from matplotlib import pyplot as plt from numpy.linalg import inv
xs = np.array([0,0,3,3,0,1.5,3]) # List of x coordinates ys = np.array([1,0,0,1,1,2 ,1]) # List of y coordinates fig = plt.figure() fig, ax = plt.subplots() xs_ys = np.array([xs,ys]) ax.axis(’equal’) # Plot the points ax.plot( *xs_ys, ’-’, color=’b’) # Create a rotation matrix rot = np.array([[1, 0],[0, 1]]) # <– CHANGE THIS # turn the two lists (xs, ys) into a list of (x,y) tuples points = np.array([[x,y] for x,y in zip(xs,ys)]) # Make the transformation: points_rot = (points @ rot) # Turn it into a row of xs and a row of ys: xs_ys_rot = np.array([points_rot[:,0], points_rot[:,1]]) # Finally, plot it ax.plot( *xs_ys_rot, ’-’, color=’r’) fig |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
(a) Set the rotation matrix (line 18) to rotate the shape 45 degrees ( radians).







