CODE $\Sigma$

2023/05/31
回転した楕円体の体積を求める

実数a, b, cを用いて、楕円体は下記のような式で表されます。

\begin{align}
\frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1
\end{align}

しかし、これは楕円体の各主軸がx, y, z軸に一致している前提です。一般的には、3次元空間の楕円体は、次のような式になります。

\begin{align}
a_{11}x^{2} + a_{22}y^{2} + a_{33}z^{2} + a_{12}xy + a_{23}yz + a_{31}xz = 1
\end{align}

ただし、$a_{ij}$は実数です。今回は、このような形式の楕円体の体積を求めてみます。

行列表現

次のような実対称行列$\boldsymbol{A}$を定義します。

\begin{align}
\boldsymbol{A} = \left(
\begin{matrix}
a_{11} & \frac{a_{12}}{2} & \frac{a_{31}}{2} \\
\frac{a_{12}}{2} & a_{22} & \frac{a_{23}}{2} \\
\frac{a_{31}}{2} & \frac{a_{23}}{2} & a_{33}
\end{matrix}
\right)
\end{align}

すると、さきほどの式(2)は、次のようにベクトルの内積で表せます。

\begin{align}
<\boldsymbol{x}, \boldsymbol{A}\boldsymbol{x}> = 1
\end{align}

ただし、$\boldsymbol{x} = (x, y, z)^t$です。

回転行列

ここで、回転行列の性質について軽く述べます。
(本記事では、右手系と左手系が入れ替わる、鏡映は考えないものとします)

概要

回転行列は、「ベクトルのノルムを保ったまま、向きのみ変換する行列」です。
したがって、回転行列$\boldsymbol{R}$と3次元ベクトル$\boldsymbol{x}$について、

\begin{align}
||\boldsymbol{R}\boldsymbol{x}|| = ||\boldsymbol{x}||
\end{align}

となります。

また、操作の前後でノルムが保存されるとき、互いに独立の2つのベクトルの内積は保存されます。実際、余弦定理より、独立なベクトル$\boldsymbol{a}, \boldsymbol{b}$に対し、以下の式が成り立ちます。
\begin{align}
<\boldsymbol{a}, \boldsymbol{b}> = \frac{1}{2}\left(
||\boldsymbol{a}||^2 + ||\boldsymbol{b}||^2 – ||\boldsymbol{a} – \boldsymbol{b}||^2
\right)
\end{align}
この式の意味するところは、たとえベクトル$\boldsymbol{a}, \boldsymbol{b}$が回転してベクトル$\boldsymbol{a’}, \boldsymbol{b’}$となったとしても、回転の前後でベクトルのノルムが変化しないために、式(6)の右辺も変化せず、内積も一定となります。

座標系$\Sigma$の正規直交基底のベクトル$\boldsymbol{e_{1}}, \boldsymbol{e_{2}}, \boldsymbol{e_{3}}$が回転行列$\boldsymbol{R}$により別の正規直交ベクトル$\bar{\boldsymbol{e_{1}}}, \bar{\boldsymbol{e_{2}}}, \bar{\boldsymbol{e_{3}}}$ に変換されたとします。この3つのベクトル$\bar{\boldsymbol{e_{1}}}, \bar{\boldsymbol{e_{2}}}, \bar{\boldsymbol{e_{3}}}$ を基底として、系$\bar{\Sigma}$を構成しているとします。

回転の前後で、互いに独立なベクトルの内積は変化しないため、系$\bar{\Sigma}$を構成する$\bar{\boldsymbol{e_{1}}}, \bar{\boldsymbol{e_{2}}}, \bar{\boldsymbol{e_{3}}}$も、正規直交基底となります。

回転行列を作る

また、系$\Sigma$から系$\bar{\Sigma}$に変換する回転行列$\boldsymbol{R}$は、ベクトル $\bar{\boldsymbol{e_{i}}}$を行方向に並べたものになります。
\begin{align}
\boldsymbol{R} = (\bar{\boldsymbol{e_{1}}}, \bar{\boldsymbol{e_{2}}}, \bar{\boldsymbol{e_{3}}})
\end{align}

実際、以下のように等号が成立します。($\boldsymbol{e_{i}}$をかける操作は、行列$\boldsymbol{R}$の第$i$列目を取り出す操作になるため)

\begin{align}
\bar{\boldsymbol{e_{i}}} = \boldsymbol{R} \boldsymbol{e_{i}}
\end{align}

系$\Sigma$上で座標$(x, y, z)$の点Pが、系$\bar{\Sigma}$上で座標$(\bar{x}, \bar{y}, \bar{z})$であるとすると、両者の座標の変換は次のようになります。

