Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

『プログラミングのための線形代数』メモ

第1章 ベクトル・行列・行列式

ベクトル空間 := 和と定数倍が定義された集合

基底

  • 基準となるベクトルe1,e2e_1, e_2を定めて、そこからの座標(e1e_1を3歩、e2e_2を2歩、のように)を指定する方法でv=3e1+2e2v = 3 e_1 + 2 e_2のように表すことができる

  • e1,e2e_1, e_2を基底ベクトル、(3,2)(3, 2)を座標という

ベクトルの組(e1,,en)(e_1,\cdots,e_n)を基底と呼ぶのは、次の2つの条件を満たすときだけ

  1. どんなベクトルvvでもv=x1e1++xnenv=x_1 e_1 + \cdots + x_n e_nで表現できる(どの土地にも番地がついていて表現できる)

  2. その表し方は1通りだけ(1つの土地には番地は1つだけ)

    • つまり、(x1,,xn)T(x1,,xn)T(x_1, \dots, x_n)^T \neq (x'_1, \dots, x'_n)^Tならx1e1++xnenx1e1++xnenx_1 e_1 + \cdots + x_n e_n \neq x'_1 e_1 + \cdots + x'_n e_n(違う番地なら違う土地)

      • あるいはx1e1++xnen=x1e1++xnenx_1 e_1 + \cdots + x_n e_n = x'_1 e_1 + \cdots + x'_n e_nなら(x1,,xn)T=(x1,,xn)T(x_1, \dots, x_n)^T = (x'_1, \dots, x'_n)^T(同じ土地なら番地も同じ)

    • 移項して言い換えると(x1x1)e1++(xnxn)en=o(x_1 - x'_1) e_1 + \cdots + (x_n - x'_n) e_n = oより、u1e1++unen=ou_1 e_1 + \cdots + u_n e_n = oならu1==unu_1 = \cdots = u_n

行列は写像

コラム1.15

行列は線形写像を座標成分で表したもの

線形写像とは

  1. f(x+y)=f(x)+f(y)f(\boldsymbol{x}+ \boldsymbol{y}) = f(\boldsymbol{x})+f(\boldsymbol{y})

  2. f(cx)=cf(x)f(c \boldsymbol{x}) = c f(\boldsymbol{x})

を満たす写像

任意の線形写像は行列を掛けるという形式でも表現できる

単位ベクトルを入力としたときの出力をai=f(ei)\boldsymbol{a}_i = f(\boldsymbol{e}_i)とおくと、入力x=(x1,,xn)T\boldsymbol{x}=(x_1,\dots,x_n)^Tに対する出力は

f(x)=x1a1++xnanf(\boldsymbol{x}) = x_1 \boldsymbol{a}_1 + \cdots + x_n \boldsymbol{a}_n

となる。

縦ベクトルを並べた行列A=(a1,,an)A=(\boldsymbol{a}_1, \dots, \boldsymbol{a}_n)を使えば

f(x)=Axf(\boldsymbol{x}) = A \boldsymbol{x}

と書くことができる

行列の積=写像の合成

座標変換

同じ空間でも、基底は色々な取り方をとることができる。どう基底を立って座標を表現しても、実態のベクトルは同じ

先に結論:座標変換は「可逆正方行列AAを掛ける」という形で書ける。可逆行列による線形変換は座標変換と解釈できる。

(例)2次元の基底が2組(ex,ey),(ex,ey)(e_x, e_y), (e_x', e_y')を使って、ベクトルvv

v=xex+yey=xex+yeyv = x e_x + y e_y = x' e_x' + y' e_y'

と2通りに表現するとする。

座標v=(x,y)Tv=(x, y)^Tと座標v=(x,y)Tv'=(x', y')^Tの対応関係(変換規則)はどうなるのだろうか?

まず、基底の関係は

ex=3ex2eyey=ex+eye'_x = 3 e_x - 2e_y\\ e_y' = - e_x + e_y

だったとすると、v,vv, v'

v=xex+yey=x(3ex2ey)+y(ex+ey)=x3exx2eyyex+yey=(3xy)ex+(2x+y)ey\begin{align} v &= x' e_x' + y' e_y'\\ &= x' (3 e_x - 2e_y) + y' (- e_x + e_y)\\ &= x' 3 e_x - x' 2e_y - y' e_x + y' e_y\\ &= (3 x' - y') e_x + (-2x' + y') e_y\\ \end{align}

これとv=xex+yeyv = x e_x + y e_yが等しいので

x=3xyy=2x+y\begin{align} x &= 3 x' - y'\\ y &= -2x' + y' \end{align}

これをx,yx', y'について解くと

x=x+yy=2x+3y\begin{align} x' &= x+y\\ y' &= 2x+3y \end{align}

これが座標v=(x,y)Tv=(x, y)^Tと座標v=(x,y)Tv'=(x', y')^Tの対応関係(変換規則)となる

行列で書くと

(xy)=(3121)(xy)(xy)=(1123)(xy)\begin{aligned} & \left(\begin{array}{l} x \\ y \end{array}\right)=\left(\begin{array}{cc} 3 & -1 \\ -2 & 1 \end{array}\right)\left(\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right) \\ & \left(\begin{array}{l} x^{\prime} \\ y^{\prime} \end{array}\right)=\left(\begin{array}{ll} 1 & 1 \\ 2 & 3 \end{array}\right)\left(\begin{array}{l} x \\ y \end{array}\right) \end{aligned}

となる

第3章 LU分解

第4章 固有値・対角化・Jordan標準形

4.1 安定性

ξ=f(u)\xi = f(u) について考える。ただし、単なる関数ではなく、時系列的であり(u(t),ξ(t)u(t), \xi(t))、現時点だけでなく過去のinputにも依存する(株価予測のような。自己回帰モデルのようなイメージ)

今回興味があるのは、発散する(無限に大きくなってしまう)かどうか。例えばξ(t)=2ξ(t1)\xi(t) = 2 \xi(t-1)のようだと、どんどん値が大きくなって発散する。

x(t)=(ξ(t),ξ(t1),ξ(t2))T,u(t)=0x(t) = (\xi(t), \xi(t-1), \xi(t-2))^T, u(t) = 0

とおけば

x(t)=Ax(t1),AR3×3x(t) = A x(t-1), A\in\mathbb{R}^{3\times 3}

のようになる。

どんな初期値からスタートしてもx(t)x(t)が有限の範囲に留まるのか(リアプノフ安定 - Wikipedia)どうかを判定したい。

写像はある基底のもとで行列AAによって表されている。別の基底をもってきて、xxを座標変換してやり、もっと簡単な行列にできればよい。ここで固有ベクトルが役に立つ。

対角行列の場合

もし係数行列が対角行列

Undefined control sequence: \diag at position 23: …A x(t-1)\\
A = \̲d̲i̲a̲g̲(a_1, \dots, a_…

x(t) = A x(t-1)\\
A = \diag(a_1, \dots, a_n)

なら、対角成分を見れば良い

a1,,an1|a_1|,\dots,|a_n| \leq 1

なら暴走はしない

対角化できる場合

y(t)=Cx(t),C=(1111)\boldsymbol{y}(t)=C \boldsymbol{x}(t), \quad C=\left(\begin{array}{cc} 1 & 1 \\ 1 & -1 \end{array}\right)

をのようにx(t)=(x1(t),x2(t))Tx(t) = (x_1(t), x_2(t))^Tからy(t)=(y1(t),y2(t))Ty(t)=(y_1(t), y_2(t))^Tへ変換することで、

元の問題

x(t)=Ax(t1)x(t) = A x(t-1)

y(t)=Λy(t1),Λ=(6004)\boldsymbol{y}(t)=\Lambda \boldsymbol{y}(t-1), \quad \Lambda=\left(\begin{array}{ll} 6 & 0 \\ 0 & 4 \end{array}\right)

へと書き換えられる

CCP1P^{-1}にして

x(t)=Py(t)y(t)=P1x(t)\begin{aligned} & \boldsymbol{x}(t)=P \boldsymbol{y}(t) \\ & \boldsymbol{y}(t)=P^{-1} \boldsymbol{x}(t) \end{aligned}

とすると

y(t)=P1x(t)=P1Ax(t1)=P1A(Py(t1))=(P1AP)y(t1)\begin{aligned} \boldsymbol{y}(t) & =P^{-1} \boldsymbol{x}(t)=P^{-1} A \boldsymbol{x}(t-1) \\ & =P^{-1} A(P \boldsymbol{y}(t-1))=\left(P^{-1} A P\right) \boldsymbol{y}(t-1) \end{aligned}