ベクトルの内積・外積について理解する

# 概要

この記事では，ベクトルの内積および外積に関する公式を証明し，これらの意義を理解する．

## 内積

内積の本質は三角形の3つの辺の長さの関係を表す余弦定理だ．
なのでまずは余弦定理を証明する．
以下の図の三角形$ABC$を考える．
ただし，角$\angle ABC$を用いるため，$A\ne B$かつ$B\ne C$とする．
3つの辺の長さ$|\vec{AB}|,|\vec{AC}|,|\vec{BC}|$の関係を求める．
三平方の定理を使えるようにするため，補助線として頂点$A$から辺$BC$へ垂線を引き，その足を点$D$とする．

![inner_product.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2354177/30f0b333-16ed-766c-0e60-1b3383acffeb.png)

直角三角形$ABD$について，三平方の定理より

```math
|\vec{AD}|^2+|\vec{BD}|^2=|\vec{AB}|^2
```

また，直角三角形$ACD$について，三平方の定理より

```math
|\vec{AD}|^2+|\vec{CD}|^2=|\vec{AC}|^2
```

上の2つの式を見ると，$|\vec{AD}|^2$という項が共通しているため，連結してこの項を消すと，

```math
|\vec{AB}|^2-|\vec{BD}|^2=|\vec{AC}|^2-|\vec{CD}|^2
```

となる．
この式から，補助のため定義した点$D$を消そう．
余弦関数の定義より，

```math
|\vec{BD}|=|\vec{AB}|\cos\angle ABC
```

であり，また

```math
|\vec{BD}|+|\vec{CD}|=|\vec{BC}|
```

より，

```math
\begin{align}
|\vec{CD}|&=|\vec{BC}|-|\vec{BD}|\\
&=|\vec{BC}|-|\vec{AB}|\cos\angle ABC
\end{align}
```

なので，これらの式を使って点$D$を消すと，

```math
\begin{align}
|\vec{AB}|^2-|\vec{BD}|^2&=|\vec{AC}|^2-|\vec{CD}|^2\\
|\vec{AB}|^2-\left(|\vec{AB}|\cos\angle ABC\right)^2&=|\vec{AC}|^2-\left(|\vec{BC}|-|\vec{AB}|\cos\angle ABC\right)^2\\
|\vec{AB}|^2-|\vec{AB}|^2\cos^2\angle ABC&=|\vec{AC}|^2-\left(|\vec{BC}|^2-2|\vec{BC}||\vec{AB}|\cos\angle ABC+|\vec{AB}|^2\cos^2\angle ABC\right)\\
|\vec{AB}|^2-|\vec{AB}|^2\cos^2\angle ABC&=|\vec{AC}|^2-|\vec{BC}|^2+2|\vec{BC}||\vec{AB}|\cos\angle ABC-|\vec{AB}|^2\cos^2\angle ABC\\
|\vec{AB}|^2&=|\vec{AC}|^2-|\vec{BC}|^2+2|\vec{BC}||\vec{AB}|\cos\angle ABC\\
|\vec{AB}|^2-|\vec{AC}|^2+|\vec{BC}|^2&=2|\vec{BC}||\vec{AB}|\cos\angle ABC\\
\frac{|\vec{AB}|^2-|\vec{AC}|^2+|\vec{BC}|^2}{2}&=|\vec{BC}||\vec{AB}|\cos\angle ABC\\
\end{align}
```

となる．
また，以下の図のように$|\vec{BD}|+|\vec{CD}|=|\vec{BC}|$ではなく$|\vec{BC}|+|\vec{CD}|=|\vec{BD}|$の場合であっても，

![inner_product.drawio のコピー.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2354177/3f38a84c-6878-a5ec-1134-1659bb6e27cc.png)

```math
\begin{align}
|\vec{BC}|+|\vec{CD}|&=|\vec{BD}|\\
|\vec{CD}|&=|\vec{BD}|-|\vec{BC}|\\
&=|\vec{AB}|\cos\angle ABC-|\vec{BC}|
\end{align}
```

というように$\vec{CD}$の符号が逆になるだけで，2乗されれば同じなので結局

```math
\frac{|\vec{AB}|^2-|\vec{AC}|^2+|\vec{BC}|^2}{2}=|\vec{BC}||\vec{AB}|\cos\angle ABC
```

が成り立つのである．
これは余弦定理の一つの表現になっており，なおかつベクトルの内積$\vec{BA}\cdot\vec{BC}$にも等しい．
三角形$ABC$が$n$次元空間内に存在するとして，各頂点を原点を$O$とする直交座標系で

```math
\begin{align}
\vec{OA}&=
\begin{bmatrix}
a_1\\
\vdots\\
a_n
\end{bmatrix}\\
\vec{OB}&=
\begin{bmatrix}
b_1\\
\vdots\\
b_n
\end{bmatrix}\\
\vec{OC}&=
\begin{bmatrix}
c_1\\
\vdots\\
c_n
\end{bmatrix}\\
\end{align}
```

とすると，算出した内積は，

```math
\begin{align}
\vec{BA}\cdot\vec{BC}&=\frac{|\vec{AB}|^2-|\vec{AC}|^2+|\vec{BC}|^2}{2}\\
&=\frac{|\vec{OB}-\vec{OA}|^2-|\vec{OC}-\vec{OA}|^2+|\vec{OC}-\vec{OB}|^2}{2}\\
&=\frac{\left|\begin{bmatrix}b_1\\\vdots\\b_n\end{bmatrix}-\begin{bmatrix}a_1\\\vdots\\a_n\end{bmatrix}\right|^2-\left|\begin{bmatrix}c_1\\\vdots\\c_n\end{bmatrix}-\begin{bmatrix}a_1\\\vdots\\a_n\end{bmatrix}\right|^2+\left|\begin{bmatrix}c_1\\\vdots\\c_n\end{bmatrix}-\begin{bmatrix}b_1\\\vdots\\b_n\end{bmatrix}\right|^2}{2}\\
&=\frac{\left|\begin{bmatrix}b_1-a_1\\\vdots\\b_n-a_n\end{bmatrix}\right|^2-\left|\begin{bmatrix}c_1-a_1\\\vdots\\c_n-a_n\end{bmatrix}\right|^2+\left|\begin{bmatrix}c_1-b_1\\\vdots\\c_n-b_n\end{bmatrix}\right|^2}{2}\\
&=\frac{\sum_{i=1}^n\left(\left(b_i-a_i\right)^2-\left(c_i-a_i\right)^2+\left(c_i-b_i\right)^2\right)}{2}\\
&=\frac{\sum_{i=1}^n\left(\left(b_i^2-2a_ib_i+a_i^2\right)-\left(c_i^2-2a_ic_i+a_i^2\right)+\left(c_i^2-2b_ic_i+b_i^2\right)\right)}{2}\\
&=\frac{\sum_{i=1}^n\left(b_i^2-2a_ib_i+a_i^2-c_i^2+2a_ic_i-a_i^2+c_i^2-2b_ic_i+b_i^2\right)}{2}\\
&=\frac{\sum_{i=1}^n\left(2b_i^2-2a_ib_i+2a_ic_i-2b_ic_i\right)}{2}\\
&=\sum_{i=1}^n\left(b_i^2-a_ib_i+a_ic_i-b_ic_i\right)\\
&=\sum_{i=1}^n\left(a_i-b_i\right)\left(c_i-b_i\right)\\
\end{align}
```

となり，これはベクトル$\vec{BA}$と$\vec{BC}$の各成分ごとの積の和という，ベクトルの内積のもう一つの形となっている．
つまり内積の本質は

```math
|\vec{BC}||\vec{AB}|\cos\angle ABC=\sum_{i=1}^n\left(a_i-b_i\right)\left(c_i-b_i\right)
```

