Chapter 3: Matrix Calculus and Linear Differential Equations

Lesson 3: Matrix Exponential – Series Definition and Basic Properties

This lesson defines the matrix exponential via a power series, proves its convergence in matrix norms, and derives fundamental algebraic and differential properties needed to solve linear vector–matrix differential equations. We emphasize proofs (uniform convergence, termwise differentiation, semigroup law, similarity invariance) and provide multi-language implementations (Python, C++, Java, MATLAB/Simulink, Wolfram Mathematica).

1. Conceptual Overview and Learning Targets

In Lesson 2 we wrote linear differential equations compactly as \( \dot{\mathbf{x}}(t)=\mathbf{A}\mathbf{x}(t)+\mathbf{b}(t) \). The operator that “propagates” a vector under the homogeneous dynamics \( \dot{\mathbf{x}}=\mathbf{A}\mathbf{x} \) is built from the matrix exponential. In this lesson, we do not yet use it as a “state transition matrix” (that will be formalized later); instead, we rigorously construct \( e^{\mathbf{A}} \) and establish its core properties.

After this lesson you should be able to:

  • Define \( e^{\mathbf{A}} \) and \( e^{\mathbf{A}t} \) using a convergent power series.
  • Prove convergence using submultiplicative matrix norms and show uniform convergence on bounded time intervals.
  • Prove basic identities: \( e^{\mathbf{0}}=\mathbf{I} \), semigroup property, inverse, similarity invariance, and the commuting-matrices product rule.
  • Derive the differential property \( \frac{d}{dt}e^{\mathbf{A}t}=\mathbf{A}e^{\mathbf{A}t} \) rigorously.
  • Implement \( e^{\mathbf{A}t} \) numerically via truncated series and compare with library routines.
flowchart TD
  A["Input: square matrix A and scalar t"] --> D["Define exp(A t) by power series"]
  D --> C["Prove convergence using a matrix norm"]
  C --> U["Uniform convergence on bounded t"]
  U --> P["Legitimize termwise operations (differentiate, multiply series)"]
  P --> S["Semigroup: \nexp(A(t+s)) = \nexp(At) exp(As)"]
  P --> I["Inverse: \nexp(At)^(-1) = \nexp(-At)"]
  P --> G["Dynamics: \nd/dt exp(At) = \nA exp(At)"]
  P --> R["Change of coordinates: \nexp(T^-1 A T) = \nT^-1 exp(A) T"]
        

2. Series Definition of the Matrix Exponential

Let \( \mathbf{A}\in\mathbb{R}^{n\times n} \) (the complex case is analogous). Define the matrix exponential by the absolutely convergent power series

\[ e^{\mathbf{A}} \;\triangleq\; \sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}}{k!} \;=\; \mathbf{I}+\mathbf{A}+\frac{\mathbf{A}^{2}}{2!}+\frac{\mathbf{A}^{3}}{3!}+\cdots \]

For time-scaling, define \( e^{\mathbf{A}t} \) by substituting \( \mathbf{A}t \) into the series:

\[ e^{\mathbf{A}t} \;\triangleq\; \sum_{k=0}^{\infty}\frac{(\mathbf{A}t)^{k}}{k!} \;=\; \sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}t^{k}}{k!}. \]

This definition mirrors the scalar exponential, but a crucial difference is that matrix multiplication is not commutative in general: \( \mathbf{A}\mathbf{B}\neq\mathbf{B}\mathbf{A} \). Many familiar scalar identities remain true only under additional commutativity assumptions (proved in Section 4).

3. Convergence of the Series and Uniform Convergence in Time

We use a submultiplicative matrix norm \( \|\cdot\| \), meaning \( \|\mathbf{A}\mathbf{B}\|\le\|\mathbf{A}\|\|\mathbf{B}\| \) for all conformable matrices. Examples include the induced 1-, 2-, and ∞-norms and the Frobenius norm.

3.1 Absolute convergence for fixed \(t\)

Consider the norm of each series term:

