![見出し画像](https://assets.st-note.com/production/uploads/images/141981219/rectangle_large_type_2_a707ab37c26161843566f7cff123ff30.png?width=1200)
ベクトルの内積とコサインの関係
ベクトルの内積とコサインの関係は、よく出てくるのでここにまとめておきます。ベクトルの幾何学的な性質に基づいています。
ベクトルの定義
まず、$${n}$$次元のベクトル $${\mathbf{a}}$$ と $${\mathbf{b}}$$ が与えられたとします。
$$
\mathbf{a} = (a_1, a_2, \dots, a_n)
$$
$$
\mathbf{b} = (b_1, b_2, \dots, b_n)
$$
ベクトルはよく列ベクトル(縦ベクトル)で表現されますが、ここでは横に並べています。行列を扱わない(ベクトルしか扱わない)場合はこの方が読みやすいからです。
例えば、2次元ベクトルだったら、次のようになります。
$$
\mathbf{a} = (a_1, a_2)
$$
$$
\mathbf{b} = (b_1, b_2)
$$
ベクトルは大きさと向きを持つものだとよく言われますが、2次元だと図示できるのでわかりやすいです。
![](https://assets.st-note.com/img/1716772529906-hDsLBplsGW.png?width=1200)
3次元ベクトルも空間を使って理解できます。要素が3つに増えただけです。よって、$${n}$$次元に関しては、直感的な理解は難しいですが、これも要素が増えただけと受け入れます。
ベクトルの大きさの定義
2次元ベクトルの大きさ(長さ)は、次のようになります。
$$
\|\mathbf{a}\| = \sqrt{a_1^2 + a_2^2}
$$
$$
\|\mathbf{b}\| = \sqrt{b_1^2 + b_2^2}
$$
なお、ベクトルの大きさのことをノルムとも呼びます。ここではベクトルの各成分を2乗してその総和を取り、その平方根を計算しています。
図で見ると、ピタゴラスの定理で理解できるので、わかりやすいです。
![](https://assets.st-note.com/img/1716773998647-XBe30ZR1wH.png)
![](https://assets.st-note.com/img/1716774108908-sGVAZ76pQU.png?width=1200)
「2乗」を使っていることを明示的に示すために、L2ノルムと呼ぶこともよくあります。特に他のノルムと区別するのに使われます。他のノルムについては、こちらの記事を参照してください。
また、L1ノルムなどと区別するときは、$${\|\dots\|_2}$$と明示的に書きます。ただし、ここではL2ノルムしか登場しないので、単純に$${\|\dots\|}$$で表現しています。ノルムを$${|\dots|}$$と表現することもよくあります。
一般に、$${\mathbf{a}}$$ と $${\mathbf{b}}$$ のL2ノルムは、次のように定義されます。
$$
\|\mathbf{a}\| = \sqrt{a_1^2 + a_2^2 + \dots + a_n^2} = \sqrt{\sum\limits_{i=1}^{n} a_i^2}
$$
$$
\|\mathbf{b}\| = \sqrt{b_1^2 + b_2^2 + \dots + b_n^2} = \sqrt{\sum\limits_{i=1}^{n} b_i^2}
$$
3次元までは、図を使って直感的に理解できます。
![](https://assets.st-note.com/img/1716776177587-uVqu4Z4aqn.png?width=1200)
4次元以上はただ次元を増やしたものとして受け入れます。数学的に行う計算は同じルールに従うので矛盾はありません。
ベクトルの内積の定義
ベクトルの内積はコサイン(余弦)によって、次のように定義できます。
$$
\mathbf{a} \cdot \mathbf{b} = \|\mathbf{a}| |\mathbf{b}\| \cos \theta
$$
図で表現するといかになります。$${\theta}$$はベクトル間の角度です。角度の単位は通常ラジアンを使いますが、ここでは本質ではありません。
![](https://assets.st-note.com/img/1716778134778-7qajI75Avu.png?width=1200)
もうここでは軸を使っていません。2次元でも、3次元でも二つのベクトル間の角度は同じ考え方ができます。
なお、赤線のところが$${\|\mathbf{a}\|\cos\theta}$$に相当するので、ベクトル$${\mathbf{a}}$$をベクトル$${\mathbf{b}}$$に投影した大きさとベクトル$${\mathbf{b}}$$の大きさの積をとっているわけです。
逆に、ベクトル$${\mathbf{b}}$$をベクトル$${\mathbf{a}}$$に投影した大きさとベクトル$${\mathbf{a}}$$の大きさの積をとっていると考えても結果は同じです。
さらに$${n}$$次元でも(直感的には想像できませんが)角度が考えられると受け入れると、同じ定義が使えます。
要するに、この定義の内積の結果は、どのくらい同じ方向を向いているのかを表していると理解できます。よって、2つのベクトルの角度が小さいほど値が大きくなります。
ただし、内積の結果はそれぞれのベクトルの大きさにも依存します。そこで、次のように式を変形することでコサインの計算、つまりは方向がどのくらい似ているのかを計算できます。
$$
\cos \theta = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|}
$$
これは、各ベクトルを単位ベクトル(ノルムが1)にして内積をとっているのと同じことです。ベクトルの大きさに依存せず角度によるコサインの値だけが残ります。
2つのベクトルの方向が一致していると角度が0なのでコサインは1です。直角だとコサインは0です。真逆の方向は180度(あるいはラジアンで$${\pi}$$)なのでコサインは−1です。
よって、内積を利用してベクトル間のコサインの値を計算すると−1から1の間の値によって2つのベクトルの方向がどのくらい同じなのか(あるいは違うのか)を知ることができます。
ただし、このように内積を使ってコサインの値を計算するには、そもそも内積の計算を角度を必要とせずに行わなければ意味がありません。
そこでもう一つの内積の定義が必要となります。
もう一つの内積の定義
ベクトルの内積の計算をベクトル間の角度を使わずに行うことができます。
例えば、2次元ベクトルの内積(inner product)は次のように定義されます。
$$
\mathbf{a}\cdot\mathbf{b} = a_1 b_1 + a_2 b_2
$$
つまり、両方のベクトルからの各要素同士の積を足したものです。また、内積のことをドット記号$${\cdot}$$を使って表現するのでドット積(dot product)とも呼ばれます。
これはコサインを使った定義と同等ですが、その証明は後にします。
なお、同じベクトルで内積を計算して平方根を取るとL2ノルムになります。
$$
\|\mathbf{a}\| = \sqrt{\mathbf{a}\cdot\mathbf{a}} = \sqrt{a_1^2 + a_2^2}
$$
これは、コサインによる内積の定義と矛盾しません。同じベクトル同士なら角度は0なのでコサインは1です。よって、以下が成り立ちます。
$$
\sqrt{\|\mathbf{a}| |\mathbf{a}\| \cos 0} = \|\mathbf{a}\|
$$
3次元以上でも同様にベクトルの内積の定義を拡張できます。よって一般に、$${n}$$次元のベクトルの内積は次のように定義されます。
$$
\mathbf{a} \cdot \mathbf{b} = a_1 b_1 + a_2 b_2 + \dots + a_n b_n = \sum_{i=1}^{n} a_i b_i
$$
2つの内積の定義は同一
ここまで2つの異なる内積の定義を見てきましたが、この二つは同じであることは、余弦定理を使って証明することができます。しかし、余弦定理を覚えていないと始まらないので、ここでは図を使って余弦定理を暗記していなくとも行える方法をとります。
下図は、2つのベクトル$${\mathbf{a}}$$と$${\mathbf{b}}$$の関係を示しています。これまで通りですが、いろいろと注釈が加えられています。
![](https://assets.st-note.com/img/1716785903789-T34nW8LWxT.png?width=1200)
$${\mathbf{a}}$$と$${\mathbf{b}}$$の関係を$${\cos \theta}$$を含めて考えたいので次の関係があることを利用します。
$$
\|\mathbf{b}-\mathbf{a}\|^2 = (\|\mathbf{a}\|\sin\theta)^2 + (\|\mathbf{b}\| - \|\mathbf{a}\|\cos\theta)^2
$$
緑色、青色、紫色の線で囲まれた三角形に注目すると、上式はピタゴラスの定理そのものです。
まず、緑色の線の長さは、ベクトル$${\mathbf{a}}$$からベクトル$${\mathbf{b}}$$へ向かうベクトルの大きさとして計算できるので、これは$${\mathbf{b}-\mathbf{a}}$$のノルム$${\|\mathbf{b}-\mathbf{a}\|}$$です。
次に、青色の線の長さが$${\|\mathbf{a}\|\sin\theta}$$であるのは明白です。
さらに、紫色の線の長さは、$${\|\mathbf{b}\|}$$から$${\|\mathbf{a}\|\cos\theta}$$を引いたものと同じです。
以上から、次のように上式を変形出来ます。
$$
\begin{aligned}
\|\mathbf{b}-\mathbf{a}\|^2 &= (\|\mathbf{a}\|\sin\theta)^2 + (\|\mathbf{b}\| - \|\mathbf{a}\|\cos\theta)^2 \\
&= \|\mathbf{a}\|^2\sin^2\theta + \|\mathbf{b}\|^2 - 2\|\mathbf{a}\|\|\mathbf{b}\|\cos\theta + \|\mathbf{a}\|^2\cos^2\theta \\
&= \|\mathbf{a}\|^2 + \|\mathbf{b}\|^2 - 2\|\mathbf{a}\|\|\mathbf{b}\|\cos\theta
\end{aligned}
$$
この式のコサインがある項以外をベクトルの成分で書き直します。
$$
\begin{aligned}
\sum\limits_i^n (b_i - a_i)^2 &= \sum\limits_i^n a_i^2 + \sum\limits_i^n b_i^2 - 2\|\mathbf{a}\|\|\mathbf{b}\|\cos\theta \\
\sum\limits_i^n (b_i^2 - 2a_i b_i + a_i^2) &= \sum\limits_i^n a_i^2 + \sum\limits_i^n b_i^2 - 2\|\mathbf{a}\|\|\mathbf{b}\|\cos\theta \\
\sum\limits_i^n (- 2a_i b_i ) &= - 2\|\mathbf{a}\|\|\mathbf{b}\|\cos\theta \\
\sum\limits_i^n a_i b_i &= \|\mathbf{a}\|\|\mathbf{b}\|\cos\theta \\
\end{aligned}
$$
以上より、2つの内積の計算式は同等であることが証明されました。
$$
\mathbf{a}\cdot\mathbf{b} = \|\mathbf{a}\|\|\mathbf{b}\|\cos\theta = \sum\limits_i^n a_i b_i
$$
この記事が気に入ったらサポートをしてみませんか?