という等式であり，これを$\vec{BA}\cdot\vec{BC}$と表記しているのである．
ここまで$A\ne B$かつ$B\ne C$という仮定に基づいて内積について議論したが，これが満たされない場合，つまり$\vec{BA}$と$\vec{BC}$の少なくともひとつが零ベクトルの場合は，角$\angle ABC$が定義されないため上の等式の左辺も定義できないのだが，右辺については定義でき，計算すると零ベクトルとなる．

## 外積

### 外積の定義

2つの三次元ベクトル

```math
\begin{align}
\vec{OA}&=\begin{bmatrix}x_a\\y_a\\z_a\end{bmatrix}\\
\vec{OB}&=\begin{bmatrix}x_b\\y_b\\z_b\end{bmatrix}\\
\end{align}
```

の外積は

```math
\begin{align}
\vec{OA}\times\vec{OB}&=\begin{bmatrix}x_a\\y_a\\z_a\end{bmatrix}\times\begin{bmatrix}x_b\\y_b\\z_b\end{bmatrix}\\
&=\begin{bmatrix}y_az_b-z_ay_b\\z_ax_b-x_az_b\\x_ay_b-y_ax_b\end{bmatrix}
\end{align}
```

で定義される．

### 外積の長さ

外積の長さの2乗と内積の2乗の和は，

```math
\begin{align}
\left|\vec{OA}\times\vec{OB}\right|^2+\left(\vec{OA}\cdot\vec{OB}\right)^2&=\left(\vec{OA}\times\vec{OB}\right)\cdot\left(\vec{OA}\times\vec{OB}\right)+\left(\vec{OA}\cdot\vec{OB}\right)^2\\
&=\begin{bmatrix}y_az_b-z_ay_b\\z_ax_b-x_az_b\\x_ay_b-y_ax_b\end{bmatrix}\cdot\begin{bmatrix}y_az_b-z_ay_b\\z_ax_b-x_az_b\\x_ay_b-y_ax_b\end{bmatrix}+\left(\begin{bmatrix}x_a\\y_a\\z_a\end{bmatrix}\cdot\begin{bmatrix}x_b\\y_b\\z_b\end{bmatrix}\right)^2\\
&=\left(y_az_b-z_ay_b\right)^2+\left(z_ax_b-x_az_b\right)^2+\left(x_ay_b-y_ax_b\right)^2+\left(x_ax_b+y_ay_b+z_az_b\right)^2\\
&=\left(y_a^2z_b^2-2y_ay_bz_az_b+y_b^2z_a^2\right)\\
&+\left(x_a^2z_b^2-2x_ax_bz_az_b+x_b^2z_a^2\right)\\
&+\left(x_a^2y_b^2-2x_ax_by_ay_b+x_b^2y_a^2\right)\\
&+\left(x_a^2x_b^2+y_a^2y_b^2+z_a^2z_b^2+2x_ax_by_ay_b+2x_ax_bz_az_b+2y_ay_bz_az_b\right)\\
&=x_a^2x_b^2+x_a^2y_b^2+x_a^2z_b^2+y_a^2x_b^2+y_a^2y_b^2+y_a^2z_b^2+z_a^2x_b^2+z_a^2y_b^2+z_a^2z_b^2\\
&=\left(x_a^2+y_a^2+z_a^2\right)^2\left(x_b^2+y_b^2+z_b^2\right)^2\\
&=\left|\vec{OA}\right|^2\left|\vec{OB}\right|^2\\
\left|\vec{OA}\times\vec{OB}\right|^2+\left(\vec{OA}\cdot\vec{OB}\right)^2&=\left|\vec{OA}\right|^2\left|\vec{OB}\right|^2\\
\left|\vec{OA}\times\vec{OB}\right|^2+\left|\vec{OA}\right|^2\left|\vec{OB}\right|^2\cos^2\angle AOB&=\left|\vec{OA}\right|^2\left|\vec{OB}\right|^2\\
\end{align}
```

ここで，ベクトル$\vec{OA}$と$\vec{OB}$が共に零ベクトルでないとすると，

