Skip to article frontmatterSkip to article content

7.4 Invariant Subspaces

staying inside a region

Dept. of Electrical and Systems Engineering
University of Pennsylvania

Binder

Lecture notes

1Reading

Material related to this page, as well as additional exercises, can be found in ALA 8.4 and 10.4.

2Learning Objectives

By the end of this page, you should know:

  • the definition and some examples of invariant subspaces
  • the invariant subspaces spanned by the eigenvectors of the matrix
  • the different invariant subspaces of a complete matrix and how they relate to the behavior of linear dynamical systems

3Definition and Examples

Invariant subspaces of linear maps play a key role in dynamical systems, linear iterative systems (like Markov chains, which we’ll see next lecture), and control systems. Perhaps not surprisingly, the theory of invariant subspaces is built on eigenvalues and eigenvectors.

We start by defining an invariant subspace with respect to a linear transformation.

Intuitively, an invariant subspace WVW\subset V is like Vegas: what happens in WW stays in WW! Let’s see some simple examples before developing a more general theory.

4Subspaces Spanned by the Eigenvectors

Since we will focus on cases where V=RnV=\mathbb{R}^n, our linear transformations will be defined by matrices A:RnRnA:\mathbb{R}^n \to \mathbb{R}^n: L(x)=AxL(\vv x)=A\vv x. In this case, we can characterize 1-d invariant subspaces very clearly.

We won’t formally prove this result, but instead give a hint as to why it might be true. Suppose W=span{v1,,vk}W = \text{span}\{\vv v_1,\ldots,\vv v_k\} for v1,,vk\vv v_1,\ldots,\vv v_k linearly independent eigenvectors of AA. Then any wW\vv w \in W can be written as

w=c1v1++ckvk \vv w = c_1\vv v_1 + \cdots + c_k\vv v_k

for c1,,ckCc_1,\ldots,c_k \in \mathbb{C}. Then

Aw=A(c1v1++ckvk)=c1Av1++ckAvk=c1λ1v1++ckλkvkspan{v1,,vk}=W A \vv w = A(c_1\vv v_1 + \cdots + c_k\vv v_k) = c_1A\vv v_1 + \cdots + c_kA\vv v_k = c_1\lambda_1\vv v_1 + \cdots + c_k\lambda_k\vv v_k \in \text{span}\{\vv v_1,\ldots,\vv v_k\} = W

and hence WW is invariant under the map xAx\vv x \mapsto A\vv x. The challenge is to show the other direction, that if WW is invariant under AA then WW must be spanned by kk eigenvectors of AA. We refer interested readers to proof of Thm 8.3 in ALA 8.4.

4.1Plot for Example 5

An interactive 3d plot is given below along with the python code that illustrate the primary vectors and the subspace in Example 5. The orthogonal vectors are v2\vv v_2 (red\textcolor{red}{red}) and v3\vv v_3 (green\textcolor{green}{green}) that span the 2d invariant subspace (in cyan\textcolor{cyan}{cyan}). The axis of rotation is v1\vv v_1 (blue\textcolor{blue}{blue}). We used Plotly to plot the below figure, which is a nice tool to plot interactive figures on google colab/jupyter notebook.

import numpy as np
import plotly.graph_objects as go
import ipywidgets as widgets
from IPython.display import display

## Define the orthogonal vectors and the axis of rotation

# Orthogonal vectors
v1 = np.array([-1/2, -1/2, 1]) # v2 in the exercise
v2 = np.array([np.sqrt(3)/2, -np.sqrt(3)/2, 0]) # v3 in the exercise

axis = np.array([1, 1, 1]) # axis of rotation: # v1 in the exercise

# Define the plane
u = np.linspace(-1, 1, 10)
v = np.linspace(-1, 1, 10)
U, V = np.meshgrid(u, v)
X = U * v1[0] + V * v2[0]
Y = U * v1[1] + V * v2[1]
Z = U * v1[2] + V * v2[2]

# Create the 3D plot
fig = go.Figure()

# Add vectors to the plot without markers
fig.add_trace(go.Scatter3d(x=[0, v1[0]], y=[0, v1[1]], z=[0, v1[2]],
                            mode='lines', line=dict(color='red', width=8)))
fig.add_trace(go.Scatter3d(x=[0, v2[0]], y=[0, v2[1]], z=[0, v2[2]],
                            mode='lines', line=dict(color='green', width=8)))
fig.add_trace(go.Scatter3d(x=[0, axis[0]], y=[0, axis[1]], z=[0, axis[2]],
                            mode='lines', name='axis', line=dict(color='blue', width=8)))

# Add the plane
fig.add_trace(go.Surface(x=X, y=Y, z=Z, colorscale=[[0, 'cyan'], [1, 'cyan']], opacity=0.5, showscale=False))

# Add arrowheads (cones) at the end of the vectors
fig.add_trace(go.Cone(x=[v1[0]], y=[v1[1]], z=[v1[2]],
                      u=[v1[0]], v=[v1[1]], w=[v1[2]],
                      colorscale=[[0, 'red'], [1, 'red']], sizemode='absolute', sizeref=0.3, anchor="tail", showscale=False, showlegend=False))
fig.add_trace(go.Cone(x=[v2[0]], y=[v2[1]], z=[v2[2]],
                      u=[v2[0]], v=[v2[1]], w=[v2[2]],
                      colorscale=[[0, 'green'], [1, 'green']], sizemode='absolute', sizeref=0.3, anchor="tail", showscale=False, showlegend=False))
fig.add_trace(go.Cone(x=[axis[0]], y=[axis[1]], z=[axis[2]],
                      u=[axis[0]], v=[axis[1]], w=[axis[2]],
                      colorscale=[[0, 'blue'], [1, 'blue']], sizemode='absolute', sizeref=0.3, anchor="tail", showscale=False, showlegend=False))

# Set the layout
fig.update_layout(scene=dict(
                    xaxis=dict(range=[-1.5, 1.5]),
                    yaxis=dict(range=[-1.5, 1.5]),
                    zaxis=dict(range=[-1.5, 1.5]),
                    aspectmode='cube'),
                  width=700, height=700)
Loading...

5Invariant Subspaces and Linear Dynamical Systems

Here we give a very brief preview of the role of invariant subspaces in dynamical systems. You will see this in much more detail in ESE 2100.

We call a subset SRnS \subset \mathbb{R}^n invariant for x˙=Ax\dot{\vv x} = Ax if, whenever x(0)=bS\vv x(0) = \vv b \in S then the solution x(t)S\vv x(t) \in S for all t0t \geq 0. It turns out, invariant subspaces of AA precisely characterize these subsets:

We will focus on the case of complete matrices AA with real eigenvalues and eigenvectors; extensions to the general case are similar, and rely on using Jordan blocks and taking Real/Imaginary parts of complex eigenvectors.

These subspaces are important, as they describe the long-term behavior of solutions with initial conditions within them. Before elucidating this observation, we make the following comments:

Remembering that to each eigenvalue/vector pair (λi,vi)(\lambda_i, \vv v_i) we can associate an eigenfunction xi(t)=eλitvi\vv x_i(t) = e^{\lambda_i t}\vv v_i, we can characterize the following long-term behavior of solutions to x˙=Ax\dot{\vv x} = A\vv x:

This theorem tells us from what subsets of Rn\mathbb{R}^n we should pick initial conditions x(0)=b\vv x(0) = \vv b if we want our solutions to decay to zero (stable), not move (center), or blow up to infinity (unstable). This has very important applications in analyzing the behavior of dynamical systems, which we’ll explore in the case study.

Binder