線形代数

提供: メモ帳@fmaj7b5.info
2013年6月18日 (火) 21:58時点における白飯 (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

目次

スカラー

座標系に依らない数、らしい。向きや方向を持たない。たぶん一つの値で表現できると思う。このサイトでは小文字で表す事にする。

例: 
  a, \ x, \ \alpha, \dots
みたいな。

ベクトル

これも座標系に依らないらしい。依存するのは座標軸を決めて、それを基準にして測った値の方。これをベクトルの成分という。このサイトではベクトルを太文字で表す。

要するに、座標系に依らない(2次元の)ベクトル\boldsymbol{v}があって、座標軸の組(原点は同じ)(\boldsymbol{e}_1,\,\boldsymbol{e}_2)(\boldsymbol{e}_1^\prime,\,\boldsymbol{e}_2^\prime)、それぞれの成分が(x_1,\,x_2)(x_1^\prime,\,x_2^\prime)とすると、次の式が成り立つ。


  \boldsymbol{v} = \boldsymbol{e} x_1 + \boldsymbol{e}_2 x_2
                 = \boldsymbol{e}_1^\prime x_1^\prime + \boldsymbol{e}_2^\prime x_2^\prime

ただし、ベクトルの成分をベクトルと言っちゃう事もあるので注意すべし。普通は座標系を直交座標系(デカルト座標系)など1種類に決める事が多いので、問題は生じにくい。行間を読め、ということか。

ちなみに、単に任意のn個の値を並べてもベクトルにならない場合があるので、うかつな事は言わないこと。詳しい定義はググるべし。まあ、直線!とか平面!とかそんな感じだったと思う。「線形」っていうくらいだし。

ベクトルの計算

d次元ベクトル\boldsymbol{x},\,\boldsymbol{y} \in \mathbb{R}^dがあるとする。それぞれのi番目の成分をx_i,\,y_iで表す。

和と差

普通に成分同士を足したり引いたりすれば良い。


  \boldsymbol{x} \pm \boldsymbol{y} = \{x_i \pm y_i\}_i

あ、\{\cdot\}_iは数列のi番目要素という意味にした。

内積

ベクトルには掛け算が2種類もある。内積はそのうちの一つで、計算結果がスカラーになる。成分ごとに掛け算して足す。


  \boldsymbol{x} \cdot \boldsymbol{y} = \sum_i x_i y_i

外積

内積は同じ基底の成分同士で計算したのに対し、外積は異なる成分同士で計算する。2次元の時は1個(スカラー)、3次元の時は3次元ベクトルになる。4次元以上の時は・・・知らん。

2次元


  \boldsymbol{x} \times \boldsymbol{y} = x_1 y_2 - x_2 y_1

3次元


  \boldsymbol{x} \times \boldsymbol{y} = (x_2 y_3 - x_3 y_2,\ x_3 y_1 - x_1 y_3,\ x_2 y_3 - x_3 y_2)

大きさ

それ自身との内積のルート。


  |\boldsymbol{x}| = \sqrt{\boldsymbol{x} \cdot \boldsymbol{x}} = \sqrt{\sum_i x_i x_i}

特に大きさが1のものを単位ベクトルと呼んだりする。

行列

スカラーx (添え字なし)、ベクトル\{x_i\} (添え字1個)とくると、添え字2個が出てくるのが自然の摂理。ベクトルが1次元配列で表現できるのに対して、行列は行・列で表せる表になる。何か言い回しが難しい。とにかく、行列は大文字で表すとする。

例:

  A = \{a_{ij}\} =
    \begin{bmatrix}
      a_{11} & \cdots & a_{1n} \\
      \vdots & \ddots & \vdots \\
      a_{m1} & \cdots & a_{mn}
    \end{bmatrix}

ベクトルも行または列の長さが1の行列として扱う事ができ、縦に長いやつを縦ベクトル(列ベクトル)、横に長いやつを横ベクトル(行ベクトル)と呼ぶ。このサイトではデフォルトを縦ベクトルとして\boldsymbol{x}で表し、横ベクトルを\boldsymbol{x}^\text{T}で表す、確率が高い。 ベクトルも行列の1種であることから分かるように、行列も単に数字を並べれば良いわけでは無い。たぶん、行列A、スカラーa,\,b、ベクトル\boldsymbol{x},\,\boldsymbol{y}に対して(少なくとも)こんな式が成り立たなくてはいけないはず。


  A (a \boldsymbol{x} + b \boldsymbol{y}) = a A \boldsymbol{x} + b A \boldsymbol{y}

詳しくはググる事。

名前が付いてる行列

正方行列

行数と列数が同じ行列。正方形。

零行列

成分が全て0。ブラックホール。

対角行列

対角成分(i=jな所)にしか値が無い行列.あとは0。


  D =
    \begin{bmatrix}
      d_1 &        & 0 \\
          & \ddots &   \\
        0 &        & d_n
    \end{bmatrix}
    = \text{diag}(d_1,\, \dots, d_n)

対角成分が全て1のものを特に単位行列と呼ぶ。

上三角行列

対角成分より上側にしか値が無い行列。あとは0。


  U =
    \begin{bmatrix}
      * & \cdots & * \\
        & \ddots & \vdots \\
      0 &        & *
    \end{bmatrix}

下三角行列

対角成分より下側にしか値が無い行列。上三角行列の逆。


  L =
    \begin{bmatrix}
           * &        & 0 \\
      \vdots & \ddots &   \\
         {}* & \cdots & *
    \end{bmatrix}

対称行列

a_{ij} = a_{ji}な行列。

歪対称行列

a_{ij} = -a_{ji}な行列。

行列の計算

行列A = \{a_{ij}\}B = \{b_{ij}\}があるとする。

和と差

ベクトルと同じように、成分ごとに足したり引いたりすれば良い。当然、行数・列数が同じでないとダメ。


  A \pm B = \{a_{ij} \pm b_{ij}\}_{ij}

計算結果の(i,\,j)成分は、左側の行列の第i行目の横ベクトルと右側の行列の第j列目の縦ベクトルとの内積になる。なので、左側の行列の幅と右側の行列の高さが同じでないといけない。


  A B = \left\{\sum_k a_{ik} b_{kj} \right\}_{ij}

転置

(i,\,j)成分と(j,\,i)成分を入れ替える。ここでは行列Aの転置をA^\text{T}で表す。人によっては{}^\text{T}AとかA^\primeとかを用いる事もある。


  A^\text{T} = \{a_{ji}\}_{ij}

逆行列

行列Aの逆行列はA^{-1}と書いてAのインバースと読む。Aと掛けると単位行列になってしまう不思議な行列。


  A A^{-1} = A^{-1} A = I

ただしIは単位行列を表す。


  A^{-1} = \left\{
    \frac{1}{(n-1)!} \varepsilon^{i k_1 \dots k_{n-1}} \varepsilon_{j l_1 \dots l_{n-1}}
    a_{k_1}^{l_1} \dots a_{k_{n-1}}^{l_{n-1}}
  \right\}_{ij} / |A|

行列式

計算方法は教えてもらえるが、何に使うのかピンと来ない値。こゆうちの積とか。行列Aの行列式は|A|とか\text{det}(A)とか書く。

2x2行列


  \begin{vmatrix}
    a_{11} & a_{12} \\
    a_{21} & a_{22}
  \end{vmatrix}
  = a_{11} a_{22} - a_{12} a_{21}

外積みたいだな。

3x3行列


  \begin{vmatrix}
    a_{11} & a_{12} & a_{13} \\
    a_{21} & a_{22} & a_{23} \\
    a_{31} & a_{32} & a_{33}
  \end{vmatrix}
  = a_{11}
    \begin{vmatrix}
      a_{22} & a_{23} \\
      a_{32} & a_{33}
    \end{vmatrix}
  - a_{21}
    \begin{vmatrix}
      a_{12} & a_{13} \\
      a_{32} & a_{33}
    \end{vmatrix}
  + a_{31}
    \begin{vmatrix}
      a_{12} & a_{13} \\
      a_{22} & a_{23}
    \end{vmatrix}

それ以上

3x3の場合と同様にバラしていけば計算できるはず。というか、手計算でやる事はまず無いと思う。

トレース

対角成分の和。行列Aのトレースは\text{tr}(A)と書いたり。こゆうちの和みたいな。


  \text{tr}(A) = \sum_i a_{ii}

固有値


  A \boldsymbol{v} = \boldsymbol{v} \lambda

を満たすベクトル\boldsymbol{v}を固有ベクトル、\lambdaを固有値という。この\boldsymbol{v},\,\lambdaの組み合わせは複数出てくるので、固有値\lambdaに対応する固有ベクトル\boldsymbol{v}のように表現することが多い。大抵、最大か最小固有値に対応するものが重要っぽい。

固有値と固有ベクトルの算出は、次の特性方程式を解くことによる。

  |A \boldsymbol{v} - \lambda I| = 0

但しn次正方行列に対しては一般にn次方程式が出てくるため、4次以上になると計算が難しい。従って計算機であれば繰り返し計算などの近似解法を用いる方が簡単。というか、そういうライブラリがあるので利用するのが賢い。

行列の大きさ

Wikipediaによると、色々あるらしい。

フロベニウスノルム


  ||A||_\text{F} = \sqrt{\sum_i \sum_j (a_{ij})^2} = \sqrt{\text{tr}(A^\text{T} A)}

これは固有値の和になるようだ。

行列の分解

LU分解

行列を下三角行列(L)と上三角行列(U)の積に分解する方法。ガウスの消去法をやると上三角行列が出てくるが、それに至るまでの操作を行列で表現するとLの部分も分かる。

LU分解を利用すると、連立線形方程式が簡単に(後進代入)解ける。

    A \boldsymbol{x} = (L U) \boldsymbol{x} = \boldsymbol{b}

  \Rightarrow \,
  \left\{
  \begin{array}{l}
    \boldsymbol{y} = L^{-1} \boldsymbol{b} \\
    U \boldsymbol{x} = \boldsymbol{y}
  \end{array}
  \right.

QR分解

行列を直交行列(Q)と上三角行列(R)の積に分解する方法。上三角行列をRで表す宗派があるようで、LU分解もLR分解という別名がある。ランク落ちしてても使えるらしい。


  A = Q R

固有値分解

正方行列を固有ベクトルを横に並べた行列Vと対応する固有値を対角成分に持つ行列Dの積に分解する方法。


  \begin{array}{l}
    A \left[ \boldsymbol{v}_1,\, \dots, \boldsymbol{v}_d \right] 
      = \left[ \boldsymbol{v}_1,\, \dots, \boldsymbol{v}_d \right] \text{diag}\left( \lambda_1, \dots, \lambda_d \right)
      = V D \\
    A = V D V^{\text{T}}
  \end{array}

特異値分解(SVD)

行列を直交行列U,\,Vと対角行列Dの積に分解する方法。正方行列以外にも使えるため便利。


  A = U D V^\text{T}

ちなみに上式から明らかなように、

  \begin{array}{l}
    A A^\text{T} = U D^2 U^\text{T} \\
    A^\text{T} A = V D^2 V^\text{T} \\
  \end{array}
であるため、データA=\left[ \boldsymbol{x}_1, \dots, \boldsymbol{x}_n \right]の内積A^\text{T} Aが分かれば、その固有ベクトルを使って共分散行列A A^\text{T}の固有ベクトルを次のように求める事ができる。

  U = A V D^{-1}
何に使えるかは知らない。

その先?

添え字の数が0、1、2と増えてきたからには、その先があるに違いない。けど、興味ない(笑)。