跳至主要內容

CyletixGPT-4大约 6 分钟

矩阵指数将标量指数运算扩展到矩阵, 是解决线性系统问题的核心.

定义

给定一个矩阵 AA, 其矩阵指数 eAe^A 基于幂级数展开的定义:

eA=k=0Akk!=I+A+A22!+A33!+ e^A = \sum_{k=0}^{\infty} \frac{A^k}{k!}=I + A + \frac{A^2}{2!} + \frac{A^3}{3!} + \cdots

其中 AkA^k 表示矩阵 AAkk 次幂.

性质

  1. 幂级数收敛: 矩阵指数的级数在有限维矩阵上总是收敛.
  2. 与标量指数的关系: 如果 AA 是对角矩阵, 其矩阵指数等于对角元素的标量指数.
  3. 乘积性质: 对于一般矩阵 A,BA, B, 仅有在 AB=BAAB = BA 时, eAeB=eA+Be^A e^B = e^{A+B} 才成立.
  4. 特殊情况: 当 AA 是对称矩阵或反对称矩阵时, 矩阵指数具有特定形式.

推导

由于计算矩阵指数首先需要计算若干个AAnn次幂, 很容易想到对AA进行对角化. 为了理解为什么对角化能够将指数运算放到矩阵的对角线中, 我们需要从矩阵指数的定义和对角化的性质开始.

一个矩阵 AA 如果是可对角化的, 那么存在一个可逆矩阵 PP 和一个对角矩阵 DD, 使得:

A=PDP1 A = PDP^{-1}

其中, DD 是一个对角矩阵, 其对角线元素是 AA 的特征值. 通过对角化, 矩阵 AA 的幂可以表示为:

Ak=(PDP1)k=(PDP1)(PDP1)(PDP1) A^k = (PDP^{-1})^k = (PDP^{-1}) \cdot (PDP^{-1}) \cdot \cdots \cdot (PDP^{-1})

其中有 kkPDP1PDP^{-1}. 矩阵乘法满足结合律, 因此可以先对部分括号内的矩阵相乘

(PDP1)(PDP1)=P(DP1P)DP1. (PDP^{-1})(PDP^{-1}) = P(DP^{-1}P)D P^{-1}.

由于P1P=IP^{-1}P = I 是单位矩阵, 因此:

(PDP1)k=PDkP1. (PDP^{-1})^k = PD^kP^{-1}.

因此, 矩阵 AA 的指数可以表示为:

eA=k=0Akk!=k=0(PDP1)kk!=k=0PDkP1k! e^A = \sum_{k=0}^{\infty} \frac{A^k}{k!} = \sum_{k=0}^{\infty} \frac{(PDP^{-1})^k}{k!} = \sum_{k=0}^{\infty} \frac{PD^kP^{-1}}{k!}

矩阵乘法满足结合律, 而求和运算本质上是多次加法, 因此PPP1P^{-1} 作为求和项的外部因子, 不会受到求和运算的影响, 可以将它们移到求和符号之外:

eA=P(k=0Dkk!)P1 e^A = P \left( \sum_{k=0}^{\infty} \frac{D^k}{k!} \right) P^{-1}

对角矩阵 DD 的指数比较简单, 因为 DD 的幂 DkD^k 也是一个对角矩阵, 其对角线元素是原对角线元素的幂:

D=(λ1000λ2000λn) D = \begin{pmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_n \end{pmatrix}

Dk=(λ1k000λ2k000λnk) D^k = \begin{pmatrix} \lambda_1^k & 0 & \cdots & 0 \\ 0 & \lambda_2^k & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_n^k \end{pmatrix}

因此,

k=0Dkk!=(k=0λ1kk!000k=0λ2kk!000k=0λnkk!)=(eλ1000eλ2000eλn) \sum_{k=0}^{\infty} \frac{D^k}{k!} = \begin{pmatrix} \sum_{k=0}^{\infty} \frac{\lambda_1^k}{k!} & 0 & \cdots & 0 \\ 0 & \sum_{k=0}^{\infty} \frac{\lambda_2^k}{k!} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sum_{k=0}^{\infty} \frac{\lambda_n^k}{k!} \end{pmatrix} = \begin{pmatrix} e^{\lambda_1} & 0 & \cdots & 0 \\ 0 & e^{\lambda_2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & e^{\lambda_n} \end{pmatrix}

即:

eD=(eλ1000eλ2000eλn) e^D = \begin{pmatrix} e^{\lambda_1} & 0 & \cdots & 0 \\ 0 & e^{\lambda_2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & e^{\lambda_n} \end{pmatrix}

回到之前的矩阵指数表达式:

eA=P(k=0Dkk!)P1=PeDP1 e^A = P \left( \sum_{k=0}^{\infty} \frac{D^k}{k!} \right) P^{-1} = P e^D P^{-1}

由于 eDe^D 是一个对角矩阵, 其对角线元素是 AA 的特征值的指数, 因此 eAe^A 可以通过对角化后在对角线上进行指数运算, 再通过相似变换回到原矩阵的基底上. 总结一下, 只有在对角化之后, 指数运算才可以简单地应用于对角线元素, 是因为对角化将矩阵转换为一个简单的形式 (对角矩阵) , 使得每个对角线元素独立于其他元素, 可以单独进行指数运算.

计算方法

计算矩阵指数的常见方法有以下几种:

1. 幂级数展开 (Power Series Expansion)

矩阵指数 eAe^{A} 可以通过幂级数展开计算:

eA=k=0Akk! e^{A} = \sum_{k=0}^{\infty} \frac{A^k}{k!}

2. 对角化 (Diagonalization)

如果矩阵 AA 是对角化的, 即 A=PDP1A = PDP^{-1}, 其中 DD 是对角矩阵, 则:

eA=PeDP1 e^{A} = P e^{D} P^{-1}

其中 eDe^{D} 是对角矩阵, 其对角元素是 DD 的对角元素的指数.

3. Jordan 标准形 (Jordan Canonical Form)

如果矩阵 AA 不能对角化, 但可以转换为 Jordan 标准形 A=PJP1A = PJP^{-1}, 则:

eA=PeJP1 e^{A} = P e^{J} P^{-1}

其中 JJ 是 Jordan 标准形, eJe^{J} 的计算稍微复杂, 但可以通过分块矩阵的方式计算.

4. 帕德近似 (Padé Approximation)

帕德近似是一种用有理函数逼近指数函数的方法, 可以在计算中取得很好的效果. 特别是在数值计算中, 帕德近似通常结合尺度和平方 (Scaling and Squaring) 方法来计算矩阵指数.

5. 数值算法

常用的数值算法包括 Scipy 和 Matlab 中提供的库函数. 例如在 Python 中, 可以使用 Scipy 库计算矩阵指数:

import numpy as np
from scipy.linalg import expm
A = np.array([[0, 1], [-1, 0]])
exp_A = expm(A)
print(exp_A)

这种方法对于大型矩阵特别有用, 因为它们优化了计算过程.

示例

计算矩阵 AA 的矩阵指数eAe^A. 其中

A=[0110] A = \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix}

  1. 幂级数展开
    矩阵 AA 的幂具有以下规律:

A1=A,A2=I,A3=A,A4=I. A^1 = A, \quad A^2 = -I, \quad A^3 = -A, \quad A^4 = I.

根据这一周期性, 矩阵指数的级数可以分为偶数项和奇数项:

eA=(I+A22!+A44!+)+(A+A33!+A55!+). e^A = \left( I + \frac{A^2}{2!} + \frac{A^4}{4!} + \cdots \right) + \left( A + \frac{A^3}{3!} + \frac{A^5}{5!} + \cdots \right).

  • 偶数项 (标量乘 II) 为:

k=0(1)k(2k)!I=cos(1)I. \sum_{k=0}^{\infty} \frac{(-1)^k}{(2k)!} I = \cos(1) I.

  • 奇数项 (标量乘 AA) 为:

k=0(1)k(2k+1)!A=sin(1)A. \sum_{k=0}^{\infty} \frac{(-1)^k}{(2k+1)!} A = \sin(1) A.

因此:

eA=cos(1)I+sin(1)A. e^A = \cos(1) I + \sin(1) A.

  1. 对角化法
    矩阵 AA 的特征值为 ±i\pm i, 可对角化为(过程略):

A=P[i00i]P1. A = P \begin{bmatrix} i & 0 \\ 0 & -i \end{bmatrix} P^{-1}.

矩阵指数为:

eA=P[ei00ei]P1. e^A = P \begin{bmatrix} e^i & 0 \\ 0 & e^{-i} \end{bmatrix} P^{-1}.

代入 ei=cos(1)+isin(1)e^{i} = \cos(1) + i \sin(1), 结果与幂级数展开方法一致.

应用

  1. 线性常微分方程的解: 对于形如 x˙=Ax\dot{x} = Ax 的线性常微分方程, 解可以写成 x(t)=eAtx(0)x(t) = e^{At} x(0), 其中 eAte^{At} 是矩阵 AA 的指数矩阵.
  2. 离散时间系统: 在离散时间控制系统中, 状态转移矩阵可以用指数矩阵表示: x[k+1]=eAΔtx[k]x[k+1] = e^{A\Delta t} x[k], 其中 Δt\Delta t 是时间步长.
  3. 量子力学: 单位时间演化算符可以用哈密顿算符的指数矩阵表示: U(t)=eiHt.U(t) = e^{-iHt}.
  4. 图像处理和计算机视觉: 在图像处理领域, 指数矩阵用于图像滤波和变换, 如高斯模糊.