\[ \left\|\frac{\mathbf{A}^{k}t^{k}}{k!}\right\| \;\le\; \frac{\|\mathbf{A}^{k}\|\,|t|^{k}}{k!} \;\le\; \frac{\|\mathbf{A}\|^{k}|t|^{k}}{k!}. \]

The scalar series \( \sum_{k=0}^{\infty}\frac{(\|\mathbf{A}\||t|)^{k}}{k!}=e^{\|\mathbf{A}\||t|} \) converges, so by comparison the matrix series converges absolutely for every real \( t \).

Theorem 1 (Existence). For any square matrix \( \mathbf{A} \) and any \( t\in\mathbb{R} \), the series defining \( e^{\mathbf{A}t} \) converges absolutely in any submultiplicative norm, hence defines a unique matrix.

3.2 Uniform convergence on bounded time intervals

Fix a bounded interval \( t\in[-T,T] \). Then \( |t|^{k}\le T^{k} \), giving

\[ \sup_{|t|\le T}\left\|\frac{\mathbf{A}^{k}t^{k}}{k!}\right\| \;\le\; \frac{\|\mathbf{A}\|^{k}T^{k}}{k!}. \]

Since \( \sum_{k=0}^{\infty}\frac{\|\mathbf{A}\|^{k}T^{k}}{k!}=e^{\|\mathbf{A}\|T} \) converges, the Weierstrass M-test implies that \( \sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}t^{k}}{k!} \) converges uniformly on \( [-T,T] \). This uniform convergence is the technical tool that justifies termwise differentiation (Section 4.1) and multiplication of series (Section 4.2).

3.3 A norm bound that will be used repeatedly

From the comparison above, we immediately obtain:

\[ \|e^{\mathbf{A}t}\| \;\le\; \sum_{k=0}^{\infty}\frac{\|\mathbf{A}\|^{k}|t|^{k}}{k!} \;=\; e^{\|\mathbf{A}\||t|}. \]

This is a fundamental growth bound for \( e^{\mathbf{A}t} \), independent of diagonalization or eigenstructure.

4. Basic Properties of the Matrix Exponential (with Proofs)

4.1 Identity at zero and the derivative property

From the series, substituting \( t=0 \) yields:

\[ e^{\mathbf{A}\cdot 0}=\sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}0^{k}}{k!}=\mathbf{I}. \]

Theorem 2 (Termwise differentiation). For all \( t\in\mathbb{R} \), \( \frac{d}{dt}e^{\mathbf{A}t}=\mathbf{A}e^{\mathbf{A}t}=e^{\mathbf{A}t}\mathbf{A} \).

Proof. Consider the partial sums \( \mathbf{S}_m(t)=\sum_{k=0}^{m}\frac{\mathbf{A}^{k}t^{k}}{k!} \). Differentiating,

\[ \frac{d}{dt}\mathbf{S}_m(t) = \sum_{k=1}^{m}\frac{\mathbf{A}^{k}k t^{k-1}}{k!} = \sum_{k=1}^{m}\frac{\mathbf{A}^{k} t^{k-1}}{(k-1)!}. \]

Re-index with \( j=k-1 \):

\[ \frac{d}{dt}\mathbf{S}_m(t) = \sum_{j=0}^{m-1}\frac{\mathbf{A}^{j+1} t^{j}}{j!} = \mathbf{A}\sum_{j=0}^{m-1}\frac{\mathbf{A}^{j} t^{j}}{j!} = \mathbf{A}\mathbf{S}_{m-1}(t). \]

By uniform convergence of \( \mathbf{S}_m(t) \) on any bounded interval, and uniform convergence of the differentiated series (same M-test argument), we can pass to the limit as \( m\to\infty \) to obtain \( \frac{d}{dt}e^{\mathbf{A}t}=\mathbf{A}e^{\mathbf{A}t} \). The equality \( \mathbf{A}e^{\mathbf{A}t}=e^{\mathbf{A}t}\mathbf{A} \) follows because every term in the series commutes with \( \mathbf{A} \): \( \mathbf{A}\mathbf{A}^{k}=\mathbf{A}^{k}\mathbf{A} \). □

4.2 Semigroup property and inverse

Theorem 3 (Semigroup property). For all real \( t,s \), \( e^{\mathbf{A}(t+s)}=e^{\mathbf{A}t}e^{\mathbf{A}s} \).

Proof (Cauchy product argument). Expand both sides by series:

\[ e^{\mathbf{A}t}e^{\mathbf{A}s} = \left(\sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}t^{k}}{k!}\right) \left(\sum_{\ell=0}^{\infty}\frac{\mathbf{A}^{\ell}s^{\ell}}{\ell!}\right). \]

Because the series are absolutely convergent (Section 3), their Cauchy product is valid and gives

\[ e^{\mathbf{A}t}e^{\mathbf{A}s} = \sum_{m=0}^{\infty}\left( \sum_{k=0}^{m}\frac{\mathbf{A}^{k}\mathbf{A}^{m-k}t^{k}s^{m-k}}{k!(m-k)!} \right) = \sum_{m=0}^{\infty}\left( \sum_{k=0}^{m}\frac{\mathbf{A}^{m}t^{k}s^{m-k}}{k!(m-k)!} \right). \]

Factor out \( \mathbf{A}^{m} \) and recognize the binomial identity:

\[ \sum_{k=0}^{m}\frac{t^{k}s^{m-k}}{k!(m-k)!} = \frac{1}{m!}\sum_{k=0}^{m}\binom{m}{k}t^{k}s^{m-k} = \frac{(t+s)^{m}}{m!}. \]

Therefore,

\[ e^{\mathbf{A}t}e^{\mathbf{A}s} = \sum_{m=0}^{\infty}\frac{\mathbf{A}^{m}(t+s)^{m}}{m!} = e^{\mathbf{A}(t+s)}. \]

Corollary 1 (Inverse). For all \( t \), \( e^{\mathbf{A}t} \) is invertible and \( \left(e^{\mathbf{A}t}\right)^{-1}=e^{-\mathbf{A}t} \).

Proof. Apply Theorem 3 with \( s=-t \): \( e^{\mathbf{A}t}e^{-\mathbf{A}t}=e^{\mathbf{A}(t-t)}=e^{\mathbf{0}}=\mathbf{I} \). □

4.3 Similarity invariance (change of coordinates)

Theorem 4 (Similarity transform). If \( \mathbf{T} \) is invertible, then

\[ e^{\mathbf{T}^{-1}\mathbf{A}\mathbf{T}} = \mathbf{T}^{-1}e^{\mathbf{A}}\mathbf{T}. \]

Proof. Use the series and the identity \( (\mathbf{T}^{-1}\mathbf{A}\mathbf{T})^{k}=\mathbf{T}^{-1}\mathbf{A}^{k}\mathbf{T} \), proved by induction. Then

\[ e^{\mathbf{T}^{-1}\mathbf{A}\mathbf{T}} = \sum_{k=0}^{\infty}\frac{(\mathbf{T}^{-1}\mathbf{A}\mathbf{T})^{k}}{k!} = \sum_{k=0}^{\infty}\frac{\mathbf{T}^{-1}\mathbf{A}^{k}\mathbf{T}}{k!} = \mathbf{T}^{-1}\left(\sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}}{k!}\right)\mathbf{T} = \mathbf{T}^{-1}e^{\mathbf{A}}\mathbf{T}. \]

This property is foundational for control because coordinate changes (state transformations) act by similarity on system matrices. We will reuse this later to compute exponentials via diagonalization when possible.

4.4 The commuting-matrices product rule

Theorem 5. If \( \mathbf{A}\mathbf{B}=\mathbf{B}\mathbf{A} \), then \( e^{\mathbf{A}+\mathbf{B}}=e^{\mathbf{A}}e^{\mathbf{B}}=e^{\mathbf{B}}e^{\mathbf{A}} \).

Proof. If \( \mathbf{A} \) and \( \mathbf{B} \) commute, then the binomial theorem holds:

\[ (\mathbf{A}+\mathbf{B})^{m}=\sum_{k=0}^{m}\binom{m}{k}\mathbf{A}^{k}\mathbf{B}^{m-k}. \]

Substitute into the series:

\[ e^{\mathbf{A}+\mathbf{B}} = \sum_{m=0}^{\infty}\frac{1}{m!}\sum_{k=0}^{m}\binom{m}{k}\mathbf{A}^{k}\mathbf{B}^{m-k} = \sum_{m=0}^{\infty}\sum_{k=0}^{m}\frac{\mathbf{A}^{k}}{k!}\frac{\mathbf{B}^{m-k}}{(m-k)!}. \]

Re-indexing the double sum gives the Cauchy product of two absolutely convergent series:

\[ e^{\mathbf{A}+\mathbf{B}} = \left(\sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}}{k!}\right) \left(\sum_{\ell=0}^{\infty}\frac{\mathbf{B}^{\ell}}{\ell!}\right) = e^{\mathbf{A}}e^{\mathbf{B}}. \]

Important caution. If \( \mathbf{A}\mathbf{B}\neq\mathbf{B}\mathbf{A} \), then in general \( e^{\mathbf{A}+\mathbf{B}}\neq e^{\mathbf{A}}e^{\mathbf{B}} \). This noncommutative behavior is central in advanced topics (Lie theory, Baker–Campbell–Hausdorff expansions), but we will not use those tools yet.

4.5 Truncation and remainder bound (practical error control)

Define the order-\( m \) truncation \( \mathbf{S}_m(t)=\sum_{k=0}^{m}\frac{\mathbf{A}^{k}t^{k}}{k!} \) and the remainder \( \mathbf{R}_m(t)=e^{\mathbf{A}t}-\mathbf{S}_m(t) \). Using the norm comparison:

\[ \|\mathbf{R}_m(t)\| \;\le\; \sum_{k=m+1}^{\infty}\frac{\|\mathbf{A}\|^{k}|t|^{k}}{k!}. \]

A convenient bound uses the first neglected term times a tail factor (for moderate-to-large \( m \)):

\[ \|\mathbf{R}_m(t)\| \;\le\; \frac{\|\mathbf{A}\|^{m+1}|t|^{m+1}}{(m+1)!}\; \sum_{j=0}^{\infty}\frac{(\|\mathbf{A}\||t|)^{j}}{(m+2)(m+3)\cdots(m+1+j)} \;\le\; \frac{\|\mathbf{A}\|^{m+1}|t|^{m+1}}{(m+1)!}\,e^{\|\mathbf{A}\||t|}. \]

This inequality justifies a simple stopping rule for series computation when \( \|\mathbf{A}\||t| \) is not too large. For large \( \|\mathbf{A}\||t| \), more sophisticated methods (e.g., scaling-and-squaring with Padé approximants) are typically preferred; we will mention them in implementations, but the theory in this lesson remains series-based.

5. Practical Computation via Truncated Series

The series definition suggests a universal computation strategy: build partial sums until a norm-based termination criterion is met. This approach is language-agnostic and helps validate library results.

flowchart TD
  S["Start with S = I, term = I, k = 1"] --> U["Update term = term * (A t) / k"]
  U --> A1["Accumulate S = S + term"]
  A1 --> C["Check stop: norm(term) <= tol * norm(S)"]
  C -->|yes| O["Output S as exp(A t) approx"]
  C -->|no| K["Increment k and continue"]
  K --> U
        

In the code sections below, we implement this loop explicitly (from scratch) and compare it to standard library routines where available.

6. Implementations (Python, C++, Java, MATLAB/Simulink, Wolfram Mathematica)

6.1 Python (NumPy/SciPy) + from-scratch series

In Python, the standard numerical routine is scipy.linalg.expm. For verification and learning, we also implement the truncated series.

import numpy as np

def expm_series(A, t=1.0, tol=1e-12, max_terms=200):
    """
    Compute exp(A t) via truncated power series.
    Terminates when ||term||_F <= tol * ||S||_F or when max_terms is reached.
    """
    A = np.array(A, dtype=float)
    n = A.shape[0]
    S = np.eye(n)
    term = np.eye(n)
    At = A * float(t)

    for k in range(1, max_terms + 1):
        term = term @ At / float(k)
        S_new = S + term
        # Frobenius norm stopping criterion
        if np.linalg.norm(term, ord='fro') <= tol * np.linalg.norm(S_new, ord='fro'):
            return S_new, k
        S = S_new

    return S, max_terms

