Matrix Algebra with Computational Applications · LibreTexts
0%
Contents
Text
Size
From LibreTexts, under CC BY-NC 4.0, as the source states it; its equations are written in TeX, which the PDF shows typeset. This page at LibreTexts.
17.3: One interpretation of determinants
Opening the book…
The following is an application of determinants. Watch this!
from IPython.display import YouTubeVideo
YouTubeVideo("Ip3X9LOh2dk",width=640,height=360, cc_load_policy=True)
For fun, we will recreate some of the video’s visualizations in Python. It was a little tricky to get the aspect ratios correct but here is some code I managed to get it work.
%matplotlib inline
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection, Line3DCollection
import numpy as np
import sympy as sym
#Here is some code to build cube from https://stackoverflow.com/questions/44881885/python-draw-3d-cube
def plot3dcube(Z):
if type(Z) == np.matrix:
Z = np.asarray(Z)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
r = [-1,1]
X, Y = np.meshgrid(r, r)
# plot vertices
ax.scatter3D(Z[:, 0], Z[:, 1], Z[:, 2])
# list of sides' polygons of figure
verts = [[Z[0],Z[1],Z[2],Z[3]],
[Z[4],Z[5],Z[6],Z[7]],
[Z[0],Z[1],Z[5],Z[4]],
[Z[2],Z[3],Z[7],Z[6]],
[Z[1],Z[2],Z[6],Z[5]],
[Z[4],Z[7],Z[3],Z[0]],
[Z[2],Z[3],Z[7],Z[6]]]
#alpha transparency was't working found fix here:
# https://stackoverflow.com/questions/23403293/3d-surface-not-transparent-inspite-of-setting-alpha
# plot sides
ax.add_collection3d(Poly3DCollection(verts,
facecolors=(0,0,1,0.25), linewidths=1, edgecolors='r'))
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
## Weird trick to get the axpect ratio to work.
## From https://stackoverflow.com/questions/13685386/matplotlib-equal-unit-length-with-equal-aspect-ratio-z-axis-is-not-equal-to
mx = np.amax(Z, axis=0)
mn = np.amin(Z, axis=0)
max_range = mx-mn
# Create cubic bounding box to simulate equal aspect ratio
Xb = 0.5*max_range.max()*np.mgrid[-1:2:2,-1:2:2,-1:2:2][0].flatten() + 0.5*(max_range[0])
Yb = 0.5*max_range.max()*np.mgrid[-1:2:2,-1:2:2,-1:2:2][1].flatten() + 0.5*(max_range[1])
Zb = 0.5*max_range.max()*np.mgrid[-1:2:2,-1:2:2,-1:2:2][2].flatten() + 0.5*(max_range[2])
# Comment or uncomment following both lines to test the fake bounding box:
for xb, yb, zb in zip(Xb, Yb, Zb):
ax.plot([xb], [yb], [zb], 'w')
plt.show()
plot3dcube(points)
Question
The following the \(3 \times 3\) was shown in the video (around 6’50’’). Apply this matrix to the unit cube and use the plot3dcube to show the resulting transformed points.
T = np.matrix([[1 , 0 , 0.5],
[0.5 ,1 ,1.5],
[1 , 0 , 1]])
#Put the answer to the above question here.
Question
The determinant represents how the area changes when applying a \(2 \times 2 \) transform. What does the determinant represent for a \(3 \times 3\) transform?