# 07 Pre-Class Assignment: Transformation Matrix¶

## Readings for this topic (Recommended in bold)¶

## 1. The Inverse Matrix (aka \(A^{-1}\))¶

For some (not all) **square** matrices \(A\), there exists a special matrix called the Inverse Matrix, which is typically written as \(A^{-1}\) and when multiplied by \(A\) results in the identity matrix \(I\):

Some properties of an Inverse Matrix include:

\((A^{-1})^{-1} = A\)

\((cA)^{-1} = \frac{1}{c}A^{-1}\)

\((AB)^{-1} = B^{-1}A^{-1}\)

\((A^n)^{-1} = (A^{-1})^n\)

\((A^\top)^{-1} = (A^{-1})^\top\) here \(A^\top\) is the tranpose of the matrix \(A\).

If you know that \(A^{-1}\) is an inverse matrix to \(A\), then solving \(Ax=b\) is simple, just multiply both sides of the equation by \(A^{-1}\) and you get:

If we apply the definition of the inverse matrix from above we can reduce the equation to:

We know \(I\) times \(x\) is just \(x\) (definition of the identity matrix), so this further reduces to:

To conclude, solving \(Ax=b\) when you know \(A^{-1}\) is really simple. All you need to do is multiply \(A^{-1}\) by \(b\) and you know \(x\).

✅ **DO THIS:** Find a Python numpy command that will calculate the inverse of a matrix and use it invert the following matrix `A`

. Store the inverse in a new matirx named `A_inv`

```
import numpy as np
import sympy as sym
sym.init_printing(use_unicode=True) # Trick to make matrixes look nice in jupyter
A = np.matrix([[1, 2, 3], [4, 5, 6], [7,8,7]])
sym.Matrix(A)
```

```
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-1-f30c35d3bf8d> in <module>
1 import numpy as np
----> 2 import sympy as sym
3 sym.init_printing(use_unicode=True) # Trick to make matrixes look nice in jupyter
4
5 A = np.matrix([[1, 2, 3], [4, 5, 6], [7,8,7]])
ModuleNotFoundError: No module named 'sympy'
```

```
#put your answer to the above question here.
```

Lets check your answer by multiplying `A`

by `A_inv`

.

```
A * A_inv
```

```
np.allclose(A*A_inv, [[1,0,0],[0,1,0],[0,0,1]])
```

✅ **QUESTION:** What function did you use to find the inverse of matrix \(A\)?

Put your answer to the above question here

### How do we create an inverse matrix?¶

From previous assignments, we learned that we could string together a bunch of Elementary Row Operations to get matrix (\(A\)) into it’s Reduced Row Echelon form. We now know that we can represent Elementary Row Operations as a sequence of Elementary Matrices as follows:

If \(A\) reduces to the identity matrix (i.e. \(A\) is row equivalent to \(I\)), then \(A\) has an inverse and its inverse is just all of the Elementary Matrices multiplied together:

Consider the following matrix.

$\(
A = \left[
\begin{matrix}
1 & 2 \\
4 & 6
\end{matrix}
\right]
\)$

```
A = np.matrix([[1, 2], [4,6]])
```

It can be reduced into an identity matrix using the following elementary operators

Words |
Elementary Matrix |
---|---|

Adding -4 times row 1 to row 2. |
$\(E_1 = \left[\begin{matrix}1 & 0 \\ -4 & 1 \end{matrix}\right]\)$ |

Adding row 2 to row 1. |
$$ |

E_2 = \left[ \begin{matrix} 1 & 1 \ 0 & 1 \end{matrix} \right] $\( | | Multiplying row 2 by \)-\frac{1}{2}\(.| \)\( E_3 = \left[ \begin{matrix} 1 & 0 \\ 0 & -\frac{1}{2} \end{matrix} \right] \)$ |

```
E1 = np.matrix([[1,0], [-4,1]])
E2 = np.matrix([[1,1], [0,1]])
E3 = np.matrix([[1,0],[0,-1/2]])
```

We can just check that the statment seems to be true by multiplying everything out.

```
E3*E2*E1*A
```

✅ **DO THIS:** Combine the above elementary Matrices to make an inverse matrix named `A_inv`

```
# Put your answer to the above question here.
```