# Example: a simple 2x2 rotation generator
A = np.array([[0.0, 1.0],
              [-1.0, 0.0]])
t = 0.7

S_approx, used = expm_series(A, t=t, tol=1e-14, max_terms=200)
print("Series terms used:", used)
print("Series exp(A t):\n", S_approx)

# Compare with SciPy if available
try:
    from scipy.linalg import expm
    S_lib = expm(A * t)
    print("SciPy expm(A t):\n", S_lib)
    print("Fro error:", np.linalg.norm(S_lib - S_approx, ord='fro'))
except Exception as e:
    print("SciPy not available; series result computed only.")

Control-related Python ecosystems (e.g., state-space simulation and discretization workflows) typically rely on SciPy’s matrix functions internally, so understanding this lesson’s properties helps you interpret numerical results.

6.2 C++ (Eigen) + from-scratch series

A common linear algebra choice in C++ is Eigen. If you have Eigen’s matrix-functions module available, you can call exp() on matrices; otherwise, you can compute the series directly.

#include <iostream>
#include <Eigen/Dense>
// If available in your Eigen installation:
// #include <unsupported/Eigen/MatrixFunctions>

Eigen::MatrixXd expm_series(const Eigen::MatrixXd& A, double t,
                            double tol = 1e-12, int max_terms = 200) {
    const int n = (int)A.rows();
    Eigen::MatrixXd S = Eigen::MatrixXd::Identity(n, n);
    Eigen::MatrixXd term = Eigen::MatrixXd::Identity(n, n);
    Eigen::MatrixXd At = A * t;

    for (int k = 1; k <= max_terms; ++k) {
        term = (term * At) / double(k);
        Eigen::MatrixXd S_new = S + term;
        double term_norm = term.norm();     // Frobenius norm
        double S_norm = S_new.norm();
        if (term_norm <= tol * S_norm) {
            return S_new;
        }
        S = S_new;
    }
    return S;
}

int main() {
    Eigen::MatrixXd A(2,2);
    A << 0.0, 1.0,
         -1.0, 0.0;
    double t = 0.7;

    Eigen::MatrixXd S = expm_series(A, t, 1e-14, 300);
    std::cout << "Series exp(A t):\n" << S << "\n\n";

    // If unsupported/Eigen/MatrixFunctions is available:
    // Eigen::MatrixXd S_lib = (A * t).exp();
    // std::cout << "Eigen exp(A t):\n" << S_lib << "\n";

    return 0;
}

For control engineering codebases, this is often used to validate discrete-time approximations or exact propagation under constant matrices.

6.3 Java (Apache Commons Math for matrices) + from-scratch series

Java ecosystems vary. A robust approach is to use a matrix container (e.g., Apache Commons Math RealMatrix) and implement the series. The implementation below is minimal and pedagogical.

import org.apache.commons.math3.linear.MatrixUtils;
import org.apache.commons.math3.linear.RealMatrix;

public class MatrixExponentialSeries {

    public static RealMatrix expmSeries(RealMatrix A, double t, double tol, int maxTerms) {
        int n = A.getRowDimension();
        RealMatrix S = MatrixUtils.createRealIdentityMatrix(n);
        RealMatrix term = MatrixUtils.createRealIdentityMatrix(n);
        RealMatrix At = A.scalarMultiply(t);

        for (int k = 1; k <= maxTerms; k++) {
            term = term.multiply(At).scalarMultiply(1.0 / (double) k);
            RealMatrix Snew = S.add(term);

            double termNormF = frobeniusNorm(term);
            double SNormF = frobeniusNorm(Snew);
            if (termNormF <= tol * SNormF) {
                return Snew;
            }
            S = Snew;
        }
        return S;
    }

