更新:2024/07/19

Pythonでベクトルの内積を計算する!SymPyを利用したベクトルの内積

はるか
はるか
Pythonでベクトルの内積、どう思う?
ふゅか
ふゅか
SymPyを利用して計算してみよう!

1. 内積とは

内積(またはドット積)とは、ベクトルの積の一種であり、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 \]

1.1. SymPyとは

はるか
はるか
SymPyはPythonのライブラリ。シンボリック計算ができる。

SymPyを使用してベクトルの内積(ドットプロダクト)を計算することもできます。内積は、2つのベクトルのスカラー積であり、基本的な計算の一つです。以下に、次の環境を利用してSymPyを使用して内積を計算する基本的な方法を示します。
  • SymPy 1.13.0
  • Python 3.12.4

2. SymPyを利用した内積の計算

2.1. SymPyのimport

はるか
はるか
まず、SymPyをインポートする。

これ以降のプログラムはsympyをimportしている前提で進めます。

import sympy as sp

2.2. 内積の基本的な使用例

まず、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ね!

2.3. シンボリックベクトルの内積

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\) になるわね!

2.4. 内積の応用

内積は物理学や工学のさまざまな分野で使用されます。例えば、力と変位の内積を計算して仕事を求めることができます。

# シンボリック変数の定義
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}\) の内積を計算し、仕事を求めます。出力は次のようになります。

PR