✅ **DO THIS:** Verify that `A_inv`

is an actual inverse and chech that \(AA^{-1} = I\).

```
# Put your code here.
```

✅ **QUESTION:** Is an invertible matrix is always square? Why or why not?

Put your answer to the above question here.

✅ **QUESTION:** Is a square matrix always invertible? Why or why not?

Put your answer to the above question here.

✅ **QUESTION:** Describe the Reduced Row Echelon form of a square, invertible matrix.

Put your answer to the above question here.

✅ **QUESTION:** Is the following matrix in the Reduced Row Echelon form?

Put your answer to the above question here.

✅ **QUESTION:** If the matrix shown above is not in Reduced Row Echelon form. Name a rule that is violated?

Put your answer to the above question here.

✅ **QUESTION:** What is the size of the matrix described in the previous QUESTION?

\(4 \times 6\)

\(6 \times 4\)

\(3 \times 6\)

\(5 \times 3\)

Put your answer to the above question here.

✅ **QUESTION:** Describe the elementary row operation that is implemented by the following matrix

Put your answer to the above question here.

## 2. Transformation Matrix¶

Consider the following set of points:

```
%matplotlib inline
import matplotlib.pylab as plt
x = [0.0, 0.0, 2.0, 8.0, 10.0, 10.0, 8.0, 4.0, 3.0, 3.0, 4.0, 6.0, 7.0, 7.0, 10.0,
10.0, 8.0, 2.0, 0.0, 0.0, 2.0, 6.0, 7.0, 7.0, 6.0, 4.0, 3.0, 3.0, 0.0]
y = [0.0, -2.0, -4.0, -4.0, -2.0, 2.0, 4.0, 4.0, 5.0, 7.0, 8.0, 8.0, 7.0, 6.0, 6.0,
8.0, 10.0, 10.0, 8.0, 4.0, 2.0, 2.0, 1.0, -1.0, -2.0, -2.0, -1.0, 0.0, 0.0]
plt.plot(x,y, color='green');
plt.axis('equal');
```

We can rotate these points around the origin by using the following simple set of equations:

This can be rewritten as the following system of matrices:

We can rotate the points around the origin by \(\pi/4\) (i.e. \(45^o\)} as follows:

```
import numpy as np
import sympy as sym
sym.init_printing(use_unicode=True) # Trick to make matrices look nice in jupyter
points = np.matrix([x,y])
```

```
angle = np.pi/4
R = np.matrix([[np.cos(angle), -np.sin(angle)], [np.sin(angle), np.cos(angle)]]);
sym.Matrix(R)
```

```
p=R*points
plt.plot(p[0].T,p[1].T);
plt.axis('equal');
#print(p[0].T)
```

We can even have a little fun and keep applying the same rotation over and over again.

```
# Apply R and plot 8 times
for i in range(0,8):
p = R * p
plt.plot(p[0].T,p[1].T);
plt.axis('equal');
```

✅ **QUESTION:** In the above code what does the `T`

call in `p[0].T`

do?

Put your answer here

## 3. Assignment wrap-up¶

✅ **Assignment-Specific QUESTION:** If the matrix shown above is not in Reduced Row Echelon form. Name a rule that is violated?

Put your answer to the above question here

✅ **QUESTION:** Summarize what you did in this assignment.

Put your answer to the above question here

✅ **QUESTION:** What questions do you have, if any, about any of the topics discussed in this assignment after working through the jupyter notebook?

Put your answer to the above question here

✅ **QUESTION:** How well do you feel this assignment helped you to achieve a better understanding of the above mentioned topic(s)?

Put your answer to the above question here

✅ **QUESTION:** What was the **most** challenging part of this assignment for you?

Put your answer to the above question here

✅ **QUESTION:** What was the **least** challenging part of this assignment for you?

Put your answer to the above question here

✅ **QUESTION:** What kind of additional questions or support, if any, do you feel you need to have a better understanding of the content in this assignment?

Put your answer to the above question here

✅ **QUESTION:** Do you have any further questions or comments about this material, or anything else that’s going on in class?

Put your answer to the above question here

✅ **QUESTION:** Approximately how long did this pre-class assignment take?

Put your answer to the above question here

Written by Dr. Dirk Colbry, Michigan State University

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.