    public static double frobeniusNorm(RealMatrix M) {
        double sum = 0.0;
        for (int i = 0; i < M.getRowDimension(); i++) {
            for (int j = 0; j < M.getColumnDimension(); j++) {
                double v = M.getEntry(i, j);
                sum += v * v;
            }
        }
        return Math.sqrt(sum);
    }

    public static void main(String[] args) {
        double[][] data = new double[][] {
            {0.0, 1.0},
            {-1.0, 0.0}
        };
        RealMatrix A = MatrixUtils.createRealMatrix(data);
        double t = 0.7;

        RealMatrix S = expmSeries(A, t, 1e-14, 400);
        System.out.println("Series exp(A t):");
        System.out.println(S.toString());
    }
}

In later lessons, this capability becomes relevant for discrete-time conversions and exact solutions of constant-coefficient linear systems.

6.4 MATLAB + Simulink validation

MATLAB provides expm. We show both library and series computation, then validate by simulating \( \dot{\mathbf{x}}=\mathbf{A}\mathbf{x} \) in Simulink.

function lesson3_matrix_exponential_demo()
    A = [0 1; -1 0];
    t = 0.7;

    % Library
    E_lib = expm(A*t);

    % Series (pedagogical)
    tol = 1e-14; maxTerms = 400;
    [E_series, used] = expm_series(A, t, tol, maxTerms);

    disp("Terms used: " + used);
    disp("expm(A*t) (MATLAB):"); disp(E_lib);
    disp("series exp(A*t):"); disp(E_series);
    disp("Fro error:"); disp(norm(E_lib - E_series, 'fro'));

    % Optional Simulink validation idea:
    % Simulate xdot = A x with x(0)=x0 and compare x(t)=expm(A t)*x0
    x0 = [1; 0];
    x_exact = E_lib * x0;
    disp("Exact x(t) from expm:"); disp(x_exact);
end

function [S, used] = expm_series(A, t, tol, maxTerms)
    n = size(A,1);
    S = eye(n);
    term = eye(n);
    At = A*t;

    used = maxTerms;
    for k = 1:maxTerms
        term = (term*At) / k;
        Snew = S + term;
        if norm(term,'fro') <= tol * norm(Snew,'fro')
            S = Snew;
            used = k;
            return;
        end
        S = Snew;
    end
end

Simulink validation workflow (no new theory required):

  • Create a model with an Integrator block representing \( \mathbf{x} \).
  • Feed back \( \mathbf{x} \) through a Gain block containing matrix \( \mathbf{A} \) to form \( \dot{\mathbf{x}}=\mathbf{A}\mathbf{x} \).
  • Set initial condition of the Integrator to \( \mathbf{x}(0)=\mathbf{x}_0 \).
  • Simulate to time \( t \) and compare the result with \( \mathbf{x}(t)=\mathrm{expm}(\mathbf{A}t)\mathbf{x}_0 \) computed in MATLAB.

6.5 Wolfram Mathematica

Mathematica provides MatrixExp exactly (symbolic) or numerically, and also supports explicit series evaluation.

A = { {0, 1}, {-1, 0} };
t = 7/10;

E1 = MatrixExp[A t]; (* built-in *)
E2 = Sum[MatrixPower[A t, k]/k!, {k, 0, 40}]; (* truncated series *)

Print["MatrixExp[A t] = ", E1 // N];
Print["Series (40 terms) = ", E2 // N];
Print["Fro error = ", Norm[E1 - E2, "Frobenius"] // N];

x0 = {1, 0};
xExact = E1 . x0;
Print["x(t) = ", xExact // N];

7. Problems and Solutions

Problem 1 (Absolute convergence in a submultiplicative norm). Let \( \|\cdot\| \) be a submultiplicative matrix norm. Prove that the series \( \sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}}{k!} \) converges absolutely for every square matrix \( \mathbf{A} \).

Solution. Using submultiplicativity, \( \|\mathbf{A}^{k}\|\le\|\mathbf{A}\|^{k} \) for all \( k \) (induction). Then

\[ \sum_{k=0}^{\infty}\left\|\frac{\mathbf{A}^{k}}{k!}\right\| \;\le\; \sum_{k=0}^{\infty}\frac{\|\mathbf{A}\|^{k}}{k!} \;=\; e^{\|\mathbf{A}\|}, \]

which converges. Hence the matrix series converges absolutely (comparison test), defining \( e^{\mathbf{A}} \). □


Problem 2 (Semigroup property from series). Prove that \( e^{\mathbf{A}(t+s)}=e^{\mathbf{A}t}e^{\mathbf{A}s} \) using only the series definition and absolute convergence.

Solution. Expand both series and multiply:

\[ e^{\mathbf{A}t}e^{\mathbf{A}s} = \left(\sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}t^{k}}{k!}\right) \left(\sum_{\ell=0}^{\infty}\frac{\mathbf{A}^{\ell}s^{\ell}}{\ell!}\right). \]

