2014年12月1日月曜日

wxMaximaで2次元球面の計量テンソルを計算する

2次元球面のパラメータ付け

二次元球面S2 = { (x,y,z) | x2+y2+z2=r2 } (ただしrは定数)におけるパラメータ付けを
  • x = r sinθ cosφ
  • y = r sinθ sinφ
  • x = r cosθ
とする。これはwxMaximaでは

(%i1) x(\theta,\phi):=r*sin(\theta)*cos(\phi)$
(%i2) y(\theta,\phi):=r*sin(\theta)*sin(\phi)$
(%i3) z(\theta,\phi):=r*cos(\theta)$

とx,y,zを定義できる。


自然基底の作成

x,y,zをθで微分した結果をx1,y1,z1とすると

(%i4) define(x1(\theta,\phi),diff(x(\theta,\phi),\theta))$
(%i5) define(y1(\theta,\phi),diff(y(\theta,\phi),\theta))$
(%i6) define(z1(\theta,\phi),diff(z(\theta,\phi),\theta))$

同様にx,y,zをφで微分した結果x2,y2,z2は

(%i7) define(x2(\theta,\phi),diff(x(\theta,\phi),\phi))$
(%i8) define(y2(\theta,\phi),diff(y(\theta,\phi),\phi))$
(%i9) define(z2(\theta,\phi),diff(z(\theta,\phi),\phi))$

として定義する。
これらをベクトルとしてまとめることで、自然基底e1,e2を次のように定義する。

(%i10) e1(\theta,\phi):=[x1(\theta,\phi),y1(\theta,\phi),z1(\theta,\phi)]$
(%i11) e2(\theta,\phi):=[x2(\theta,\phi),y2(\theta,\phi),z2(\theta,\phi)]$


計量テンソルの計算

e1とe2をそれぞれ内積をとって、trigsimpで三角関数の式を簡単化する。

(%i12) E(\theta,\phi):=trigsimp(e1(\theta,\phi).e1(\theta,\phi))$
(%i13) F(\theta,\phi):=trigsimp(e1(\theta,\phi).e2(\theta,\phi))$
(%i14) G(\theta,\phi):=trigsimp(e2(\theta,\phi).e2(\theta,\phi))$

計量テンソルの計算ができた。ためしに、

(%i15) E(\theta,\phi);

などとすれば、Eの式を確認できる。


バッチファイルで一気に実行

次のような上で入力した式を記したwxMaximaのバッチファイルを用意する。ファイル名は2sphere.mac。

x(\theta,\phi):=r*sin(\theta)*cos(\phi)$
y(\theta,\phi):=r*sin(\theta)*sin(\phi)$
z(\theta,\phi):=r*cos(\theta)$
define(x1(\theta,\phi),diff(x(\theta,\phi),\theta))$
define(y1(\theta,\phi),diff(y(\theta,\phi),\theta))$
define(z1(\theta,\phi),diff(z(\theta,\phi),\theta))$
define(x2(\theta,\phi),diff(x(\theta,\phi),\phi))$
define(y2(\theta,\phi),diff(y(\theta,\phi),\phi))$
define(z2(\theta,\phi),diff(z(\theta,\phi),\phi))$
e1(\theta,\phi):=[x1(\theta,\phi),y1(\theta,\phi),z1(\theta,\phi)]$
e2(\theta,\phi):=[x2(\theta,\phi),y2(\theta,\phi),z2(\theta,\phi)]$
E(\theta,\phi):=trigsimp(e1(\theta,\phi).e1(\theta,\phi))$
F(\theta,\phi):=trigsimp(e1(\theta,\phi).e2(\theta,\phi))$
G(\theta,\phi):=trigsimp(e2(\theta,\phi).e2(\theta,\phi))$

「ファイル(F)」 > 「バッチファイル(B)」から、用意したバッチファイル(2sphere.mac)を選ぶ。

一気に実行されるので、その後参照したい式を入力する。下のスクリーンショットは%i16から%i18が手で入力した式。


次回はwxMaximaでガウス曲率の計算。