行列の指数関数と常微分方程式について入門するためのちょっとしたメモです.独学者が行列の指数関数にいきなり出会ってしまっても怯まないように,という願いが込められています.
例によってあまり self-contained な書き方でないので文献を紹介しておきます.行列の指数関数と微分方程式については
- 長谷川浩司 線形代数
- Hirsch・Smale・Devaney 力学系入門
などに解説があります.タイトルの通り,1つめの方は線形代数が主眼で,2つめの方は力学系が主眼です.
まず $a$ を定数として,次の微分方程式を考える.
$$
\frac{d}{dt} X(t) = a X(t). \tag{1}
$$
この式は,
-
$a$ が正のときは「 $X(t)$ が $t$ に応じてどんどん大きくなる様子を表し,その $t$ 時点での変化量は $X(t)$ 自身に比例する」と見ることができる.
-
$a$ が負のときは「 $X(t)$ が $t$ に応じてだんだん小さくなる様子を表し,その $t$ 時点での変化量は $X(t)$ 自身に比例する」と見ることができる.
1 は,ネズミ算のように人口がどんどん増える様子のモデルに使えるかもしれない.2 はタンクから水圧で水が流出して水量がだんだん減っていく様子のモデルに使えるかもしれない.『微分方程式で数学モデルを作ろう』 にはこのような例示がたくさん出ている.
このように微分方程式を「変化の仕方」に対して仮定をおくことに対応させると,それを解くことは「変化した結果どうなるか」に対応させられる.そのため,時間に応じて変化する現象の数理モデルでは,微分方程式は基本的な道具の一つとして広く使われている.
次に (1) の方程式を解くことを考える.ちなみに, 数学で「(1) の方程式を解く」というときは,特に断りがなければ「(1) の式が成り立つような $X(t)$ をすべて見つける」という意味であることが多い.
$X(t) = C \exp(a t)$ が (1) の式を満たすような関数であることは両辺を微分してみれば確かめられる.ここで $C$ は任意の定数(a.k.a. 積分定数)である.
実際,(1) は次のように書き換えることができるから,
$$
\frac{1}{X(t)} dX(t) = a dt
$$
この両辺を積分して原始関数を求めると
$$
\log X(t) = a t + C_0.
$$
ここで $C_0$ は積分定数である. 積分定数は任意なので $C=\exp(C_0)$ と改めておくと
$$
X(t) = C\exp(a t)
$$
が得られる.また $t=0$ の時点での値 $X(0)$ がなにか一つに決まっているとしたら $C=X(0)$ でなければならない.このような条件を 初期条件 と呼ぶ.
いま,次の連立微分方程式を考えたい.
$$
\begin{aligned}
\frac{d}{dt} X(t) &= -a X(t) ,\\
\frac{d}{dt} Y(t) &= a X(t) - b Y(t).
\end{aligned} \tag{2}
$$
ひとまず, $a$ , $b$ は正の実数として, $X(t)$ が減った分 $Y(t)$ が増え, $Y(t)$ は $Y(t)$ 自身の量に比例して減る,という様子を表している.この微分方程式に実際に応用例があり得ることは,
などを見るとわかる.
(2) の組は次のように書くこともできる.
$$
\frac{d}{dt}
\begin{pmatrix}X(t) \\
Y(t)\end{pmatrix} =
A \begin{pmatrix}X(t) \\
Y(t)\end{pmatrix}. \tag{3}
$$
左辺の $d/dt$ は要素ごとの微分を表す.右辺の行列 $A$ は
$$
A = \begin{pmatrix} -a & 0 \\
a & -b \end{pmatrix}
$$
とおいた.(1) のときからの類推で (2) の解は
$$
\begin{pmatrix}X(t) \\
Y(t)\end{pmatrix} =
\exp(At)
\begin{pmatrix}X(0) \\
Y(0)\end{pmatrix} \tag{4}
$$
とできそうな気がする.しかし,この時点では解 (4) はただの連想で論理的な考察ではないし,そもそも $\exp(At)$ がなんなのかよくわからないのでそれを考えていく.
突然で恐縮だが,行列 $A$ として固有値 $\lambda_i$ と固有ベクトル $\boldsymbol{v}_i$ で対角化できるものを考える.
$$
A = (\boldsymbol{v}_1, \boldsymbol{v}_2) \begin{pmatrix} \lambda_1 & 0 \\
0 & \lambda_2\end{pmatrix} (\boldsymbol{v}_1, \boldsymbol{v}_2)^{-1}
$$
固有ベクトルを並べた行列を $P$, 固有値を対角成分に持つ行列を $\Lambda$ とおき,この式を $A=P \Lambda P^{-1}$ のようにも表すことにする.
さて $A^2=AA$ と書くことにすると,これについてはさほど違和感もないだろうし曖昧さもない. $A^2$ は次のようにも書ける.
$$
\begin{aligned}
A^2 & =P \Lambda P^{-1}\cdot P \Lambda P^{-1}\\
&=P \Lambda \Lambda P^{-1}\\
&=P \begin{pmatrix} \lambda_1^2 & 0\\
0 & \lambda_2^2\end{pmatrix} P^{-1}.
\end{aligned}
$$
同様,2より大きい整数 $k$ に対しても,
$$
A^k =P \begin{pmatrix} \lambda_1^k & 0 \\
0 & \lambda_2^k\end{pmatrix} P^{-1}.
$$
これよりためしに行列の指数関数を
$$
\exp(At) =P \begin{pmatrix} \exp(\lambda_1 t) & 0 \\
0 & \exp(\lambda_2t)\end{pmatrix} P^{-1}
$$
としてみる.これは成分ごとの微分に対し,
$$
\begin{aligned}
\frac{d}{dt} \exp(A t) &= \frac{d}{dt}P \begin{pmatrix} \exp(\lambda_1 t) & 0 \\
0 & \exp(\lambda_2 t)\end{pmatrix} P^{-1} \\
&=P \begin{pmatrix} \lambda_1 \exp(\lambda_1 t) & 0 \\
0 & \lambda_2 \exp(\lambda_2 t)\end{pmatrix} P^{-1} \\
&= P \Lambda \begin{pmatrix} \ \exp(\lambda_1 t) & 0 \\
0 & \exp( t)\end{pmatrix} P^{-1}\\
&=P \Lambda P^{-1} \cdot P\begin{pmatrix} \ \exp(\lambda_1 t) & 0 \\
0 & \exp(t)\end{pmatrix} P^{-1}\\
&= A \exp(At)
\end{aligned}
$$
となる.これは望ましい性質である.なぜならこの関係を使って (4) を両辺微分してみると,(3)の式を満たしていることがわかるからである.
このように行列をつかって微分方程式が扱えそうなことがわかったことで,より多くの連立方程式をまとめて扱うなど,いろいろな可能性が広がる.
R による数値的確認はこちら:
https://gist.github.com/abikoushi/3cc3b4fc02eb5e3027059db1cd1e511e