We briefly met the matrix data type when we discussed vector-valued functions. There, we saw it in its simplest form, which converts a list of lists into a matrix. To see an example, let's construct a rotation matrix:
phi=symbols('phi')
rotation=Matrix([[cos(phi), -sin(phi)],
[sin(phi), cos(phi)]])
When working with SymPy matrices we have to note that the operator * performs matrix multiplications and is not acting as an elementwise multiplication, which is the case for NumPy arrays.
The previously defined rotation matrix can be checked for orthogonality by using this matrix multiplication and the transpose of a matrix:
simplify(rotation.T*rotation -eye(2)) # returns a 2 x 2 zero matrix
The previous example shows how a matrix is transposed and how the identity matrix is created. Alternatively, we could have checked whether its inverse is its transpose, which can be done as follows:
simplify...