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



1. 内積とは
\[ \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を使用してベクトルの内積(ドットプロダクト)を計算することもできます。内積は、2つのベクトルのスカラー積であり、基本的な計算の一つです。以下に、次の環境を利用してSymPyを使用して内積を計算する基本的な方法を示します。
- SymPy 1.13.0
- Python 3.12.4
2. SymPyを利用した内積の計算
2.1. SymPyのimport

これ以降のプログラムは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}\) の内積を計算し、結果を表示します。出力は次のようになります。

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}\) の内積を計算し、結果を表示します。出力は次のようになります。

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}\) の内積を計算し、仕事を求めます。出力は次のようになります。