\begin{align}
x\boldsymbol{e_{x}} + y\boldsymbol{e_{y}} + z\boldsymbol{e_{z}} &= \bar{x}\bar{\boldsymbol{e_{x}}} + \bar{y}\bar{\boldsymbol{e_{y}}} + \bar{z}\bar{\boldsymbol{e_{z}}} \\
\boldsymbol{I}\boldsymbol{x} &= R\bar{\boldsymbol{x}} \\
\left(
\begin{matrix}
x \\ y \\ z
\end{matrix}
\right) &= \boldsymbol{R}
\left(
\begin{matrix}
\bar{x} \\ \bar{y} \\ \bar{z}
\end{matrix}
\right) \\

\end{align}

回転行列は直交行列

また、回転行列は直交行列なので、転置行列と逆行列が一致します。
\begin{align}
\boldsymbol{R}^t = \boldsymbol{R}^{-1}
\end{align}

実際に求めていく

先ほどの楕円体を表す実対象行列$\boldsymbol{A}$に対し、固有値と固有ベクトルを求めます。
それらを、$\lambda_{1}, \lambda_{2}, \lambda_{3}, \boldsymbol{l_{1}}, \boldsymbol{l_{2}}, \boldsymbol{l_{3}}$とします。

実対称行列の性質として、固有値は実数で、各固有ベクトルは直交します。よって、$\boldsymbol{l_{1}}, \boldsymbol{l_{2}}, \boldsymbol{l_{3}}$は、正規直交基底をつくります。このベクトルにより作られる系を系$\Sigma_{l}$とします。

次の式で与えられる回転行列$\boldsymbol{R}$は、元の系$\Sigma$から系$\Sigma_{l}$へ変換する行列となります。
\begin{align}
\boldsymbol{R} = (\boldsymbol{l_{1}}, \boldsymbol{l_{2}}, \boldsymbol{l_{3}})
\end{align}

式(11)より、系$\Sigma$と系$\Sigma_{l}$の座標の関係は次のようになります。
\begin{align}
\left(
\begin{matrix}
x \\ y \\ z
\end{matrix}
\right) &= \boldsymbol{R}
\left(
\begin{matrix}
x_{l} \\ y_{l} \\ z_{l}
\end{matrix}
\right) \\
\end{align}

式(4)を変形します。
\begin{align}
<\boldsymbol{x}, \boldsymbol{A}\boldsymbol{x}> &= tr(\boldsymbol{A}\boldsymbol{x}\boldsymbol{x}^t) \\
&= tr(\boldsymbol{A}\boldsymbol{R}\boldsymbol{x_{l}}\boldsymbol{x_{l}}^t\boldsymbol{R}^t) \\
&=tr(\boldsymbol{R}^t\boldsymbol{A}\boldsymbol{R}\boldsymbol{x_{l}}\boldsymbol{x_{l}}^t) \\
&= <\boldsymbol{x_{l}}, \boldsymbol{R}^t\boldsymbol{A}\boldsymbol{R}\boldsymbol{x_{l}}>
\end{align}

ただし、式(15)でベクトルの内積は、行列のトレース(対角成分の和)と等しい性質を使った。
$$<\boldsymbol{a}, \boldsymbol{b}> = tr(\boldsymbol{a}\boldsymbol{b}^t)$$
式(17)では、トレースについての性質を使った。
$$tr(\boldsymbol{A}\boldsymbol{B}) = tr(\boldsymbol{B}\boldsymbol{A})$$

式(18)について、$\boldsymbol{R}$は$\boldsymbol{A}$の固有ベクトルで作られているため、
\begin{align}
\boldsymbol{R}^t\boldsymbol{A}\boldsymbol{R} &= (\boldsymbol{l_{1}}, \boldsymbol{l_{2}}, \boldsymbol{l_{3}})^t(\lambda_{1}\boldsymbol{l_{1}}, \lambda_{2}\boldsymbol{l_{2}}, \lambda_{3}\boldsymbol{l_{3}}) \\
&=\left(
\begin{matrix}
\lambda_{1}||\boldsymbol{l_{1}}||^2 & \lambda_{2}\boldsymbol{l_{1}}\boldsymbol{l_{2}} & \lambda_{3}\boldsymbol{l_{1}}\boldsymbol{l_{3}} \\
\lambda_{1}\boldsymbol{l_{1}}\boldsymbol{l_{2}} & \lambda_{2}||\boldsymbol{l_{2}}||^2 &\lambda_{3}\boldsymbol{l_{2}}\boldsymbol{l_{3}} \\
\lambda_{1}\boldsymbol{l_{1}}\boldsymbol{l_{3}} & \lambda_{2}\boldsymbol{l_{2}}\boldsymbol{l_{3}} & \lambda_{3}||\boldsymbol{l_{3}}||^2
\end{matrix}
\right) \\
&=\left(
\begin{matrix}
\lambda_{1} & & \Huge{0} \\
& \lambda_{2}& \\
\Huge{0} & & \lambda_{3}
\end{matrix}
\right)
\end{align}

式(20)から式(21)の変形では、ベクトル$\boldsymbol{l_{1}}, \boldsymbol{l_{2}}, \boldsymbol{l_{3}}$が対象行列$\boldsymbol{A}$から生成された固有ベクトルで、互いに直交している性質を用いた。

すると、式(4)はさらに次のように変形できます。
\begin{align}
<\boldsymbol{x}, \boldsymbol{A}\boldsymbol{x}> &=<\boldsymbol{x_{l}}, \boldsymbol{R}^t\boldsymbol{A}\boldsymbol{R}\boldsymbol{x_{l}}> \\
&= \lambda_{1}x_{l}^2 + \lambda_{2}y_{l}^2 + \lambda_{3}z_{l}^2
\end{align}

よって、系$\Sigma_{l}$では、各固有ベクトルが楕円体の主軸となり、下記のような簡単な式になることがわかりました。

$$\lambda_{1}x_{l}^2 + \lambda_{2}y_{l}^2 + \lambda_{3}z_{l}^2 = 1 $$

ここで、固有値が負になると、それは楕円体とはならず、双曲面などになります。

固有値が正であれば、その体積$V$は
$$V = \frac{4}{3\sqrt{\lambda_{1}\lambda_{2}\lambda_{3}}}\pi$$
として得られます。

例題

(1) $\frac{7}{48}x^2 + \frac{31}{144}y^2 + \frac{5\sqrt{3}}{72}xy + z^2 = 1$

与式を行列を用いた形式に直すと、下記のようになります。
\begin{align}
\boldsymbol{A} &=\left(
\begin{matrix}
\frac{7}{48}&\frac{5\sqrt{3}}{144}&0\\
\frac{5\sqrt{3}}{144}&\frac{31}{144}&0\\
0&0&1
\end{matrix}
\right) \\
\boldsymbol{x}^t\boldsymbol{A} \boldsymbol{x} &= 1
\end{align}

行列$\boldsymbol{A}$について、固有値、固有ベクトルを求めると、それぞれ次のようになります。
\begin{align}
\lambda_{1} &= \frac{1}{9} \\
\lambda_{2} &= \frac{1}{4} \\
\lambda_{3} &= 1 \\
\boldsymbol{l}_{1} &= \left( \frac{\sqrt{3}}{2}, -\frac{1}{2}, 0 \right)^t \\
\boldsymbol{l}_{2} &= \left(\frac{1}{2}, \frac{\sqrt{3}}{2}, 0 \right)^t \\
\boldsymbol{l}_{3} &= (0, 0, 1)^t
\end{align}

よって、各主軸を座標の軸とする系$\Sigma_{l}$において、与式は次のようになります。
$$\frac{x^2}{9} + \frac{y^2}{4} + z^2 = 1 $$

体積$V$は、次のようになります。
\begin{align}
V &= \frac{4}{3}\pi\sqrt{9\cdot 4} \\
&= 8\pi
\end{align}

もとの座標系から、系$\Sigma_{l}$への変換は、以下の回転行列$\boldsymbol{R}’$をかけられています。
\begin{align}
\boldsymbol{R}’ &= (\boldsymbol{l_{1}}, \boldsymbol{l_{2}}, \boldsymbol{l_{3}}) \\
&= \left(
\begin{matrix}
\frac{\sqrt{3}}{2}&\frac{1}{2}&0\\
-\frac{1}{2}&\frac{\sqrt{3}}{2}&0\\
0&0&1
\end{matrix}
\right) \\
&=\left(
\begin{matrix}
cos\left( -\frac{\pi}{6}\right)&-sin\left( -\frac{\pi}{6}\right)&0\\
sin\left( -\frac{\pi}{6}\right)&cos\left( -\frac{\pi}{6}\right)&0\\
0&0&1
\end{matrix}
\right)
\end{align}

よって、もとの座標系から、z軸まわりに$-\frac{\pi}{6}$回転すれば、楕円体の主軸に一致することがわかります。

(2)$14x^2 + 29y^2 + 2z^2+32xy + 8xz + 12yz = 1$

これを行列表現に直すと、次のようになります。
\begin{align}
\boldsymbol{A} &=\left(
\begin{matrix}
14&16&4\\
16&29&6\\
4&6&2
\end{matrix}
\right) \\
\boldsymbol{x}^t\boldsymbol{A} \boldsymbol{x} &= 1
\end{align}

行列$\boldsymbol{A}$の3つの固有値は、mathmaticaなどで計算すると、それぞれ約0.64321, 3.8369, 40.520となります。よって、求める体積$V$は、
$$V\approx \frac{4}{3\sqrt{0.64321 \times 3.8369 \times 40.520}}\pi \approx 0.419$$

参考文献

金谷健一, 3次元回転, 共立出版, 2019