ベクトルの内積とは?誰でも理解できるようにわかりやすく解説

ベクトルの内積は、一般的に、「一方のベクトル \(\vec{v}\) に対して垂直な光を当てたときに、ベクトル \(\vec{v}\) 上にできるベクトル \(\vec{w}\) の射影の長さと、元のベクトル\(\vec{v}\) の長さとの積」と説明されます。

しかし、これだけではベクトルの内積とは一体なんなのかが全くわかりません。実際、ベクトルの内積を一言で伝えるのは難しく、教える側の人たちもベクトルの内積をどのように伝えたら良いのかと苦心していることだと思います。

そんな中でこのページでは、ベクトルの内積についてアニメーションを用いながら、誰でも直感的に理解できるように解説していきます。ぜひ真剣にご覧になってみてください。教科書や授業だけではなかなか得難かったような気付きをたくさん手に入れられることでしょう。

目次

1. ベクトルの内積とは

ベクトルの内積は、\(\vec{v}\cdot\vec{w}\)というようにドット( \(\cdot\) ) で表します。そのため「ドット積」とも呼ばれます。

このベクトルの内積の定義は、上でもお伝えしましたが、「一方のベクトル \(\vec{v}\) に対して垂直な光を当てたときに、ベクトル \(\vec{v}\) 上にできるベクトル \(\vec{w}\) の射影の長さと、元のベクトル\(\vec{v}\) の長さとの積」と説明されるのが一般的です。

これを視覚的にわかりやすく表したものが以下のアニメーションです。

さて、このベクトルの内積にどのような意味があるのかは後で解説するとして、まずは計算方法を確認しましょう。

1. 1. ベクトルの内積の求め方

ベクトルの内積の具体的な計算方法は次の通りです。

2次元ベクトルの内積の計算方法

\[
\vec{v}\cdot\vec{w}=
\left[ \begin{array}{cc} v_1 \\ v_2 \end{array} \right]
\cdot
\left[ \begin{array}{cc} w_1 \\ w_2 \end{array} \right]
=v_1\cdot w_1+ v_2\cdot w_2
\]

3次元ベクトルの内積の計算方法

\[
\vec{v}\cdot\vec{w}=
\left[ \begin{array}{cc} v_1 \\ v_2 \\ v_3\end{array} \right]
\cdot
\left[ \begin{array}{cc} w_1 \\ w_2 \\ w_3 \end{array} \right]
=v_1\cdot w_1+ v_2\cdot w_2 + v_3\cdot w_3
\]

覚え方としては、以下のアニメーションで示しているように、ベクトルの各行の要素を掛けたものを足し合わせると理解しておくのが効率的です。

1.2. ベクトルの内積の意味

それでは、このベクトルの内積にはどのような意味があるのでしょうか?

この点を理解するには『行列の計算方法のまとめ~線形代数で特に重要なもの3つを徹底理解!~』で解説した非正方行列とベクトルの積が役に立ちます。

先ほどのアニメーションでは、次の2つのベクトルの内積を表しました。

\[
\vec{v}\cdot\vec{w}=
\left[ \begin{array}{cc} 3 \\ 0 \end{array} \right]
\cdot
\left[ \begin{array}{cc} 2 \\ 3 \end{array} \right]
= 3\cdot 2 + 0 \cdot 3 = 6
\]

よく見てみると、この計算は \(\vec{v}\) を1行2列の変換行列 \(V\)として扱ったときの、線形変換 \(V\vec{w}\) の計算とまったく同じです。

\[
V\vec{w}=
\left[ \begin{array}{cc} 3 & 0 \end{array} \right]
\left[ \begin{array}{cc} 2 \\ 3 \end{array} \right]
= 3\cdot 2 + 0 \cdot 3 = 6
\]

そして2次元ベクトルを1行2列の行列で線形変換するということは、2次元平面上のベクトルを、1次元直線上のベクトルに変換することを意味します。これを実際にアニメーション化したものが以下です。

つまり、ベクトルの内積とは、1行 \(n\) 列の射影行列とベクトルの積であり、2次元や3次元のものを1次元化すること(=直線上に射影すること)なのです。

以上がベクトルの内積の意味です。

余談ですが、このようにベクトルを行列のように扱ったり、反対に行列をベクトルのように扱ったりすることを数学の世界では「双対そうつい」といいます。これは非常にややこしい概念なのですが、ベクトルの内積を、空間を1次元化する線形変換であるというように考えることは、この双対を理解するための入り口にもなります。

ポイント
ベクトルの内積 \(\vec{v}\cdot\vec{w}\) とは、一方のベクトルを、他方のベクトルの直線上に射影(=1次元化)したもの。

2. ベクトルの内積の性質

さて、ベクトルの内積には重要で興味深い性質があります。ここでは、その性質の中で特に重要なものを2つ解説します。なぜ2つなのかというと、この2つを理解しておけば、他の細かい性質は苦もなく直感的にわかるようになるからです。

それでは見ていきましょう。

2.1. 直交するベクトルの内積はゼロ