Absolute convergence justifies the Cauchy product, yielding

\[ e^{\mathbf{A}t}e^{\mathbf{A}s} = \sum_{m=0}^{\infty}\sum_{k=0}^{m} \frac{\mathbf{A}^{m}t^{k}s^{m-k}}{k!(m-k)!} = \sum_{m=0}^{\infty}\frac{\mathbf{A}^{m}}{m!}\sum_{k=0}^{m}\binom{m}{k}t^{k}s^{m-k} = \sum_{m=0}^{\infty}\frac{\mathbf{A}^{m}(t+s)^{m}}{m!}. \]

The last series is exactly \( e^{\mathbf{A}(t+s)} \). □


Problem 3 (Derivative property). Starting from \( e^{\mathbf{A}t}=\sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}t^{k}}{k!} \), prove that \( \frac{d}{dt}e^{\mathbf{A}t}=\mathbf{A}e^{\mathbf{A}t} \).

Solution. Differentiate partial sums \( \mathbf{S}_m(t)=\sum_{k=0}^{m}\frac{\mathbf{A}^{k}t^{k}}{k!} \):

\[ \frac{d}{dt}\mathbf{S}_m(t) = \sum_{k=1}^{m}\frac{\mathbf{A}^{k} t^{k-1}}{(k-1)!} = \mathbf{A}\sum_{k=1}^{m}\frac{\mathbf{A}^{k-1} t^{k-1}}{(k-1)!} = \mathbf{A}\mathbf{S}_{m-1}(t). \]

By uniform convergence on bounded intervals (Section 3.2), we may pass to the limit as \( m\to\infty \) to obtain \( \frac{d}{dt}e^{\mathbf{A}t}=\mathbf{A}e^{\mathbf{A}t} \). □


Problem 4 (Similarity invariance). Let \( \mathbf{T} \) be invertible. Prove \( e^{\mathbf{T}^{-1}\mathbf{A}\mathbf{T}}=\mathbf{T}^{-1}e^{\mathbf{A}}\mathbf{T} \).

Solution. First show by induction that \( (\mathbf{T}^{-1}\mathbf{A}\mathbf{T})^{k}=\mathbf{T}^{-1}\mathbf{A}^{k}\mathbf{T} \). Substitute into the series:

\[ e^{\mathbf{T}^{-1}\mathbf{A}\mathbf{T}} = \sum_{k=0}^{\infty}\frac{\mathbf{T}^{-1}\mathbf{A}^{k}\mathbf{T}}{k!} = \mathbf{T}^{-1}\left(\sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}}{k!}\right)\mathbf{T} = \mathbf{T}^{-1}e^{\mathbf{A}}\mathbf{T}. \]


Problem 5 (Closed form for a rotation generator). Let \( \mathbf{A}=\begin{bmatrix}0 & 1\\ -1 & 0\end{bmatrix} \). Compute \( e^{\mathbf{A}t} \) in closed form using the power series.

Solution. Compute powers: \( \mathbf{A}^{2}=-\mathbf{I} \), \( \mathbf{A}^{3}=-\mathbf{A} \), \( \mathbf{A}^{4}=\mathbf{I} \), and so on. Split the series into even and odd terms:

