14 In-Class Assignment: Fundamental Spaces

Classic picture of the four fundamental spaces. Please see text for detailed description.

Image from: https://kevinbinz.com/2017/02/20/linear-algebra/

2. Four Fundamental Subspaces

The four fundamental subspaces

  • Columnspace, \(\mathcal{C}(A)\)

  • Nullspace, \(\mathcal{N}(A)\)

  • Rowspaces, \(R(A)\)

    • All linear combinations of rows

    • All the linear combinations of the colums of \(A^\top\), \(\mathcal{C}(A^\top)\)

  • Nullspace of \(A^\top\), \(\mathcal{N}(A^\top)\) (the left nullspace of \(A\))

Where are these spaces for a \(m\times n\) matrix \(A\)?

  • \(\mathcal{R}(A)\) is in \(R^n\)

  • \(\mathcal{N}(A)\) is in \(R^n\)

  • \(\mathcal{C}(A)\) is in \(R^m\)

  • \(\mathcal{N}(A^\top)\) is in \(R^m\)

Calculating basis and dimension

For \(\mathcal{R}(A)\)

  • If \(A\) undergoes row reduction to row echelon form \(B\), then \(\mathcal{C}(B)\neq \mathcal{C}(A)\), but \(\mathcal{R}(B) = \mathcal{R}(A)\) (or \(\mathcal{C}(B^\top) = \mathcal{C}(A^\top))\)

  • A basis for the rowspace of \(A\) (or \(B\)) is the first \(r\) rows of \(B\)

    • So we row reduce \(A\) and take the pivot rows and transpose them

  • The dimension is also equal to the rank \(r\)

For \(\mathcal{N}(A)\)

  • The bases are the special solutions (one for every free variable, \(n-r\))

  • The dimension is \(n- r\)

For \(\mathcal{C}(A) = \mathcal{R}(A^\top)\)

  • Apply the row reduction on the transpose \(A^\top\).

  • The dimension is the rank \(r\)

For \(\mathcal{N}(A^\top)\)

  • It is also called the left nullspace, because it ends up on the left (as seen below)

  • Here we have \(A^\top y = 0\)

    • \(y^\top(A^\top)^\top = 0^\top\)

    • \(y^\top A = 0^\top\)

    • This is (again) the special solutions for \(A^\top\) (after row reduction)

  • The dimension is \(m - r\)


3. Practice Example:

Consider the linear transformation defined by the following matrix \(A\).

\[\begin{split}A = \left[ \begin{matrix} 1 & 2 & 3 & 1 \\ 1 & 1 & 2 & 1 \\ 1 & 2 & 3 & 1 \end{matrix} \right] \end{split}\]
%matplotlib inline
import matplotlib.pylab as plt
import numpy as np
import sympy as sym
sym.init_printing()
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-1-97c04e533e83> in <module>
----> 1 get_ipython().run_line_magic('matplotlib', 'inline')
      2 import matplotlib.pylab as plt
      3 import numpy as np
      4 import sympy as sym
      5 sym.init_printing()

~/REPOS/MTH314_Textbook/MakeTextbook/envs/lib/python3.9/site-packages/IPython/core/interactiveshell.py in run_line_magic(self, magic_name, line, _stack_depth)
   2342                 kwargs['local_ns'] = self.get_local_scope(stack_depth)
   2343             with self.builtin_trap:
-> 2344                 result = fn(*args, **kwargs)
   2345             return result
   2346 

~/REPOS/MTH314_Textbook/MakeTextbook/envs/lib/python3.9/site-packages/decorator.py in fun(*args, **kw)
    230             if not kwsyntax:
    231                 args, kw = fix(args, kw, sig)
--> 232             return caller(func, *(extras + args), **kw)
    233     fun.__name__ = func.__name__
    234     fun.__doc__ = func.__doc__

~/REPOS/MTH314_Textbook/MakeTextbook/envs/lib/python3.9/site-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
    185     # but it's overkill for just that one bit of state.
    186     def magic_deco(arg):
--> 187         call = lambda f, *a, **k: f(*a, **k)
    188 
    189         if callable(arg):

~/REPOS/MTH314_Textbook/MakeTextbook/envs/lib/python3.9/site-packages/IPython/core/magics/pylab.py in matplotlib(self, line)
     97             print("Available matplotlib backends: %s" % backends_list)
     98         else:
---> 99             gui, backend = self.shell.enable_matplotlib(args.gui.lower() if isinstance(args.gui, str) else args.gui)
    100             self._show_matplotlib_backend(args.gui, backend)
    101 

~/REPOS/MTH314_Textbook/MakeTextbook/envs/lib/python3.9/site-packages/IPython/core/interactiveshell.py in enable_matplotlib(self, gui)
   3511         """
   3512         from IPython.core import pylabtools as pt
-> 3513         gui, backend = pt.find_gui_and_backend(gui, self.pylab_gui_select)
   3514 
   3515         if gui != 'inline':

~/REPOS/MTH314_Textbook/MakeTextbook/envs/lib/python3.9/site-packages/IPython/core/pylabtools.py in find_gui_and_backend(gui, gui_select)
    278     """
    279 
--> 280     import matplotlib
    281 
    282     if gui and gui != 'auto':

ModuleNotFoundError: No module named 'matplotlib'

Question: What is the reduced row echelon form of \(A\)? You can use sympy.

#Put your answer to the above question here.

Question: Now let’s calculate the row space of \(A\). Note that the row space is defined by a linear combination of the non-zero row vectors in the reduced row echelon matrix:

Put your answer to the above question here

Question: What is the rank of matrix \(A\)? You should know the rank by inspecting the reduced row echelon form. Find a numpy or sympy function that you can use to verify your answer?

## Put code here to verify your answer.

Question: Using the reduced row echelon form define the leading variables in terms of the free variables for the homogeneous equation.

Put your answer to the above question here

Question: The solution to the above question defines the nullspace of \(A\) (aka the Kernel). Use the sympy.nullspace function to verify your answer.

# Put your code here

Question: Now let’s calculate the range of \(A\) (column space of \(A\)). Note that the range is spanned by the column vectors of \(A\). Transpose \(A\) and calculate the reduced row echelon form of the transposed matrix like we did above.

## Put your code here

Question: The nonzero row vectors of the above solution will give a basis for the range (or \(\mathcal{C}(A)\)). Write the range of \(A\) as a linear combination of these nonzero vectors:

Put your answer to the above question here.

Question: Finally, using the reduced row echelon form for \(A^\top\) define the leading variables in terms of the free variables and define the null space of \(A^\top\).

Put your answer to the above question here.


Written by Dr. Dirk Colbry, Michigan State University Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.