```math
\begin{align}
\left|\vec{OA}\times\vec{OB}\right|^2+\left|\vec{OA}\right|^2\left|\vec{OB}\right|^2\cos^2\angle AOB&=\left|\vec{OA}\right|^2\left|\vec{OB}\right|^2\\
\frac{\left|\vec{OA}\times\vec{OB}\right|^2}{\left|\vec{OA}\right|^2\left|\vec{OB}\right|^2}+\cos^2\angle AOB&=1\\
\frac{\left|\vec{OA}\times\vec{OB}\right|^2}{\left|\vec{OA}\right|^2\left|\vec{OB}\right|^2}&=1-\cos^2\angle AOB&\\
&=\sin^2\angle AOB\\
\left|\vec{OA}\times\vec{OB}\right|^2&=\left|\vec{OA}\right|^2\left|\vec{OB}\right|^2\sin^2\angle AOB\\
\end{align}
```

この式について，ベクトルの長さは$0$以上であるから

```math
\begin{align}
0&\le\left|\vec{OA}\times\vec{OB}\right|\\
0&\le\left|\vec{OA}\right|\\
0&\le\left|\vec{OB}\right|\\
\end{align}
```

であることと，2つのベクトル$\vec{OA}$と$\vec{OB}$のなす角$\angle AOB$は$0$以上$\pi$以下より$0\le\sin\angle AOB$であることから，

```math
\begin{align}
\left|\vec{OA}\times\vec{OB}\right|&=\left|\vec{OA}\right|\left|\vec{OB}\right|\sin\angle AOB\\
\end{align}
```

となる．
ベクトル$\vec{OA}$が零ベクトルの場合，すなわち，

```math
\begin{align}
\vec{OA}&=\vec{0}\\
&=\begin{bmatrix}0\\0\\0\end{bmatrix}
\end{align}
```

の場合，外積の長さは

```math
\begin{align}
\left|\vec{OA}\times\vec{OB}\right|&=\left|\begin{bmatrix}0\\0\\0\end{bmatrix}\times\begin{bmatrix}x_b\\y_b\\z_b\end{bmatrix}\right|\\
&=\left|\begin{bmatrix}0z_b-0y_b\\0x_b-0z_b\\0y_b-0x_b\end{bmatrix}\right|\\
&=\left|\begin{bmatrix}0\\0\\0\end{bmatrix}\right|\\
&=0
\end{align}
```

となる．
また，ベクトル$\vec{OB}$が零ベクトルの場合，すなわち，

```math
\begin{align}
\vec{OB}&=\vec{0}\\
&=\begin{bmatrix}0\\0\\0\end{bmatrix}
\end{align}
```

の場合も同様に，外積の長さは

```math
\begin{align}
\left|\vec{OA}\times\vec{OB}\right|&=\left|\begin{bmatrix}x_a\\y_a\\z_a\end{bmatrix}\times\begin{bmatrix}0\\0\\0\end{bmatrix}\right|\\
&=\left|\begin{bmatrix}y_a0-z_a0\\z_a0-x_a0\\x_a0-y_a0\end{bmatrix}\right|\\
&=\left|\begin{bmatrix}0\\0\\0\end{bmatrix}\right|\\
&=0
\end{align}
```

となる．
外積の長さについてまとめると，2つのベクトル$\vec{OA}$と$\vec{OB}$の外積の長さは，少なくとも一方のベクトルが零ベクトルの場合は$0$，両方のベクトルが零ベクトルでない場合は

```math
\left|\vec{OA}\times\vec{OB}\right|=\left|\vec{OA}\right|\left|\vec{OB}\right|\sin\angle AOB
```

となる．
よって，外積が零ベクトルとならないのは，$\vec{OA}$と$\vec{OB}$が共に零ベクトルでなく，さらに$\sin\angle AOB$が$0$でない場合，すなわち$0<\angle AOB<\pi$の場合，すなわち$\vec{OA}$と$\vec{OB}$が平行でない場合である．

