微分方程与矩阵指数

微分方程与矩阵指数

学习目标

完成本节后,你将能够: - 用矩阵形式表示微分方程组 - 理解矩阵指数的定义和计算 - 应用特征值解微分方程组 - 理解稳定性和特征值的关系

1. 一阶微分方程组

### 1.1 问题

考虑耦合微分方程组:

\[\frac{du_1}{dt} = -u_1 + 2u_2\] \[\frac{du_2}{dt} = u_1 - 2u_2\]

写成矩阵形式:

\[\frac{d\mathbf{u}}{dt} = A\mathbf{u}, \quad A = \begin{bmatrix} -1 & 2 \\ 1 & -2 \end{bmatrix}\]

### 1.2 解耦

如果 \(A\) 可对角化,令 \(\mathbf{u} = S\mathbf{v}\):

\[\frac{d\mathbf{v}}{dt} = \Lambda \mathbf{v}\]

每个方程变成独立的一阶方程:\(\frac{dv_i}{dt} = \lambda_i v_i\)

解:\(v_i(t) = v_i(0) e^{\lambda_i t}\)

因此:

\[\mathbf{u}(t) = S e^{\Lambda t} S^{-1} \mathbf{u}(0) = e^{At}\mathbf{u}(0)\]

### 1.3 稳定性分析

  • 所有 \(\text{Re}(\lambda_i) < 0\) ⇒ 系统稳定(\(\mathbf{u}(t) \to \mathbf{0}\))
  • 有 \(\text{Re}(\lambda_i) > 0\) ⇒ 系统不稳定(发散)
  • 有纯虚特征值 ⇒ 振荡

2. 矩阵指数

\[e^{At} = I + At + \frac{A^2 t^2}{2!} + \frac{A^3 t^3}{3!} + \cdots\]

很像泰勒级数,只是把标量 \(a\) 换成了矩阵 \(A\)。

如果 \(A = S\Lambda S^{-1}\):

\[e^{At} = S e^{\Lambda t} S^{-1}\]

而 \(e^{\Lambda t} = \text{diag}(e^{\lambda_1 t}, \ldots, e^{\lambda_n t})\)。

def matrix_exponential(A, t):
    """计算矩阵指数"""
    eigvals, eigvecs = np.linalg.eig(A)
    S = eigvecs
    exp_Lambda = np.diag(np.exp(eigvals * t))

# 示例 A = np.array([[-1, 2], [1, -2]])

# 初始条件 u0 = np.array([3, 0])

# t=1 时的解 t = 1.0 exp_At = matrix_exponential(A, t) u_t = exp_At @ u0 print(f"u({t}) = {u_t}")

# 验证:用 scipy 的矩阵指数 from scipy.linalg import expm print(f"scipy: {expm(A * t) @ u0}") ```

3. 马尔可夫矩阵

定义:每列元素和为 1 的非负矩阵。

性质: - 特征值 \(\lambda_1 = 1\) - 其他特征值 \(|\lambda_i| < 1\) - \(u_k = A^k u_0\) 趋于稳态(对应 \(\lambda = 1\) 的特征向量)

# 人口迁移模型
M = np.array([[0.9, 0.2],
              [0.1, 0.8]])

# 初始分布 u = np.array([1.0, 0.0])

# 迭代 for step in range(5): print(f"第{step}年: 城市={u[0]:.3f}, 乡村={u[1]:.3f}") u = M @ u

print(f"\n稳态:") eigvals, eigvecs = np.linalg.eig(M) steady = eigvecs[:, 0] steady = steady / steady.sum() print(f"城市={steady[0]:.3f}, 乡村={steady[1]:.3f}") ```

4. 本节习题

  1. 解 \(\frac{du}{dt} = \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix} u\),初始条件 \(u(0) = [1, 0]\)
  2. 判断 \(A = \begin{bmatrix} -2 & 1 \\ 1 & -2 \end{bmatrix}\) 对应的系统是否稳定
  3. 证明:马尔可夫矩阵总有特征值 1
  4. 用矩阵指数求解一个二阶微分方程(转化为一阶方程组)

总结

- 线性微分方程组可以用矩阵指数 \(e^{At}\) 求解 - 对角化将耦合系统解耦为独立的一阶方程 - 稳定性由特征值的实部决定 - 马尔可夫矩阵收敛到稳态分布