In [ ]:
from sympy import *
init_printing(use_latex='mathjax')
x, y, z = symbols('x,y,z')
r, theta = symbols('r,theta', positive=True)

Matrices

The SymPy Matrix object helps us with small problems in linear algebra.

In [ ]:
rot = Matrix([[r*cos(theta), -r*sin(theta)],
              [r*sin(theta),  r*cos(theta)]])
rot

Standard methods

In [ ]:
rot.det()
In [ ]:
rot.inv()
In [ ]:
rot.singular_values()

Exercise

Find the inverse of the following Matrix:

$$ \left[\begin{matrix}1 & x\\y & 1\end{matrix}\right] $$
In [ ]:
# Create a matrix and use the `.inv` method to find the inverse

Operators

The standard SymPy operators work on matrices

In [ ]:
rot * 2
In [ ]:
rot * rot
In [ ]:
v = Matrix([[x], [y]])
v
In [ ]:
rot * v

Exercise

In the last exercise you found the inverse of the following matrix

In [ ]:
M = Matrix([[1, x], [y, 1]])
M
In [ ]:
M.inv()

Now verify that this is the true inverse by multiplying the matrix times its inverse. Do you get the identity matrix back?

In [ ]:
# Multiply `M` by its inverse.  Do you get back the identity matrix?

Exercise

What are the eigenvectors and eigenvalues of M?

In [ ]:
# Find the methods to compute eigenvectors and eigenvalues. Use these methods on `M`

NumPy-like Item access

In [ ]:
rot[0, 0]
In [ ]:
rot[:, 0]
In [ ]:
rot[1, :]

Mutation

We can change elements in the matrix.

In [ ]:
rot[0, 0] += 1
rot
In [ ]:
simplify(rot.det())
In [ ]:
rot.singular_values()

Exercise

Play around with your matrix M, manipulating elements in a NumPy like way. Then try the various methods that we've talked about (or others). See what sort of answers you get.

In [ ]:
# Play with matrices