### 外積の向き

$\vec{OA}$と$\vec{OB}$が共に零ベクトルでなく，平行でもない場合，外積$\vec{OA}\times\vec{OB}$は長さを持つベクトルであるから，向きも持つことがわかる．
ベクトル$\vec{OA}$と，外積$\vec{OA}\times\vec{OB}$の内積は，

```math
\begin{align}
\vec{OA}\cdot\left(\vec{OA}\times\vec{OB}\right)&=\begin{bmatrix}x_a\\y_a\\z_a\end{bmatrix}\cdot\begin{bmatrix}y_az_b-z_ay_b\\z_ax_b-x_az_b\\x_ay_b-y_ax_b\end{bmatrix}\\
&=x_a\left(y_az_b-z_ay_b\right)+y_a\left(z_ax_b-x_az_b\right)+z_a\left(x_ay_b-y_ax_b\right)\\
&=x_ay_az_b-x_ay_bz_a+x_by_az_a-x_ay_az_b+x_ay_bz_a-x_by_az_a\\
&=0
\end{align}
```

となる．
$\vec{OA}$と$\vec{OB}$が共に零ベクトルでなく，平行でもない場合，$\vec{OA}\times\vec{OB}$も零ベクトルでないから，$\vec{OA}$と$\vec{OA}\times\vec{OB}$がなす角を$\theta$とすると，

```math
\begin{align}
\vec{OA}\cdot\left(\vec{OA}\times\vec{OB}\right)&=\left|\vec{OA}\right|\left|\vec{OA}\times\vec{OB}\right|\cos\theta\\
0&=\left|\vec{OA}\right|\left|\vec{OA}\times\vec{OB}\right|\cos\theta\\
0&=\cos\theta\\
\end{align}
```

ここで，2つのベクトルのなす角の範囲

```math
0\le\theta\le\pi
```

で余弦関数が$0$になるのは

```math
\theta=\frac{\pi}{2}
```

のみであるから，

```math
\vec{OA}\perp\vec{OA}\times\vec{OB}
```

である．
同様に，

```math
\vec{OB}\perp\vec{OA}\times\vec{OB}
```

である．
また，これらの性質を満たすのは外積だけでなく，外積の反対方向のベクトルも同様に，

```math
\begin{align}
\vec{OA}&\perp-\left(\vec{OA}\times\vec{OB}\right)\\
\vec{OB}&\perp-\left(\vec{OA}\times\vec{OB}\right)\\
\end{align}
```

を満たすことにも注意しよう．
実はこちらの反対方向のベクトルを外積と定義してもよいのだが，一般的には上に示した外積の定義が採用されている．
なぜなら，

```math
\begin{bmatrix}1\\0\\0\end{bmatrix}\times\begin{bmatrix}0\\1\\0\end{bmatrix}=\begin{bmatrix}0\\0\\1\end{bmatrix}
```

というように，$x$軸の正の方向の単位ベクトルと$y$軸の正の方向の単位ベクトルの外積が$z$軸の正の方向の単位ベクトルになるため，どちらかといえばこちらの方が美しい定義と言えるからだ．
また，右手でグッドサインを作って，親指の付け根から人差し指の付け根への方向を$\vec{OA}$とし，親指の付け根から人差し指の先への方向を$\vec{OB}$とした時，親指の付け根から親指の先への方向が$\vec{OA}\times\vec{OB}$の方向であると説明されることもあるが，これはあくまでも右手座標系を採用した場合にはそうなるということであり，左手座標系であれば当然左手でグッドサインを作る必要がある．
これは逆に言えば，外積が，その座標系が右手系か左手系かを決めているということでもある．
つまり，ある三次元空間を直交座標系で表現するために，最初に$x$軸を定め，それと直角をなす$y$軸を定めた時点で，これら両方の軸それぞれと直角をなす方向は2つに絞られる．
そして外積の方向を規定することによって，$z$軸の正の方向がそれら2つ方向のうち1つに決定されるのである．