Skip to main content
Mathematics LibreTexts

17.3: One interpretation of determinants

  • Page ID
    67878
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    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
    # Lets define somme points that form a Unit Cube
    points = np.array([[0, 0, 0],
                      [1, 0, 0 ],
                      [1, 1, 0],
                      [0, 1, 0],
                      [0, 0, 1],
                      [1, 0, 1 ],
                      [1, 1, 1],
                      [0, 1, 1]])
    
    points = np.matrix(points)
    #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?


    This page titled 17.3: One interpretation of determinants is shared under a CC BY-NC 4.0 license and was authored, remixed, and/or curated by Dirk Colbry via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.

    • Was this article helpful?