まず2つのベクトルが直交していると(=90度の角度で交差していると)、内積の値はゼロになります。なぜなら、射影とは一方のベクトルの真上から光を当てたときに、そのベクトル上にできる他方のベクトルの影であるため、この場合の射影はゼロになるからです。

このことはアニメーションで確認すると簡単に理解することができます。

以上のことから、直交している2つのベクトルの内積はゼロになります。

なお、内積の値はゼロ以下になるときもあります。具体的には2つのベクトルが少しでも同じ方向を向いているなら内積は正の値になり、少しでも逆方向を向いているなら内積は負の値になります。

これも以下のアニメーションでご確認ください。

これらの性質はさまざまなところで出てくるので必ず覚えておきましょう。

2.2. \(\vec{v}\cdot\vec{w}\) と \(\vec{w}\cdot\vec{v}\) は同じ

さて、ベクトルの内積の性質として、もう一つ面白いものがあります。普通、線形変換では、異なる行列は決して空間を同じように変換することはないのですが、内積においては \(\vec{v}\cdot\vec{w}\) と \(\vec{w}\cdot\vec{v}\) は同じなります。

\[\begin{eqnarray}
\vec{v}\cdot\vec{w}&=&
\left[ \begin{array}{cc} 4 \\ -1 \end{array} \right]
\cdot
\left[ \begin{array}{cc} 2 \\ 1 \end{array} \right]
= 4\cdot 2 + (-1) \cdot 1 = 7\\
\end{eqnarray}\]

\[\begin{eqnarray}
\vec{w}\cdot\vec{v}&=&
\left[ \begin{array}{cc} 2 \\ 1 \end{array} \right]
\cdot
\left[ \begin{array}{cc} 4 \\ -1 \end{array} \right]
= 2\cdot 4 + 1 \cdot (-1) = 7
\end{eqnarray}\]

上で解説したように、\(\vec{v}\cdot\vec{w}\) は \(\vec{v}\) を行列 \(V\) として見立てて、\(V\vec{w}\) と線形変換することと同じです。また、\(\vec{w}\cdot\vec{v}\) は \(\vec{w}\) を行列 \(W\) として見立てて、\(W\vec{v}\) と線形変換することと同じです。つまり、異なる線形変換を行っているのに値が同じになるのです。

なぜこうなるのかはアニメーションで確認すれば一目で理解することができます。

まず、\(\vec{v}\cdot\vec{w}\) (\(V\vec{w}\))は、ベクトル \(\vec{v}\) 上の直線に対する射影です(厳密にはベクトル \(\vec{v}\) の部分空間上に対する射影)

次に \(\vec{w}\cdot\vec{v}\) (\(W\vec{v}\))は、ベクトル \(\vec{w}\) 上の直線に対する射影です(厳密にはベクトル \(\vec{w}\) の部分空間上に対する射影)

このようにベクトルの内積においては、掛ける順番は、どちらの直線上(部分空間上)に射影するかというだけの違いしかありません。どちらの直線上に射影しようとも、どちらも線形変換としては複数次元のベクトルを、他方のベクトルの部分空間上に映し出すものであることは同じであるため、その内積の値は同じになります。

3. まとめ

以上、解説してきたようにベクトルの内積とは、幾何学的には、あるベクトルを任意の数直線上に投影することであり、別の視点から見ると、あるベクトルを 1列\(n\)行の行列で、1次元に線形変換することです。

一回読んだだけではなかなかピンと来ないかもしれませんが、このように理解した上で線形代数についてさらに深く学習していくと、必ずピンと腑に落ちるときが来ます。そして、このページがそのための役に立ったなら、とても嬉しく思います。

Python初心者におすすめのプログラミングスクール

「未経験からでもPythonを学べるプログラミングスクールを探しているけど、色々ありすぎてわからない」なら、次の3つのプログラミングスクールから選んでおけば間違いはありません。

Aidemy Premium:全くの初心者ができるだけ効率よく短期間で実務的に活躍できるAI人材になることを目的とした講座。キャリアカウンセリングや転職エージェントの紹介などの転職支援も充実しており、受講者の転職成功率が高い。

AIジョブカレPythonの基本をおさえた人が、実際に機械学習やディープラーニングを活用できるようになるための講座。転職補償型があるなどキャリア支援の内容が非常に手厚く、講師の質も最高クラス。コスパ最高。Python初心者用の対策講座もある。

データミックスプログラミング経験者のビジネスマンが、更なるキャリアアップのためにデータの処理方法を学んでデータサイエンティストになるための講座。転職だけでなく起業やフリーランスとして独立する人も多い。Python初心者用の対策講座もある。

特に、あなたが以下のような目標を持っているなら、この中から選んでおけば間違いはないでしょう。

・未経験からPythonエンジニアとして就職・転職したい
・AIエンジニアやデータサイエンティストとしてキャリアアップしたい
・起業やフリーランスを視野に入れたい

理由は「Python初心者のためのおすすめプログラミングスクール3選」で解説しています。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる