必要なモジュールの import
In [1]:
from sympy.abc import *
from sympy import *
init_printing()
SymPy におけるベクトルの表記
Matrix()
を使ってベクトルを表記します。
In [2]:
# ベクトルの成分
var('a1:4, b1:4, c1:4');
In [3]:
a = Matrix([a1, a2, a3])
b = Matrix([b1, b2, b3])
c = Matrix([c1, c2, c3])
ベクトルの演算
足算,引き算
ベクトルの足算引き算をしてみると,成分同士の足算引き算になっていることがわかります。
In [4]:
a + b
Out[4]:
In [5]:
a - b
Out[5]:
ベクトルの定数倍
ベクトルの定数倍は,各成分をそれぞれ定数倍したものになっています。
In [6]:
C * a
Out[6]:
ベクトルの内積
ベクトルの内積は a.dot(b)
です。
In [7]:
a.dot(b)
Out[7]:
ベクトルの大きさ
ベクトル
ベクトルの大きさを返す関数 norm()
を以下のように定義します。
In [8]:
def norm(v):
return sqrt(v.dot(v))
今定義した norm()
を使って,ベクトル
In [9]:
norm(a)
Out[9]:
ベクトルの外積
ベクトルの外積は a.cross(b)
です。
In [10]:
a.cross(b)
Out[10]:
外積は「反交換」
In [11]:
a.cross(b) + b.cross(a)
Out[11]:
ベクトルの三重積
スカラー三重積
3つのベクトル
In [12]:
a.dot(b.cross(c)) - b.dot(c.cross(a))
# カッコをはずして展開する
expand(_)
Out[12]:
同様にして,
In [13]:
b.dot(c.cross(a)) - c.dot(a.cross(b))
Out[13]:
In [14]:
expand(_)
Out[14]:
ベクトル三重積
3つのベクトル
一挙に証明するには,
In [15]:
a.cross(b.cross(c)) - (a.dot(c) * b - a.dot(b) * c)
Out[15]:
In [16]:
expand(_)
Out[16]: