Notes_JP

あまり知られていないこと

【導出】超簡単! 回転行列の導き方

f:id:IsThisAPen:20180128163145j:plain:w400

「回転行列」とは,ベクトルに作用させると「回転したベクトル」を返す行列です(上図).この「回転行列」は,公式を覚えるまでもなく簡単に求めることができます.この記事で紹介する方法は,

  • 2次元なら暗算で導出できる,
  • 3次元回転行列を始めとして,どんな変換行列も求めることができる,

というメリットがあります.しかも,

  • 前提とする知識は,行列の計算方法だけ

です.ぜひ身につけましょう.

【導出】2次元回転行列

それでは,3ステップに分けて解説します.

f:id:IsThisAPen:20180128164132j:plain
(図はTex(TikZ)で作成:【TikZ】2次元回転行列の導出で用いた図〜Texコード - Notes_JP)

  • Step1:「$x$軸方向の単位ベクトル」を$\theta$回転させたベクトルを求める
    上図(左)から簡単にわかるように,「$x$軸方向の単位ベクトル」を$\theta$回転させると
    \begin{align}
    \left(
    \begin{array}{c}
    1\\
    0
    \end{array}
    \right)
    %
    \overset{\theta\text{回転}}{\longrightarrow}
    %
    \color{blue}{
    \left(
    \begin{array}{c}
    \cos\theta\\
    \sin\theta
    \end{array}
    \right)
    }
    \end{align}
    です.
  • Step2:「$y$軸方向の単位ベクトル」を$\theta$回転させたベクトルを求める
    同様に上図(右)から,「$y$軸方向の単位ベクトル」を$\theta$回転させると,
    \begin{align}
    \left(
    \begin{array}{c}
    0\\
    1
    \end{array}
    \right)
    %
    \overset{\theta\text{回転}}{\longrightarrow}
    %
    \color{red}{
    \left(
    \begin{array}{c}
    -\sin\theta\\
    \cos\theta
    \end{array}
    \right)
    }
    \end{align}
    です.
  • Step3:Step1, 2で求めたベクトルを並べる
    上で求めた2つのベクトルを並べた行列が,求めたかった回転行列になっています.簡単ですね.

    回転行列
    \begin{align} \left( \begin{array}{cc} \color{blue}{\cos\theta}&\color{red}{-\sin\theta}\\ \color{blue}{\sin\theta}&\color{red}{\cos\theta} \end{array} \right) \end{align}



この導出法が使えるのは,2次元回転行列だけではありません.単位ベクトルの変換さえわかってしまえば,3次元の回転行列を始め,どんな行列でも求めることができるのです.

【導出の背景】行列と単位ベクトルの関係〜3次元回転行列も導ける!

では,なぜ上の方法で回転行列を求めることができたのか解説します.使った性質は一つだけです!

行列は「単位ベクトルの変換先を並べたもの」である

行列と単位ベクトルの関係
「$i$成分が$1$,それ以外の成分は$0$」の単位ベクトルを \begin{align} e_i= \left( \begin{array}{c} 0 \\ \vdots \\ 0\\ 1\\ 0\\ \vdots \\ 0 \end{array} \right) (i~~~ \end{align} と書くとき,行列$M$は \begin{align} M=(Me_1,...,Me_n) \end{align} と表せる.

つまり,「行列とは,単位行列の変換先を順に並べたもの」と言えるのです.これを応用すれば,3次元回転行列も導くことができます.

証明

ベクトル$Me_i$の$j$成分を,行列計算の定義どおりに計算すると
\begin{align}
(Me_i)_j
=\sum_{k=1}^n M_{jk}(e_i)_k
\end{align}
です($(e_i)_k$はベクトル$e_i$の$k$成分を表します).ここで,$(e_i)_k$は$k=i$のとき以外$0$なので,
\begin{align}
(Me_i)_j=M_{ji}
\end{align}
となります.//

わかりにくい場合は,$2\times2$行列で具体的に計算して上の証明と比べてみて下さい!

まとめ

いかがでしたか?$\theta$回転の公式を覚えて,$\theta$に具体的な値を代入して・・・なんてしなくても,例えば$30^\circ$や$90^\circ$で上の考え方を使えば,その都度,暗算で回転行列を導出することができます.また,毎回導出するのであれば

時計回りに回転させた公式だっけ?反時計回りに回転させた公式だっけ?
などと悩まなくて済みますし,どっち回りの公式でも簡単に導けます.

応用について

今回の導出法は,広い分野に応用が効きます.例えば,以下の記事を参照して下さい:

  1. 線形代数(行列表示, 対角化, Jordan標準形, etc.).
  2. 物理