Maxima におけるベクトルの表記
Maxima では,リスト([
と ]
の間に成分をカンマで区切って並べたもの)で表すことができます。(matrix()
を使った表し方もありますが,ここでは省略。)
Maxima のリストでは,$x$ 成分,$y$ 成分… のように指定するよりも,1番目の成分,2番目の成分… のように指定したほうが便利です。
[a1, a2, a3]
のように書くと添字として表示してくれますし。
a: [a1, a2, a3];
b: [b1, b2, b3];
c: [c1, c2, c3];
ベクトルの演算
足算,引き算
ベクトルの足算引き算をしてみると,成分同士の足算引き算になっていることがわかります。
a + b;
a - b;
ベクトルの定数倍
ベクトルの定数倍は,各成分をそれぞれ定数倍したものになっています。
C * a;
ベクトルの内積
Maxima では,ベクトルの内積は .
(ドット,ピリオド)です。
a . b;
ベクトルの大きさ
ベクトル $\boldsymbol{a}$ の大きさ $|\boldsymbol{a}|$ は自分自身との内積の平方根として定義されます。
$$|\boldsymbol{a}| \equiv \sqrt{\boldsymbol{a}\cdot\boldsymbol{a}}$$
ベクトルの大きさを返す関数 norm()
を以下のように定義します。
norm(v):= sqrt(v . v);
今定義した norm()
を使って,ベクトル $\boldsymbol{a}$ の大きさ $|\boldsymbol{a}|$ を計算してみます。
norm(a);
ベクトルの外積
ベクトルの外積を計算する関数 cross()
を以下のように,自分で定義してみます。
cross(u, v):=
[u[2]*v[3] - u[3]*v[2],
u[3]*v[1] - u[1]*v[3],
u[1]*v[2] - u[2]*v[1]];
$\boldsymbol{c} = \boldsymbol{a}\times \boldsymbol{b}$ の計算。
c: cross(a, b);
$\boldsymbol{c}$ の成分ごとに表示させます。
'c[1] = c[1];
'c[2] = c[2];
'c[3] = c[3];
外積は「反交換」
$\boldsymbol{a}\times\boldsymbol{b} {\color{red}{\neq}} \boldsymbol{b}\times\boldsymbol{a}$ であること,具体的には以下のように「反交換」であることを確認します。
$$\boldsymbol{a}\times\boldsymbol{b} = – \boldsymbol{b}\times\boldsymbol{a}$$
$\boldsymbol{a}\times\boldsymbol{b} + \boldsymbol{b}\times\boldsymbol{a} = \boldsymbol{0}$ となることを示せばいいです。
cross(a, b) + cross(b, a);
ベクトルの三重積
スカラー三重積
3つのベクトル $\boldsymbol{a}, \boldsymbol{b}, \boldsymbol{c}$ によるスカラー三重積は $\boldsymbol{a} \cdot (\boldsymbol{b}\times\boldsymbol{c})$ であり,これは結局はスカラーとなります。スカラー三重積には,以下のような公式があります。
$$\boldsymbol{a} \cdot (\boldsymbol{b}\times\boldsymbol{c})
= \boldsymbol{b} \cdot (\boldsymbol{c}\times\boldsymbol{a})
= \boldsymbol{c} \cdot (\boldsymbol{a}\times\boldsymbol{b}) $$
$\boldsymbol{a} \cdot (\boldsymbol{b}\times\boldsymbol{c})
= \boldsymbol{b} \cdot (\boldsymbol{c}\times\boldsymbol{a})$ つまり,
$\boldsymbol{a} \cdot (\boldsymbol{b}\times\boldsymbol{c}) \,-\, \boldsymbol{b} \cdot (\boldsymbol{c}\times\boldsymbol{a}) = 0$ を示してみます。
Maxima の簡略表記で,1行で(直前の結果を)ratsimp
による簡単化まで行います。
a . cross(b, c) - b . cross(c, a), ratsimp;
$\boldsymbol{b} \cdot (\boldsymbol{c}\times\boldsymbol{a}) \,-\, \boldsymbol{c} \cdot (\boldsymbol{a}\times\boldsymbol{b}) = 0$ を示してみます。
b . cross(c, a) - c . cross(a, b), ratsimp;
ベクトル三重積
3つのベクトル $\boldsymbol{a}, \boldsymbol{b}, \boldsymbol{c}$ によるベクトル三重積は $\boldsymbol{a} \times (\boldsymbol{b}\times\boldsymbol{c})$ であり,これは結局はベクトルをつくります。ベクトル三重積には,以下のような公式があります。
$$\boldsymbol{a} \times (\boldsymbol{b}\times\boldsymbol{c})
= (\boldsymbol{a}\cdot\boldsymbol{c})\,\boldsymbol{b} –
(\boldsymbol{a}\cdot\boldsymbol{b})\,\boldsymbol{c} $$
一挙に証明するには,
cross(a, cross(b, c)) - ((a.c) * b - (a.b) * c), ratsimp;