\[ e^{\mathbf{A}t} = \sum_{k=0}^{\infty}\frac{\mathbf{A}^{k}t^{k}}{k!} = \sum_{m=0}^{\infty}\frac{\mathbf{A}^{2m}t^{2m}}{(2m)!} + \sum_{m=0}^{\infty}\frac{\mathbf{A}^{2m+1}t^{2m+1}}{(2m+1)!}. \]

Since \( \mathbf{A}^{2m}=(-1)^{m}\mathbf{I} \) and \( \mathbf{A}^{2m+1}=(-1)^{m}\mathbf{A} \), we get

\[ e^{\mathbf{A}t} = \left(\sum_{m=0}^{\infty}\frac{(-1)^{m}t^{2m}}{(2m)!}\right)\mathbf{I} + \left(\sum_{m=0}^{\infty}\frac{(-1)^{m}t^{2m+1}}{(2m+1)!}\right)\mathbf{A}. \]

Recognize the scalar series for cosine and sine:

\[ e^{\mathbf{A}t}=\cos(t)\,\mathbf{I}+\sin(t)\,\mathbf{A} = \begin{bmatrix} \cos(t) & \sin(t)\\ -\sin(t) & \cos(t) \end{bmatrix}. \]


Problem 6 (Remainder bound for truncation). Let \( \mathbf{S}_m(t)=\sum_{k=0}^{m}\frac{\mathbf{A}^{k}t^{k}}{k!} \). Show that \( \|e^{\mathbf{A}t}-\mathbf{S}_m(t)\|\le e^{\|\mathbf{A}\||t|}\frac{\|\mathbf{A}\|^{m+1}|t|^{m+1}}{(m+1)!} \).

Solution. Using the triangle inequality and Section 3,

\[ \|e^{\mathbf{A}t}-\mathbf{S}_m(t)\| \le \sum_{k=m+1}^{\infty}\frac{\|\mathbf{A}\|^{k}|t|^{k}}{k!} = \frac{\|\mathbf{A}\|^{m+1}|t|^{m+1}}{(m+1)!} \sum_{j=0}^{\infty}\frac{(\|\mathbf{A}\||t|)^{j}}{(m+2)(m+3)\cdots(m+1+j)}. \]

Since each denominator factor is at least \( 1 \), the tail is bounded by \( \sum_{j=0}^{\infty}\frac{(\|\mathbf{A}\||t|)^{j}}{j!}=e^{\|\mathbf{A}\||t|} \), giving the stated inequality. □

8. Summary

We defined the matrix exponential \( e^{\mathbf{A}t} \) via a power series and proved convergence using submultiplicative norms. Uniform convergence on bounded time intervals justified key operations: termwise differentiation and series multiplication. We then derived fundamental properties—semigroup, inverse, similarity invariance, and the commuting-matrices product rule—and provided practical truncation error bounds together with multi-language implementations. These results will be used directly when we construct fundamental matrix solutions and solve initial value problems in the next lessons.

9. References

  1. Wilcox, R.M. (1967). Exponential operators and parameter differentiation in quantum physics. Journal of Mathematical Physics, 8(4), 962–982.
  2. Putzer, E.J. (1966). Avoiding the Jordan canonical form in the computation of the matrix exponential. SIAM Review, 8(3), 357–362.
  3. Moler, C., & Van Loan, C. (1978). Nineteen dubious ways to compute the exponential of a matrix. SIAM Review, 20(4), 801–836.
  4. Moler, C., & Van Loan, C. (2003). Nineteen dubious ways to compute the exponential of a matrix, twenty-five years later. SIAM Review, 45(1), 3–49.
  5. Higham, N.J. (2005). The scaling and squaring method for the matrix exponential revisited. SIAM Journal on Matrix Analysis and Applications, 26(4), 1179–1193.
  6. Al-Mohy, A.H., & Higham, N.J. (2011). Computing the action of the matrix exponential, with an application to exponential integrators. SIAM Journal on Scientific Computing, 33(2), 488–511.
  7. Van Loan, C. (1978). Computing integrals involving the matrix exponential. IEEE Transactions on Automatic Control, 23(3), 395–404.
  8. Gallier, J. (2011). Notes on differential equations, matrix exponentials, and Lie groups (theoretical exposition). Journal-style technical notes and related publications.