はじめに
『秋葉原ロボット部 理論グループ Advent Calendar 2025』の投稿です
線形代数のなかでは特に射影が大好きですが、量子力学を学び始めてから興味の中心はとにかく回転です!
量子力学に登場するスピンとも深い関係のある四元数について、直観的な説明と具体的な使い方を紹介したいと思います(書き終わってみると、直観的とはいえないなー)
実装編として大好きな四元数をsympyで実装するに続きます
2次元回転
2次元平面上の点$P:(x,y)$を原点を中心に角度$\theta$だけ回転させると、変換後の点$P':(x',y')$はどのように表せるでしょうか
回転の行列表現
天下り的ですが、$\begin{bmatrix}x \\ y \end{bmatrix}\overset{\theta 回転}{\longmapsto}\begin{bmatrix}x' \\ y' \end{bmatrix}$の変換を回転行列$R$で表現すると以下になります
\begin{bmatrix} x' \\ y' \end{bmatrix} =
R\begin{bmatrix} x \\ y \end{bmatrix} =
\begin{bmatrix} \cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \end{bmatrix}
\begin{bmatrix} x \\ y \end{bmatrix} =
\begin{bmatrix} x \cos \theta - y \sin \theta \\
x \sin \theta + y \cos \theta \end{bmatrix}
回転行列の重要な性質として、行列式が 1 になることが挙げられます
回転は長さや角度を保つ変換(等長変換)であるため、行列式は 1 になります
$$
det(R) = \cos^2 \theta+ \sin^2 \theta = 1
$$
なぜこの行列で表現できるかは、おまけ(回転行列R)で説明しました
回転の複素数表現
点$P:(x,y)$を複素数$z=x+iy$で、回転後の点$P':(x',y')$を$z'=x'+iy'$で表現します
つまり、2次元のベクトルを複素数の実部と虚部の係数で表現したことになります
また、行列の回転の変換を、回転を表現する複素数での演算子$w$を以下のようにとります
w = e^{i\theta} = \underbrace{\cos \theta}_{実部} + \underbrace{i \sin \theta}_{虚部}
$w$と$z$との積から、回転後の$z'$は以下のように計算できます
下線の部分が行列での結果と一致していますね
\begin{aligned}
z' &= wz \\
&= (x + i y)(\cos \theta + i \sin \theta) \\
&= \underline{x \cos \theta - y \sin \theta} + i(\underline{x \sin \theta + y \cos \theta})
\end{aligned}
ここでのポイントは、大きさが$1$の複素数、つまり単位円上の複素数が回転を表すことです
3次元回転
3次元空間の回転は2次元の場合と同様に、もちろん$(3 \times3)$行列で表現することもできますが、この記事では、四元数での回転に注力します
複素数での回転表現との類似性を強調して説明したいと思います
四元数
まずは、四元数ですが、複素数では虚数単位は$i$の1つだけでしたが、四元数では虚数単位が$i,j,k$の3つになります
四元数$q$は、実数$q_0$と虚数単位$i,j,k$の係数$q_1,q_2,q_3$を用いて以下のように表現されます。実部と虚部の構造は複素数と同じです
q = \underbrace{q_0}_{実部} + \underbrace{q_1 i + q_2 j + q_3 k}_{虚部}
虚数単位$i,j,k$のルールは以下です
\begin{aligned}
i^2 = j^2 = k^2 = -1 & \ \ (同じ虚数単位の積は-1)\\
ij = k , jk = i, ki = j & \ \ (循環置換:隣合う虚数単位の積は次の虚数単位)\\
ji = -k, kj = -i, ik = -j & \ \ (半交換性:順序を変えると符号は変わる)
\end{aligned}
3次元回転の四元数表現
3次元空間上の位置
点$P,P'$の位置を、それぞれ四元数$p,p'$として以下のように表現します
- 回転前の点$P:(x,y,z)$を、純虚四元数$p=xi+yj+zk$
- 回転後の点$P'(x',y',z')$を、純虚四元数$p'=x'i+y'j+z'k$
3次元空間中の回転軸
2次元では回転の中心として原点だけを考えれば十分でしたが、3次元では回転の向きを定めるために回転軸を指定する必要があります
3次元の回転軸も、四元数の虚数部分で表現できます
回転軸の単位方向ベクトルを$(n_1,n_2,n_3)$として、純虚四元数$n=n_1i+n_2j+n_3k$と表現します
ただし、$n$の大きさは$1$である必要があります。これは2次元回転で、複素数の大きさを$1$としたことに対応しています
3次元空間中の回転の角度
複素数での回転演算子$w$は以下でした
実部と虚部に$\cos \theta,\sin \theta$の係数を付けることで回転角度を表現していました
w = \underbrace{\cos \theta}_{実部} + \underbrace{i \sin \theta}_{虚部}
四元数での回転の変換演算子$q$も同様ですが、実部と虚部に$\cos \frac{\theta}{2}, \sin \frac{\theta}{2}$の係数を付けることで回転角度を指定します、$\theta$ではなくて$\frac{\theta}{2}$となっているところにご注意ください
q = \underbrace{\cos \frac{\theta}{2}}_{実部} + \underbrace{(n_1 i + n_2 j + n_3 k)\sin \frac{\theta}{2}}_{虚部}
3次元空間の回転のまとめ
- 3次元空間の座標$(x,y,z)$は、以下の純虚四元数で表現する
- $p=xi+yj+zk$
- 回転軸の単位方向ベクトル$(n_1,n_2,n_3)$は、以下の純虚四元数で表現する
- $n=n_1i+n_2j+n_3k$ (ただし、$n_1^2+n_2^2+n_3^2=1$)
- 回転角$\theta$は、以下の回転四元数の形で表現する
- $q=\cos \frac{\theta}{2}+n\sin \frac{\theta}{2}$
3次元空間の回転の計算
回転を表す四元数を以下とすると
\begin{aligned}
q = \underbrace{\cos \frac{\theta}{2}}_{実部} + \underbrace{ (n_1 i + n_2 j + n_3 k)\sin \frac{\theta}{2}}_{虚部} \\\\
\end{aligned}
その共役四元数は以下です
\begin{aligned}
q^{\dagger} = \underbrace{\cos \frac{\theta}{2}}_{実部} - \underbrace{ (n_1 i + n_2 j + n_3 k)\sin \frac{\theta}{2}}_{虚部}
\end{aligned}
座標を表す純虚四元数$p$に対して、回転後の座標を表す純虚四元数$p'$は以下で与えられます
\begin{aligned}
p' = q p q^{\dagger}
\end{aligned}
左右から$q$と$q^{\dagger}$で作用させることで、全体として角度$\theta$の回転が実現されます
まとめ
長さが$1$の四元数(単位四元数)は群を作り、この群は$SU(2)$と同型になります
$SU(2)$と$SO(3)$をちゃんと理解できることが当面の目標です
この投稿をアップデートしながら伝えていけたらと思います
コメントなどいただけると、ありがたいです(お手柔らかに)
参考文献
- 『ストラング線形代数イントロダクション』
- 『3次元回転: パラメータ計算とリー代数による最適化』
おまけ(回転行列R)
回転行列が、以下のように表せるのは、何でかの話です
\begin{bmatrix} x' \\ y' \end{bmatrix} =
R\begin{bmatrix} x \\ y \end{bmatrix} =
\begin{bmatrix} \cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \end{bmatrix}
\begin{bmatrix} x \\ y \end{bmatrix} =
\begin{bmatrix} x \cos \theta - y \sin \theta \\
x \sin \theta + y \cos \theta \end{bmatrix}
点$P(x,y)$は標準基底 $\mathbf{e_1}=\begin{bmatrix} 1 \\ 0 \end{bmatrix}$、$\mathbf{e_2}=\begin{bmatrix} 0 \\ 1 \end{bmatrix}$として $P=x\mathbf{e_1} + y\mathbf{e_2}$と基底の線形結合で表現できます
そこで、原点を中心に$\theta$回転させると、標準基底$e_1,e_2$もそれぞれ$e'_1,e'_2$に変換されます(下図を参照)
- $e_1 =\begin{bmatrix} 1 \\ 0 \end{bmatrix}\overset{\theta 回転}{\longmapsto} e'_1= \begin{bmatrix} \cos \theta \\ \sin \theta \end{bmatrix}$
- $e_2 = \begin{bmatrix} 0 \\ 1 \end{bmatrix}\overset{\theta 回転}{\longmapsto} e'_2=\begin{bmatrix} -\sin \theta \\ \cos \theta \end{bmatrix}$
変換後の$P'$は
$$
\begin{aligned}
P' &= x e'_1 + y e'_2 = x \begin{bmatrix} \cos \theta \\ \sin \theta \end{bmatrix} + y \begin{bmatrix} -\sin \theta \\ \cos \theta \end{bmatrix} = \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} \\
\end{aligned}
$$