本ページはプロモーション(PR)が含まれています
Pythonでベクトルの内積を計算する!SymPyを利用したベクトルの内積
はるか
Pythonでベクトルの内積、どう思う?
ふゅか
SymPyを利用して計算してみよう!
内積とは
内積(またはドット積)とは、ベクトルの積の一種であり、2つのベクトルの類似度を示します。一般に、n次元ベクトル \(\mathbf{a} = (a_1, a_2, \ldots, a_n)\) と \(\mathbf{b} = (b_1, b_2, \ldots, b_n)\) の内積は次のように定義されます。
\[ \mathbf{a} \cdot \mathbf{b} = \sum_{i=1}^{n} a_i b_i = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n \]
SymPyとは
はるか
SymPyはPythonのライブラリ。シンボリック計算ができる。
SymPyを使用してベクトルの内積(ドットプロダクト)を計算することもできます。内積は、2つのベクトルのスカラー積であり、基本的な計算の一つです。以下に、次の環境を利用してSymPyを使用して内積を計算する基本的な方法を示します。
- SymPy 1.13.0
- Python 3.12.4
SymPyを利用した内積の計算
SymPyのimport
はるか
まず、SymPyをインポートする。
これ以降のプログラムはsympyをimportしている前提で進めます。
import sympy as sp
内積の基本的な使用例
まず、SymPyを使用して2つのベクトルの内積を計算する例を示します。
# ベクトルの定義
v1 = sp.Matrix([1, 2, 3])
v2 = sp.Matrix([4, 5, 6])
# 内積の計算
dot_product = v1.dot(v2)
print("内積:", dot_product)
このコードは、ベクトル \(\mathbf{v1} = \begin{pmatrix} 1 \\ 2 \\ 3 \end{pmatrix}\) と \(\mathbf{v2} = \begin{pmatrix} 4 \\ 5 \\ 6 \end{pmatrix}\) の内積を計算し、結果を表示します。出力は次のようになります。

ふゅか
内積は32ね!
シンボリックベクトルの内積
SymPyを使用してシンボリックなベクトルの内積を計算することもできます。以下にその例を示します。
# シンボリック変数の定義
x, y, z, a, b, c = sp.symbols('x y z a b c')
# シンボリックベクトルの定義
v1 = sp.Matrix([x, y, z])
v2 = sp.Matrix([a, b, c])
# 内積の計算
dot_product = v1.dot(v2)
print("内積:", dot_product)
このコードは、ベクトル \(\mathbf{v1} = \begin{pmatrix} x \\ y \\ z \end{pmatrix}\) と \(\mathbf{v2} = \begin{pmatrix} a \\ b \\ c \end{pmatrix}\) の内積を計算し、結果を表示します。出力は次のようになります。

ふゅか
内積は \(x a + y b + z c\) になるわね!
内積の応用
内積は物理学や工学のさまざまな分野で使用されます。例えば、力と変位の内積を計算して仕事を求めることができます。
# シンボリック変数の定義
F1, F2, F3, d1, d2, d3 = sp.symbols('F1 F2 F3 d1 d2 d3')
# 力と変位ベクトルの定義
force = sp.Matrix([F1, F2, F3])
displacement = sp.Matrix([d1, d2, d3])
# 仕事の計算(内積)
work = force.dot(displacement)
print("仕事:", work)
このコードは、力 \(\mathbf{force} = \begin{pmatrix} F1 \\ F2 \\ F3 \end{pmatrix}\) と変位 \(\mathbf{displacement} = \begin{pmatrix} d1 \\ d2 \\ d3 \end{pmatrix}\) の内積を計算し、仕事を求めます。出力は次のようになります。

関連記事
【SymPy・Python】テイラー展開の計算方法のseries()について
python
SymPy
SymPyでベクトルの外積を計算する方法について
python
SymPy
【SymPy・Python】マクローリン展開(Maclaurin expansion)を計算して検算する!
python
SymPy
PythonとSymPyで連立方程式を簡単に解く方法
python
SymPy
SymPyで行列積を計算する方法!Pythonを使って答えのない計算の検算などに利用しよう
python
SymPy
Jupyter Labで数式を表示する方法!マークダウン以外の出力方法を解説
python
SymPy