はじめに
あるふたつのベクトル $\U$ と $\V$ の内積 $\U \cdot \V$ について考える*1。高校の知識で、\[
\begin{align}
\U \cdot \V &= \abs{\U} \abs{\V} \cos \theta
\\
\U \cdot \V &= U_1 V_1 + U_2 V_2 + \dots = \sum_i U_i V_i
\end{align}
\]と、2通りの表現が思い浮かぶだろう。ここで、 $\theta$ はふたつのベクトルがなす角である。また、$U_i$ は $\U$ の $i$ 番目の成分だ。前者を「$\cos$ の内積」、後者を「成分の内積」とでも呼ぼう*2。
さて、このふたつの表記、ともに同じ内積を表しているので、以下が言えるはずである。\[
\begin{align}
\abs{\V} \abs{\U} \cos \theta = \sum_i U_i V_i
\end{align}
\]すなわち、$\cos$ の内積と成分の内積は等しくなるはずだが、それが証明できるだろうか? また、この式はつねに正しいと言えるだろうか?
この記事では、2次元ベクトルの内積にフォーカスをあて、$\cos$ の内積と成分の内積が(ある条件のときに)等しいことを見ていく。使う数学はすべて高校レベルなので、安心して読んでいただきたい。
ベクトルの展開のおさらい
2次元上のベクトルは、2つの成分で表わせ、\[
\begin{align}
\U = \left(
\begin{array}{c}
U_1
\\
U_2
\end{array}
\right)
\end{align}
\]と書ける*3。まずは、この「ベクトルの成分表示」というものがどういうものだったのかを見ていこう。
直交座標上では、ベクトル $U$ は下の図のように表される。
要は、 $x$ 座標が $U_1$ で、 $y$ 座標が $U_2$ であるような点を指す矢印のことだ。
このことを、ベクトルの展開でまじめに表すと、\[
\begin{align}
\U = U_1 \e_1 + U_2 \e_2
\end{align}
\]となる。ここで、 $\e_1$ や $\e_2$ は\[
\begin{align}
\e_1 &= \left(
\begin{array}{c}
1
\\
0
\end{array}
\right)
\\
\e_2 &= \left(
\begin{array}{c}
0
\\
1
\end{array}
\right)
\end{align}
\]であり、基底(basis)と呼ばれている。ベクトルを展開するときに基本となるベクトルということである。
ここで、今使っている基底の長さはどちらも1となっていることに注意する。さらに、$\e_1 \cdot \e_2 = 0$ が成り立っていることがわかるだろう。これらのことは成分内積で考えてもいいし、同じベクトルは角度 $0$ 、$\e_1$ と $\e_2$ は角度 $\pi/2$ で交わっていることから $\cos$ の内積を使って考えてもいい。
これらの性質をまとめておくと、今使っている基底に関しては\[
\begin{align}
\e_i \cdot \e_j = \left\{
\begin{array}{cc}
1 & (i = j)
\\
0 & (i \neq j)
\end{array}
\right.
\label{eq:orthonormal}
\end{align}
\]が言える。ここで、 $i$ や $j$ はそれぞれ、 $1$ と $2$ どちらかの添字をとるものとしている。こういった性質を持つ基底を特に、正規直交基底(orthonormal basis)と呼ぶ。「正規」とは長さが1であること、「直交」とは自分以外との内積がゼロとなることを指している。
それらを踏まえたうえで、\[
\begin{align}
\U
&= U_1 \e_1 + U_2 \e_2
\nonumber
\\
&= U_1 \left( \begin{array}{c} 1 \\ 0 \end{array} \right)
+ U_2 \left( \begin{array}{c} 0 \\ 1 \end{array} \right)
\nonumber
\\
&= \left(
\begin{array}{c}
U_1
\\
U_2
\end{array}
\right)
\nonumber
\end{align}
\]が成り立っていることがわかるだろう。つまり、ベクトルの成分表示とは、ベクトルを基底ベクトルで展開し、その展開系数($U_1$ など)を並べて書いたものなのだ。
$\cos$ の内積を使って成分の内積を「導く」
さて、ベクトルの成分表示について復習したところで、内積の話に進んでいこう。まずは、$\cos$ の内積だけ使って成分の内積\[
\begin{align*}
\U \cdot \V = U_1 V_1 + U_2 V_2
\nonumber
\end{align*}
\]が導けることを言おう。
先ほどのベクトルの展開を使って、\[
\begin{align}
\U \cdot \V &= \left( U_1 \e_1 + U_2 \e_2 \right) \cdot \left( V_1 \e_1 + V_2 \e_2 \right)
\nonumber
\\
&= U_1 V_1 \e_1 \cdot \e_1 + (U_1 V_2 + U_2 V_1) \e_1 \cdot \e_2 + U_2 V_2 \e_2 \cdot \e_2
\label{eq:general_inner_product}
\end{align}
\]となるが、式\eqref{eq:orthonormal}は $\cos$ の内積でも成り立つので、結局\[
\begin{align}
\U \cdot \V &= U_1 V_1 + U_2 V_2
\end{align}
\]が言える。
面倒そうだった $\e_1 \cdot \e_2$ の項は、ラッキーなことに、基底の直交性により消え、成分の内積の定義式になった。しかし、想像していただけたと思うが、基底(座標軸)が直行していない場合にはこの面倒そうな項は生き残る。
さらに言うと、基底の長さが $1$ になっていることにも助けられている。もし基底の長さが $1$ でなかったら、それぞれの項に基底の長さの $2$ 乗が現れてきてしまうだろう。これらの場合には成分の内積の定義を少し修正してやる必要があるのだが、それはまたの機会に。
成分の内積を使って $\cos$ の内積を「導く」
では今度は逆に、成分の内積から、 $\cos$ の内積が導けるか見てみよう。下図のように変数を設定しておく。
また、少なくともひとつのベクトルの長さがゼロであれば $\cos$ の内積と成分の内積は明らかに一致するので、ここではどちらのベクトルもゼロでない長さを持つとする。
ここで、おもむろに $\cos(\beta - \alpha)$ を計算してみよう。もちろん、 $\cos$ の内積の形に近づけたいためだ。\[
\begin{align}
\cos(\beta - \alpha) &= \cos \beta \cos \alpha + \sin \beta \sin \alpha
\nonumber
\\
&= \frac{V_1}{\abs{\V}} \frac{U_1}{\abs{\U}} + \frac{V_2}{\abs{\V}} \frac{U_2}{\abs{\U}}
\nonumber
\\
&= \frac{U_1 V_1 + U_2 V_2}{\abs{\U} \abs{\V}}
\end{align}
\]となる。これを使えば、\[
\begin{align}
U_1 V_1 + U_2 V_2
&= \abs{\U} \abs{\V} \frac{U_1 V_1 + U_2 V_2}{\abs{\U} \abs{\V}}
\nonumber
\\
&=\abs{\U} \abs{\V} \cos(\beta - \alpha)
\end{align}
\]と、成分を使った内積から $\cos$ を使った内積の形に持っていくことができた。1行目では $\abs{\U} \abs{\V}$ をかけて割るという、ちょっとトリッキーなことをしている(けどこういうことはよくやるでしょ?)。
しかし、ここでも無条件に $\cos \alpha = U_1 / \abs{\U}$ などとしたが、これも直交座標のときにしか成り立たないので注意が必要だ。例えば、直交座標でベクトル $(1 \ 1)^T$ の角度は $\pi / 4$ だが、これも基底の長さが $1$ でなかったり直行していなかったりする場合では必ずしもそうならない。
また、この説明は一見 $2$ 次元のときにしか成り立たないように見えるが、内積を考えるときには始点が一致しているふたつのベクトルを考えることになり、それらは平面を作る。つまり、一般に $n$ 次元でもこれと同じ話が成り立つのだ。ただ単に、ふたつのベクトルが同じ平面内に収まるように座標を回転させるだけでいい。
まとめ
この記事では、$\cos$ の内積と成分の内積は、基底に正規直交性があるもの(直行しており長さが $1$)を使っているときに成り立つことを見た。反対に、基底が正規直交でない場合はこの考えに修正が必要そうであることも感じ取っていただけたと思う。
実際にその通りで、任意の基底で成分の内積を計算するには、「計量テンソル」というものを使って式を修正してやる必要がある。詳しくは、こちらの記事を参照していただきたい。