Python

Python ベクトル内積 Numpy(np.inner)

目標

 

Pythonを使ってベクトルの内積計算を行います。

スポンサーリンク

ベクトルの表記

 

ベクトルを列ベクトルで表記すると、

\begin{align*}\boldsymbol{a}=\begin{pmatrix}
a_{x}\\ a_{y}
\\a_{z}
\end{pmatrix}\cdot\cdot\cdot (1)\end{align*}

となります。

 

行ベクトルで書く場合は、(1)の転置行列として表記します。

\begin{align*}\boldsymbol{{}^t\!a}=\begin{pmatrix}
a_{x}& a_{y} & a_{z}
\end{pmatrix}\cdot\cdot\cdot (2)\end{align*}

 

ベクトルの内積

 

ベクトルの内積は、2つのベクトルの各成分についての積を足し合わせたものです。

今、2つのベクトルを\(\boldsymbol{a}\)と\(\boldsymbol{b}\)とします。

 

ベクトルの内積の表記

\begin{align*}
\boldsymbol{{}^t\!a}\boldsymbol{b}
=\begin{pmatrix}a_{x}& a_{y} & a_{z}\end{pmatrix}\begin{pmatrix}
b_{x}\\ b_{y}\\b_{z}
\end{pmatrix}=a_{x}b_{x}+a_{y}b_{y}+a_{z}b_{z}
\cdot\cdot\cdot (3)\end{align*}

 


高校生まではこうしていたかなと思います。

\begin{align*}
\boldsymbol{a}\cdot \boldsymbol{b}=(a_{x} \,a_{y}  \,a_{z})\cdot(b_{x} \,b_{y} \,b_{z})=a_{x}b_{x}+a_{y}b_{y}+a_{z}b_{z}
\cdot\cdot\cdot (4)\end{align*}

このように考えても良いでしょう。


 

ベクトルの内積を計算

 

例えば次の2つのベクトルの内積を計算してみましょう。

\begin{align*}\boldsymbol{a}=\begin{pmatrix}
4\\ 5
\\6
\end{pmatrix}\cdot\cdot\cdot (5)\end{align*}

\begin{align*}\boldsymbol{b}=\begin{pmatrix}
5\\ 3
\\7
\end{pmatrix}\cdot\cdot\cdot (6)\end{align*}

 

ベクトルの内積は、

\begin{align*}
\boldsymbol{{}^t\!a}\boldsymbol{b}
=\begin{pmatrix}4& 5 & 6 \end{pmatrix}\begin{pmatrix}
5 \\ 3 \\ 7
\end{pmatrix}=4*5+5*3+6*7=77
\cdot\cdot\cdot (7)\end{align*}

 

Pythonでベクトルの内積「np.inner」を計算

 

Pythonでベクトルのベクトルの内積は「numpyのinner関数」という関数を使います。

先ほどと同様に、実行すると下記のようになります。

 

手計算で出した答えと同じですね。

 

※ちなみに外積は「numpyのcross関数」を使います。
内積が「inner」で、外積が「cross」と覚えておきましょう。

 

ベクトルの内積のPythonの別表記

 

ベクトルの内積は「numpyのdot関数」を使っても計算できます。

これを実行すると次の答えを返してくれます。

「nu.dot関数」を使った場合と同じ結果になりましたね。

 

 

【プロフィール】

カマキリ
(^^)

大学の専攻は物性理論で、Fortranを使って数値計算をしていました。
CAEを用いた流体解析は興味がありOpenFOAMを使って勉強しています。

プロフィール記事はこちら

 

大学学部レベルの物理の解説をします 大学初学者で物理にお困りの方にわかりやすく解説します。

このブログでは主に大学以上の物理を勉強して記事にわかりやすくまとめていきます。

  • ・解析力学
  • ・流体力学
  • ・熱力学
  • ・量子統計
  • ・CAE解析(流体解析)
  • note
    noteで内容は主に「プログラミング言語」の勉強の進捗を日々書いています。また、「現在勉強中の内容」「日々思ったこと」も日記代わりに書き記しています。
  • youtube
    youtubeではオープンソースの流体解析、構造解析、1DCAEの操作方法などを動画にしています。
    (音声はありません_(._.)_)
  • Qiita
    Qiitaではプログラミング言語の基本的な内容をまとめています。
関連記事もどうぞ