| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| 26.1 Introduction to ctensor | ||
| 26.2 Functions and Variables for ctensor |
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ctensorは成分テンソル操作パッケージです。
ctensorパッケージを使うには load(ctensor)とタイプしてください。
ctensorと対話的セッションを始めるには csetup()とタイプしてください。
最初に多様体の次元を指定するよう尋ねられます。
もし次元が2, 3, 4のいずれかなら、
座標のリストがそれぞれ [x,y], [x,y,z], [x,y,z,t]に設定されます。
これらの名前は、座標の新しいリストを(以下で記述する)変数
ct_coordsに割り当てることで変えることができ、ユーザーはこれについて尋ねられます。
座標名が他のオブジェクト定義と衝突することを避けるように注意を払わなければいけません。
次に、ユーザーは計量を直接、または順序位置
(ordinal position)を指定してファイルから入力します。
計量は行列 lgに保存されます。
最後に、計量の逆元が計算され、行列 ugに保存されます。
すべての計算を冪級数で実行するオプションがあります。
サンプルプロトコルは、
例として、 (Schwarzschild解に至る) Einsteinの真空方程式を導出する問題に適用される
静的な球対称計量(標準座標)に関して、以下のように開始されます。
ctensorの関数の多くは例のように標準計量に対して表示されます。
(%i1) load(ctensor);
(%o1) /share/tensor/ctensor.mac
(%i2) csetup();
Enter the dimension of the coordinate system:
4;
Do you wish to change the coordinate names?
n;
Do you want to
1. Enter a new metric?
2. Enter a metric from a file?
3. Approximate a metric with a Taylor series?
1;
Is the matrix 1. Diagonal 2. Symmetric 3. Antisymmetric 4. General
Answer 1, 2, 3 or 4
1;
Row 1 Column 1:
a;
Row 2 Column 2:
x^2;
Row 3 Column 3:
x^2*sin(y)^2;
Row 4 Column 4:
-d;
Matrix entered.
Enter functional dependencies with the DEPENDS function or 'N' if none
depends([a,d],x);
Do you wish to see the metric?
y;
[ a 0 0 0 ]
[ ]
[ 2 ]
[ 0 x 0 0 ]
[ ]
[ 2 2 ]
[ 0 0 x sin (y) 0 ]
[ ]
[ 0 0 0 - d ]
(%o2) done
(%i3) christof(mcs);
a
x
(%t3) mcs = ---
1, 1, 1 2 a
1
(%t4) mcs = -
1, 2, 2 x
1
(%t5) mcs = -
1, 3, 3 x
d
x
(%t6) mcs = ---
1, 4, 4 2 d
x
(%t7) mcs = - -
2, 2, 1 a
cos(y)
(%t8) mcs = ------
2, 3, 3 sin(y)
2
x sin (y)
(%t9) mcs = - ---------
3, 3, 1 a
(%t10) mcs = - cos(y) sin(y)
3, 3, 2
d
x
(%t11) mcs = ---
4, 4, 1 2 a
(%o11) done
|
Categories: Tensors ·Share packages ·Package ctensor
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
パッケージを初期化し、ユーザーに計量を対話的に入力可能にする
ctensor(成分テンソル)パッケージの関数。
より詳細は ctensorを参照してください。
Categories: Package ctensor
計量の逆元を計算し、将来の計算のためパッケージを設定する
ctensor(成分テンソル)パッケージの関数。
cframe_flagが falseなら、
関数は逆計量 ugを(ユーザー定義の)行列 lgから計算します。
計量の行列式も計算され、変数 gdetに保存されます。
更に、パッケージは計量が対角的か調べ、結果に従って diagmetricの値を設定します。
オプション引数 disが渡されて、それが falseでないなら、
ユーザーは計量の逆元を見るように促されます。
cframe_flagが trueなら、
関数は fri (逆標構行列)と lfg(標構計量)の値が定義されていると考えます。
これらから標構行列 frと逆標構計量 ufgが計算されます。
Categories: Package ctensor
あらかじめ定義された座標系と計量を設定します。 引数 coordinate_systemは以下のシンボルのいずれかです:
SYMBOL Dim Coordinates Description/comments ------------------------------------------------------------------ cartesian2d 2 [x,y] Cartesian 2D 座標系 polar 2 [r,phi] 極座標系 elliptic 2 [u,v] 楕円座標系 confocalelliptic 2 [u,v] 共焦点楕円座標 bipolar 2 [u,v] 二極座標系 parabolic 2 [u,v] 放物座標系 cartesian3d 3 [x,y,z] Cartesian 3D 座標系 polarcylindrical 3 [r,theta,z] 円筒z極2D ellipticcylindrical 3 [u,v,z] 円筒z楕円2D confocalellipsoidal 3 [u,v,w] 共焦点楕円 bipolarcylindrical 3 [u,v,z] 円筒z二極2D paraboliccylindrical 3 [u,v,z] 円筒z放物2D paraboloidal 3 [u,v,phi] Paraboloidal coords. conical 3 [u,v,w] 円錐座標 toroidal 3 [u,v,phi] 環状座標 spherical 3 [r,theta,phi] 球座標系 oblatespheroidal 3 [u,v,phi] 偏球座標系 oblatespheroidalsqrt 3 [u,v,phi] prolatespheroidal 3 [u,v,phi] 長形球座標系 prolatespheroidalsqrt 3 [u,v,phi] ellipsoidal 3 [r,theta,phi] 楕円体座標系 cartesian4d 4 [x,y,z,t] Cartesian 4D 座標系 spherical4d 4 [r,theta,eta,phi] 球 4D 座標系 exteriorschwarzschild 4 [t,r,theta,phi] Schwarzschild 計量 interiorschwarzschild 4 [t,z,u,v] 内部 Schwarzschild 計量 kerr_newman 4 [t,r,theta,phi] 荷電軸対称計量 |
coordinate_systemは
座標変数を含むリストが続く変換関数のリストでもあり得ます。
例えば、以下のように球計量を指定できます:
(%i1) load(ctensor);
(%o1) /share/tensor/ctensor.mac
(%i2) ct_coordsys([r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),
r*sin(theta),[r,theta,phi]]);
(%o2) done
(%i3) lg:trigsimp(lg);
[ 1 0 0 ]
[ ]
[ 2 ]
(%o3) [ 0 r 0 ]
[ ]
[ 2 2 ]
[ 0 0 r cos (theta) ]
(%i4) ct_coords;
(%o4) [r, theta, phi]
(%i5) dim;
(%o5) 3
|
cframe_flagが trueの時、変換関数も使うことができます:
(%i1) load(ctensor);
(%o1) /share/tensor/ctensor.mac
(%i2) cframe_flag:true;
(%o2) true
(%i3) ct_coordsys([r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),
r*sin(theta),[r,theta,phi]]);
(%o3) done
(%i4) fri;
(%o4)
[cos(phi)cos(theta) -cos(phi) r sin(theta) -sin(phi) r cos(theta)]
[ ]
[sin(phi)cos(theta) -sin(phi) r sin(theta) cos(phi) r cos(theta)]
[ ]
[ sin(theta) r cos(theta) 0 ]
(%i5) cmetric();
(%o5) false
(%i6) lg:trigsimp(lg);
[ 1 0 0 ]
[ ]
[ 2 ]
(%o6) [ 0 r 0 ]
[ ]
[ 2 2 ]
[ 0 0 r cos (theta) ]
|
オプションの引数 extra_argは以下のいずれかです:
cylindricalは ct_coordsysに追加の極座標を結びつけるよう命じます。
minkowskiは ct_coordsysに
負の計量符号を持つ追加の座標を結びつけるよう命じます。
allは ct_coordsysに
計量を設定した後、
cmetricと christof(false)をコールするよう命じます。
もしグローバル変数 verboseが trueに設定されているなら、
ct_coordsysは、
cframe_flagの値に依存して
dim, ct_coordsと、 lgか lfgのいずれかと
friの値を表示します。
Categories: Package ctensor
ctensorパッケージを初期化します。
init_ctensor関数はctensorパッケージを再初期化します。
それはctensorが使う配列、行列すべてを削除し、フラグすべてをリセットし、
dimを4にリセットし、標構計量を Lorentz標構にリセットします。
Categories: Package ctensor
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ctensorパッケージの
主な目的は曲がった空間(時間)のテンソル、
最も顕著には一般相対性理論で使われるテンソルを計算することです。
計量基底が使われる時、
ctensorは以下のテンソルを計算できます:
lg -- ug
\ \
lcs -- mcs -- ric -- uric
\ \ \
\ tracer - ein -- lein
\
riem -- lriem -- weyl
\
uriem
|
ctensorは動標構を使って機能することもできます。
cframe_flagが trueに設定されている時、
以下のテンソルを計算できます:
lfg -- ufg
\
fri -- fr -- lcs -- mcs -- lriem -- ric -- uric
\ | \ \ \
lg -- ug | weyl tracer - ein -- lein
|\
| riem
|
\uriem
|
ctensor (成分テンソル)パッケージの関数。
各種Christoffel記号を計算します。
引数 disはどの結果をすぐに表示するか決めます。
第一種と第二種Christoffel記号は
それぞれ配列 lcs[i,j,k]と mcs[i,j,k]に格納され、
最初の 2つの添字に対して対称と定義されます。
もし christofの引数が lcsか mcsなら、
それぞれ lcs[i,j,k]か mcs[i,j,k]の固有の非零値が表示されます。
もし引数が allなら、
lcs[i,j,k]と mcs[i,j,k]の固有の非零値が表示されます。
もし引数が falseなら要素の表示はされません。
配列要素 mcs[i,j,k]は最後の添字が反変であるような方法で定義されます。
Categories: Package ctensor
ctensor (成分テンソル)パッケージの関数。
ricciは Ricciテンソルの共変(対称)成分 ric[i,j]を計算します。
引数 disが trueなら非零成分が表示されます。
Categories: Package ctensor
この関数は最初にRicciテンソルの共変成分 ric[i,j]を計算します。
そして混合 Ricciテンソルが反変計量テンソルを使って計算されます。
もし引数 disの値が trueなら
これらの(添字 iは共変で、添字 jは反変の)混合成分 uric[i,j]
は直接表示されます。
そうでないなら、
ricci(false)は結果を表示することなく、単に配列
uric[i,j]の要素を計算します。
Categories: Package ctensor
与えられた計量を持つ Riemannian多様体の (Ricciテンソルを縮約することで得られる)スカラ曲率を返します。
Categories: Package ctensor
ctensor (成分テンソル)パッケージの関数。
einsteinは、
(関数 christofと ricciを使って)
Christoffel記号と Ricciテンソルを得られた後、
混合 Einsteinテンソルを計算します。
もし引数 disが trueなら、
混合 Einsteinテンソル ein[i,j]の非零値が表示されます。
ここで jは反変添字です。
変数 rateinsteinは
これらの成分上の有理整理をもたらします。
もし ratfacが trueなら、
成分は因数分解もされます。
Categories: Package ctensor
共変 Einsteinテンソル。
leinsteinは
配列 leinに共変 Einsteinテンソルの値を格納します。
共変 Einsteinテンソルは、
計量テンソルを掛けることで
混合 Einsteinテンソル einから計算されます。
もし引数 disが trueなら、
共変 Einsteinテンソルの非零値が表示されます。
Categories: Package ctensor
ctensor (成分テンソル)パッケージの関数。
riemannは
与えられた計量と対応するChristoffel記号から
Riemann曲率テンソルを計算します。
以下の添字慣例が使われます:
l _l _l _l _m _l _m
R[i,j,k,l] = R = | - | + | | - | |
ijk ij,k ik,j mk ij mj ik
|
この表記法は
itensorパッケージとその icurvature関数で使われる表記法と
一致しています。
もしオプション引数 disが trueなら、
固有の非零成分 riem[i,j,k,l]が表示されます。
Einsteinテンソルと同様に
ユーザーが設定する様々なスイッチが
Riemannテンソルの成分の整理を制御します。
もし ratriemannが trueなら、
有理整理がされます。
もし ratfacが trueなら、
成分のそれぞれは因数分解もされます。
もし変数 cframe_flagが falseなら、
Riemannテンソルは
Christoffel記号から直接計算されます。
もし cframe_flagが trueなら、
共変 Riemannテンソルは
標構場係数から最初に計算されます。
Categories: Package ctensor
共変 Riemannテンソル (lriem[]).
配列 lriemとして
共変 Riemannテンソルを計算します。
引数 disが trueなら固有の非零値が表示されます。
変数 cframe_flagが trueなら、
共変 Riemannテンソルを標構場係数から直接計算します。
そうでないなら、 (3,1) Riemannテンソルを最初に計算します。
添字順序の情報は riemannを参照してください。
Categories: Package ctensor
配列要素 uriem[i,j,k,l]として Riemann曲率テンソルの反変成分を計算します。
disが trueならこれらを表示します。
Categories: Package ctensor
テンソル
lriem[i,j,k,l]*uriem[i,j,k,l]. |
を縮約することで得られる Kretschmann不変量 (kinvariant)を形成します。
このオブジェクトは非常に大きくなるかもしれないので、自動で整理はしません。
Categories: Package ctensor
Weylの共形テンソルを計算します。
引数 disが trueなら、
非零成分 weyl[i,j,k,l]をユーザーに示します。
そうでないなら、これらの成分を単に計算し、格納します。
スイッチ ratweylが trueに設定されているなら、
成分を有理整理します;
ratfacが trueなら結果を因数分解もします。
Categories: Package ctensor
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ctensorパッケージは
結果が Taylor級数近似であると仮定することで、結果を切り詰める機能を持ちます。
この振る舞いは ctayswitch変数で制御されます;
trueに設定されている時、 結果を整理する際に
ctensorは内部的に関数 ctaylorを利用します。
以下の ctensor関数が ctaylor関数を呼び出します:
Function Comments
---------------------------------
christof() For mcs only
ricci()
uricci()
einstein()
riemann()
weyl()
checkdiv()
|
ctaylor関数は、
taylorを使ってその後ratdisrepをコールすることで
引数をTaylor級数に変換することで、
引数を切り詰めます。
これは展開変数 ctayvarに関してより高い項を落とす合わせ効果を持ちます。
落とす項の次数はctaypovで定義されます;
級数展開が実行される点は ctayptで指定されます。
例として、 Minkowski計量の置換である簡単な計量を考えます。 追加の制約なしでは、対角計量でさえはるかに複雑すぎる Einsteinテンソルの式を生成します:
(%i1) load(ctensor);
(%o1) /share/tensor/ctensor.mac
(%i2) ratfac:true;
(%o2) true
(%i3) derivabbrev:true;
(%o3) true
(%i4) ct_coords:[t,r,theta,phi];
(%o4) [t, r, theta, phi]
(%i5) lg:matrix([-1,0,0,0],[0,1,0,0],[0,0,r^2,0],
[0,0,0,r^2*sin(theta)^2]);
[ - 1 0 0 0 ]
[ ]
[ 0 1 0 0 ]
[ ]
(%o5) [ 2 ]
[ 0 0 r 0 ]
[ ]
[ 2 2 ]
[ 0 0 0 r sin (theta) ]
(%i6) h:matrix([h11,0,0,0],[0,h22,0,0],[0,0,h33,0],[0,0,0,h44]);
[ h11 0 0 0 ]
[ ]
[ 0 h22 0 0 ]
(%o6) [ ]
[ 0 0 h33 0 ]
[ ]
[ 0 0 0 h44 ]
(%i7) depends(l,r);
(%o7) [l(r)]
(%i8) lg:lg+l*h;
[ h11 l - 1 0 0 0 ]
[ ]
[ 0 h22 l + 1 0 0 ]
[ ]
(%o8) [ 2 ]
[ 0 0 r + h33 l 0 ]
[ ]
[ 2 2 ]
[ 0 0 0 r sin (theta) + h44 l ]
(%i9) cmetric(false);
(%o9) done
(%i10) einstein(false);
(%o10) done
(%i11) ntermst(ein);
[[1, 1], 62]
[[1, 2], 0]
[[1, 3], 0]
[[1, 4], 0]
[[2, 1], 0]
[[2, 2], 24]
[[2, 3], 0]
[[2, 4], 0]
[[3, 1], 0]
[[3, 2], 0]
[[3, 3], 46]
[[3, 4], 0]
[[4, 1], 0]
[[4, 2], 0]
[[4, 3], 0]
[[4, 4], 46]
(%o12) done
|
しかし、もしこの例を変数 lに対して線形という近似として
再計算するなら、もっと簡潔な式を得ます:
(%i14) ctayswitch:true;
(%o14) true
(%i15) ctayvar:l;
(%o15) l
(%i16) ctaypov:1;
(%o16) 1
(%i17) ctaypt:0;
(%o17) 0
(%i18) christof(false);
(%o18) done
(%i19) ricci(false);
(%o19) done
(%i20) einstein(false);
(%o20) done
(%i21) ntermst(ein);
[[1, 1], 6]
[[1, 2], 0]
[[1, 3], 0]
[[1, 4], 0]
[[2, 1], 0]
[[2, 2], 13]
[[2, 3], 2]
[[2, 4], 0]
[[3, 1], 0]
[[3, 2], 2]
[[3, 3], 9]
[[3, 4], 0]
[[4, 1], 0]
[[4, 2], 0]
[[4, 3], 0]
[[4, 4], 9]
(%o21) done
(%i22) ratsimp(ein[1,1]);
2 2 4 2 2
(%o22) - (((h11 h22 - h11 ) (l ) r - 2 h33 l r ) sin (theta)
r r r
2 2 4 2
- 2 h44 l r - h33 h44 (l ) )/(4 r sin (theta))
r r r
|
例えば、重力源から遠く、弱い場極限で取り組む時に この機能が役に立つかもしれません。
Categories: Package ctensor
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
変数 cframe_flagを trueに設定している時、
ctensorパッケージは動標構 (moving frame)を使って計算を実行します。
標構(frame)ブラケット (fb[])。
以下の定義に従って標構ブラケットを計算します:
c c c d e ifb = ( ifri - ifri ) ifr ifr ab d,e e,d a b |
Categories: Package ctensor
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ctensorの(2004年11月時点で)新しい特長は 4次元時空計量の
Petrov分類を計算する能力です。
この機能のデモンストレーションは、
ファイル share/tensor/petrov.demを参照してください。
Newman-Penroseヌルテトラド(null tetrad) (np)と上付き添字対応物
(npi)を計算します。
例えば petrovを参照してください。
ヌルテトラドは計量符号 (-,+,+,+)を持つ4次元直交標構計量が使われいるという仮定の上で構成されます。 以下のように、ヌルテトラドの成分は逆標構行列に関係します:
np = (fri + fri ) / sqrt(2) 1 1 2 np = (fri - fri ) / sqrt(2) 2 1 2 np = (fri + %i fri ) / sqrt(2) 3 3 4 np = (fri - %i fri ) / sqrt(2) 4 3 4 |
Categories: Package ctensor
5つの Newman-Penrose係数 psi[0]...psi[4]を計算します。
disが trueに設定されているなら係数を表示します。
例は petrovを参照してください。
これらの係数は座標基底に関して、Weylテンソルから計算されます。
もし標構基底が使われるなら、最初に Weylテンソルを座標基底に変換します。
これは計算量の多い手続きになるかもしれません。
この理由で、いくつかの場合、 Weylテンソルを計算する前に
まず座標基底を使うのがより都合がいいかも知れません。
しかし、
Newman-Penroseヌルテトラドを構成することは標構基底を要求することに注意してください。
それ故に、重要な一連の計算は標構基底で始めることができます。
標構基底は、後で (cmetricが自動的に計算する) lgと
ugを計算するのに使われます。
例はpetrovを参照してください。
この時点で、 Christoffel記号を計算し始める前に
cframe_flagを falseに設定することで
座標基底に戻ることができます。
後の段階で標構基底に変えると、
標構基底で計算したいくつか、座標基底でのいくつかと
2つを識別する方法がないまま、テンソルの混ざった状態で終わるかもしれないので、
矛盾する結果をもたらすかもしれません。
Categories: Package ctensor
psi[0]...psi[4]で特徴付けられる計量の Petrov分類を計算します。
例えば、以下は Kerr計量の Petrov分類を得る方法を例示します:
(%i1) load(ctensor);
(%o1) /share/tensor/ctensor.mac
(%i2) (cframe_flag:true,gcd:spmod,ctrgsimp:true,ratfac:true);
(%o2) true
(%i3) ct_coordsys(exteriorschwarzschild,all);
(%o3) done
(%i4) ug:invert(lg)$
(%i5) weyl(false);
(%o5) done
(%i6) nptetrad(true);
(%t6) np =
[ sqrt(r - 2 m) sqrt(r) ]
[--------------- --------------------- 0 0 ]
[sqrt(2) sqrt(r) sqrt(2) sqrt(r - 2 m) ]
[ ]
[ sqrt(r - 2 m) sqrt(r) ]
[--------------- - --------------------- 0 0 ]
[sqrt(2) sqrt(r) sqrt(2) sqrt(r - 2 m) ]
[ ]
[ r %i r sin(theta) ]
[ 0 0 ------- --------------- ]
[ sqrt(2) sqrt(2) ]
[ ]
[ r %i r sin(theta)]
[ 0 0 ------- - ---------------]
[ sqrt(2) sqrt(2) ]
sqrt(r) sqrt(r - 2 m)
(%t7) npi = matrix([- ---------------------,---------------, 0, 0],
sqrt(2) sqrt(r - 2 m) sqrt(2) sqrt(r)
sqrt(r) sqrt(r - 2 m)
[- ---------------------, - ---------------, 0, 0],
sqrt(2) sqrt(r - 2 m) sqrt(2) sqrt(r)
1 %i
[0, 0, ---------, --------------------],
sqrt(2) r sqrt(2) r sin(theta)
1 %i
[0, 0, ---------, - --------------------])
sqrt(2) r sqrt(2) r sin(theta)
(%o7) done
(%i7) psi(true);
(%t8) psi = 0
0
(%t9) psi = 0
1
m
(%t10) psi = --
2 3
r
(%t11) psi = 0
3
(%t12) psi = 0
4
(%o12) done
(%i12) petrov();
(%o12) D
|
Petrov分類関数は以下の文献で発表されたアルゴリズムに基づいています。
"Classifying geometries in general relativity: III Classification in practice" by Pollney, Skea, and d’Inverno, Class. Quant. Grav. 17 2885-2902 (2000).
いくつかの簡単なテストケースを除いて、 2004年12月19日時点、実装はテストされていなく、エラーを含みそうです。
Categories: Package ctensor
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ctensorはねじれ係数と非計量性係数を計算し、接続係数内に含める能力を持ちます。
ユーザーが供給するテンソル trからねじれ係数を計算します。
trは階数 (2,1)テンソルでなければいけません。
trから、ねじれ係数 ktは以下の公式に従って計算されます:
m m m
- g tr - g tr - tr g
im kj jm ki ij km
kt = -------------------------------
ijk 2
k km
kt = g kt
ij ijm
|
混合添字テンソルだけを計算し、配列 ktに格納することに注意してください。
非計量性係数はユーザーが供給する非計量性ベクトル nmから計算します。
nmから非計量性係数 nmcは以下のように計算されます:
k k km
-nm D - D nm + g nm g
k i j i j m ij
nmc = ------------------------------
ij 2
|
ここで Dは Kroneckerのデルタを表します。
ctorsion_flagが trueに設定されている時、
ktの値が christofで計算された混合添字付き接続係数から引かれ、
mcsに格納されます。
同様に、もし cnonmet_flagが trueに設定されているなら、
nmcの値が混合添字付き接続係数から引かれます。
もし必要なら、 christofは、ktと nmを計算するために
関数 contortionと nonmetricityをコールします。
ねじれテンソル trから (2,1)コントーション (contortion)係数を計算します。
Categories: Package ctensor
非計量性ベクトル nmから (2,1)非計量性係数を計算します。
Categories: Package ctensor
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
任意の平方対称行列 M上で座標変換を実行する
ctensor (成分テンソル)パッケージの関数。
ユーザーは変換を定義する関数を入力しなければいけません。
(以前 transformと呼ばれていました。)
Categories: Package ctensor
n次元の平方配列 A要素に対応しただ1つに定まる微分方程式(式)のリストを返します。
現在、 nは 2か 3を指定できます
deindexはこれらのただ1つに定まる微分方程式に従う
Aの添字を含むグローバルリストです。
2次元配列である Einsteinテンソル (ein)に関して、
もし以下の例で計量に関して計算するなら、
finddeは以下の独立微分方程式を与えます:
(%i1) load(ctensor);
(%o1) /share/tensor/ctensor.mac
(%i2) derivabbrev:true;
(%o2) true
(%i3) dim:4;
(%o3) 4
(%i4) lg:matrix([a, 0, 0, 0], [ 0, x^2, 0, 0],
[0, 0, x^2*sin(y)^2, 0], [0,0,0,-d]);
[ a 0 0 0 ]
[ ]
[ 2 ]
[ 0 x 0 0 ]
(%o4) [ ]
[ 2 2 ]
[ 0 0 x sin (y) 0 ]
[ ]
[ 0 0 0 - d ]
(%i5) depends([a,d],x);
(%o5) [a(x), d(x)]
(%i6) ct_coords:[x,y,z,t];
(%o6) [x, y, z, t]
(%i7) cmetric();
(%o7) done
(%i8) einstein(false);
(%o8) done
(%i9) findde(ein,2);
2
(%o9) [d x - a d + d, 2 a d d x - a (d ) x - a d d x
x x x x x x
2 2
+ 2 a d d - 2 a d , a x + a - a]
x x x
(%i10) deindex;
(%o10) [[1, 1], [2, 2], [4, 4]]
|
Categories: Package ctensor
スカラ関数の
共変勾配を計算します。
contragradが以下で例示する例のように
ユーザーは対応するベクトル名を選べます。
Categories: Package ctensor
スカラ関数の反変勾配を計算します。 Schwarzschild計量に関する以下の例が例示するように ユーザーは対応するベクトル名を選べます:
(%i1) load(ctensor);
(%o1) /share/tensor/ctensor.mac
(%i2) derivabbrev:true;
(%o2) true
(%i3) ct_coordsys(exteriorschwarzschild,all);
(%o3) done
(%i4) depends(f,r);
(%o4) [f(r)]
(%i5) cograd(f,g1);
(%o5) done
(%i6) listarray(g1);
(%o6) [0, f , 0, 0]
r
(%i7) contragrad(f,g2);
(%o7) done
(%i8) listarray(g2);
f r - 2 f m
r r
(%o8) [0, -------------, 0, 0]
r
|
Categories: Package ctensor
いったん依存性が関数に宣言されれば、スカラ関数のテンソル d’Alembert演算子を計算します。 例えば:
(%i1) load(ctensor); (%o1) /share/tensor/ctensor.mac (%i2) derivabbrev:true; (%o2) true (%i3) ct_coordsys(exteriorschwarzschild,all); (%o3) done (%i4) depends(p,r); (%o4) [p(r)] (%i5) factor(dscalar(p)); 2
p r - 2 m p r + 2 p r - 2 m p
r r r r r r
(%o5) --------------------------------------
2
r
|
Categories: Package ctensor
ベクトル場(発散)の対応する n個の成分を印字することで
(最初の添字が共変でなければいけない)混合二階テンソルの共変発散を計算します。
ここで n = dimです。
もし関数の引数が gなら、
Einsteinテンソルの発散が形成され、零にならなければいけません。
加えて、発散(ベクトル)は配列名 divを与えられます。
Categories: Package ctensor
ctensor (成分テンソル)パッケージの関数。
cgeodesicは与えられた計量での運動の測地方程式を計算します。
それらは配列 geod[i]に格納されます。
もし引数 disが trueなら、
これらの方程式が表示されます。
Categories: Package ctensor
Brans- Dicke重力理論の真空場の方程式の共変成分を生成します。
スカラ場は引数 fで指定されます。
fは、例えば、'p(x)のように、
関数依存性を持つ(クォートされた)関数名でなければいけません。
二階共変場テンソルの成分は配列 bdで表されます。
Categories: Package ctensor
R^2の不変密度に関する混合 Euler- Lagrangeテンソル(場の方程式)を生成します。
場の方程式は inv1と名付けられた配列の成分です。
Categories: Package ctensor
*** NOT YET IMPLEMENTED ***
ric[i,j]*uriem[i,j]の不変密度に関する
混合 Euler- Lagrangeテンソル(場の方程式)を生成します。
場の方程式は inv2と名付けられた配列の成分です。
Categories: Package ctensor
*** NOT YET IMPLEMENTED ***
Rosenの二計量(bimetric)理論の場の方程式を生成します。
場の方程式は rosenと名付けられた配列の成分です。
Categories: Package ctensor
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
もし Mが対角行列か対角 (2D) 配列なら
trueを返します。
Categories: Package ctensor ·Predicate functions
もし Mが対称行列か対称 (2D) 配列なら
trueを返します。
Categories: Package ctensor ·Predicate functions
ユーザーに 二重に下付き添字されているテンソル(配列) fの「サイズ」のぱっと見を与えます。 二番目の要素が一番目の要素が指定する成分の NTERMSに対応する2つの要素のリストを印字します。 この方法で、非零式をすばやく見つけて整理を試みることが可能です。
Categories: Package ctensor
多次元配列で表されるように、テンソル tenの要素すべてを表示します。
他のタイプの変数はもちろん、階数 0と 1のテンソルが
ldisplayを使ったように表示されます。
階数 2のテンソルは 2次元行列として表示され、
より高い階数のテンソルは2次元行列のリストとして表示されます。
例えば、
Schwarzschild計量の Riemannテンソルは以下のように見ることができます:
(%i1) load(ctensor);
(%o1) /share/tensor/ctensor.mac
(%i2) ratfac:true;
(%o2) true
(%i3) ct_coordsys(exteriorschwarzschild,all);
(%o3) done
(%i4) riemann(false);
(%o4) done
(%i5) cdisplay(riem);
[ 0 0 0 0 ]
[ ]
[ 2 ]
[ 3 m (r - 2 m) m 2 m ]
[ 0 - ------------- + -- - ---- 0 0 ]
[ 4 3 4 ]
[ r r r ]
[ ]
riem = [ m (r - 2 m) ]
1, 1 [ 0 0 ----------- 0 ]
[ 4 ]
[ r ]
[ ]
[ m (r - 2 m) ]
[ 0 0 0 ----------- ]
[ 4 ]
[ r ]
[ 2 m (r - 2 m) ]
[ 0 ------------- 0 0 ]
[ 4 ]
[ r ]
riem = [ ]
1, 2 [ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ m (r - 2 m) ]
[ 0 0 - ----------- 0 ]
[ 4 ]
[ r ]
riem = [ ]
1, 3 [ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ m (r - 2 m) ]
[ 0 0 0 - ----------- ]
[ 4 ]
[ r ]
riem = [ ]
1, 4 [ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ ]
[ 2 m ]
[ - ------------ 0 0 0 ]
riem = [ 2 ]
2, 1 [ r (r - 2 m) ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ 2 m ]
[ ------------ 0 0 0 ]
[ 2 ]
[ r (r - 2 m) ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ m ]
2, 2 [ 0 0 - ------------ 0 ]
[ 2 ]
[ r (r - 2 m) ]
[ ]
[ m ]
[ 0 0 0 - ------------ ]
[ 2 ]
[ r (r - 2 m) ]
[ 0 0 0 0 ]
[ ]
[ m ]
[ 0 0 ------------ 0 ]
riem = [ 2 ]
2, 3 [ r (r - 2 m) ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ ]
[ m ]
[ 0 0 0 ------------ ]
riem = [ 2 ]
2, 4 [ r (r - 2 m) ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ m ]
3, 1 [ - 0 0 0 ]
[ r ]
[ ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ m ]
3, 2 [ 0 - 0 0 ]
[ r ]
[ ]
[ 0 0 0 0 ]
[ m ]
[ - - 0 0 0 ]
[ r ]
[ ]
[ m ]
[ 0 - - 0 0 ]
riem = [ r ]
3, 3 [ ]
[ 0 0 0 0 ]
[ ]
[ 2 m - r ]
[ 0 0 0 ------- + 1 ]
[ r ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ 2 m ]
3, 4 [ 0 0 0 - --- ]
[ r ]
[ ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ 0 0 0 0 ]
4, 1 [ ]
[ 2 ]
[ m sin (theta) ]
[ ------------- 0 0 0 ]
[ r ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ 0 0 0 0 ]
4, 2 [ ]
[ 2 ]
[ m sin (theta) ]
[ 0 ------------- 0 0 ]
[ r ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ 0 0 0 0 ]
4, 3 [ ]
[ 2 ]
[ 2 m sin (theta) ]
[ 0 0 - --------------- 0 ]
[ r ]
[ 2 ]
[ m sin (theta) ]
[ - ------------- 0 0 0 ]
[ r ]
[ ]
[ 2 ]
[ m sin (theta) ]
riem = [ 0 - ------------- 0 0 ]
4, 4 [ r ]
[ ]
[ 2 ]
[ 2 m sin (theta) ]
[ 0 0 --------------- 0 ]
[ r ]
[ ]
[ 0 0 0 0 ]
(%o5) done
|
Categories: Package ctensor
n番目の要素を削除した Lから成る新しいリストを返します。
Categories: Package ctensor
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ctensorデフォルト値: 4
ctensor (成分テンソル)パッケージのオプション。
dimはデフォルト 4の多様体の次元です。
コマンド dim: nは次元を任意の別の値 nに再設定します。
Categories: Package ctensor
デフォルト値: false
ctensor (成分テンソル)パッケージのオプション。
もし diagmetricが trueなら、
特殊なルーチンが計量の対角性を考慮して
(計量テンソルを明示的に含む)幾何的オブジェクトすべてを計算します。
もちろん、実行時間短縮になります。
注意: もし対角計量が指定されたら、
csetupは自動的にこのオプションを設定します。
Categories: Package ctensor
テンソルを計算する時、三角関数整理を使うようにします。
現在、 ctrgsimpは動標構を含む計算だけに影響します。
Categories: Package ctensor ·Simplification flags and variables
計算をホロノミック (holonomic)計量と対比して動標構に関係して実行するようにします。
標構は逆標構配列 friと標構計量 lfgで定義されます。
Cartesian標構を使う計算に関して、
lfgは適切な次元の単位行列でなければいけません;
Lorentz標構での計算に関して、 lfgは適切な符号を持たなければいけません。
Categories: Package ctensor
コントーションテンソルが接続係数の計算に含まれるようにします。
コントーションテンソル自体はユーザーが提供するテンソル trから
contortionによって計算されます。
Categories: Package ctensor
非計量性係数が接続係数の計算に含まれるようにします。
コントーションテンソルはユーザーが提供する非計量性ベクトル nmから
関数 nonmetricityによって計算されます。
Categories: Package ctensor
もし trueに設定されているなら、いくつかの ctensor計算が
Taylor級数展開を使って実行されるようにします。
現在、 christof, ricci, uricci, einstein,
weylがこの設定を考慮します。
Categories: Package ctensor
ctayswitchが trueに設定されている場合、
Taylor級数展開で使われる変数。
Categories: Package ctensor
ctayswitchが trueに設定されている場合、
Taylor級数展開で使われる最大べき数
Categories: Package ctensor
ctayswitchが trueに設定されている場合、
Taylor級数展開が実行される点。
Categories: Package ctensor
計量テンソル lgの行列式。
cframe_flagが falseに設定されている時、
cmetricが計算します。
Categories: Package ctensor
christofが有理整理を適用するようにします。
Categories: Package ctensor
デフォルト値: true
もし trueなら、
Einsteinテンソルの非零成分上で有理整理が実行されます;
もし ratfacが trueなら、成分は因数分解もされます。
Categories: Package ctensor
デフォルト値: true
Riemannテンソルの整理を制御するスイッチの1つです;
もし trueなら、有理整理がされます;
もし ratfacが trueなら、成分それぞれは因数分解もされます。
Categories: Package ctensor
デフォルト値: true
もし trueなら、このスイッチは,
weyl関数が Weylテンソルの値に有理整理を適用するようにします。
もし ratfacが trueなら、成分は因数分解もされます。
Categories: Package ctensor
共変標構計量。
デフォルトでは、符号 (+,+,+,-)を持つ4次元Lorentz標構に初期化されます。
cframe_flagが trueの時使われます。
Categories: Package ctensor
逆標構計量。
cframe_flagが trueに設定されているなら、
cmetricがコールされた時 lfgから計算されます。
Categories: Package ctensor
(3,1) Riemannテンソル。
関数 riemannが呼び出された時計算されます。
添字順序についての情報については riemannの記述を参照してください。
もし cframe_flagが trueなら、
riemは共変Riemannテンソル lriemから計算されます。
Categories: Package ctensor
共変Riemannテンソル。
lriemannが計算します。
Categories: Package ctensor
反変Riemannテンソル。
Categories: Package ctensor
混合Ricciテンソル。
ricciが計算します。
Categories: Package ctensor
反変Ricciテンソル。
ricciが計算します。
Categories: Package ctensor
計量テンソル。
このテンソルは他の計算が実行される前に
(dim掛け dim行列として)指定されなければいけません。
Categories: Package ctensor
計量テンソルの逆元。
cmetricが計算します。
Categories: Package ctensor
Weylテンソル。
weylが計算します。
Categories: Package ctensor
frame_bracketが計算する標構ブラケット係数。
Categories: Package ctensor
Kretchmann不変量。
rinvariantが計算します。
Categories: Package ctensor
Newman-Penroseヌルテトラド。
nptetradが計算します。
Categories: Package ctensor
上付き添字 Newman-Penroseヌルテトラド。
nptetradが計算します。
ug.npとして定義されます。
積 np.transpose(npi)は定数です:
(%i39) trigsimp(np.transpose(npi));
[ 0 - 1 0 0 ]
[ ]
[ - 1 0 0 0 ]
(%o39) [ ]
[ 0 0 0 1 ]
[ ]
[ 0 0 1 0 ]
|
Categories: Package ctensor
ユーザーが提供するねじれを表す階数3のテンソル。
contortionが使います。
Categories: Package ctensor
コントーションテンソル。
contortionが trから計算します。
Categories: Package ctensor
ユーザーが提供する非計量性ベクトル。
nonmetricityが使います。
Categories: Package ctensor
nonmetricityが nmから計算する
非計量性係数。
Categories: Package ctensor
テンソルパッケージが初期化されたかを示す変数。
csetupが設定し使います。
init_ctensorが再設定します。
Categories: Package ctensor
デフォルト値: []
ctensor (成分テンソル)パッケージのオプション。
ct_coordsは座標のリストを含みます。
関数 csetupがコールされる時通常定義される一方、
割り当て ct_coords: [j1, j2, ..., jn]で座標を再定義できます。
ここで、 jは新しい座標名です。
csetupも参照してください。
Categories: Package ctensor
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
ctensorパッケージによって以下の名前が内部的に使われます。
なので再定義してはいけません:
Name Description --------------------------------------------------------------------- _lg() Evaluates to lfg if frame metric used, lg otherwise _ug() Evaluates to ufg if frame metric used, ug otherwise cleanup() Removes items drom the deindex list contract4() Used by psi() filemet() Used by csetup() when reading the metric from a file findde1() Used by findde() findde2() Used by findde() findde3() Used by findde() kdelt() Kronecker-delta (not generalized) newmet() Used by csetup() for setting up a metric interactively setflags() Used by init_ctensor() readvalue() resimp() sermet() Used by csetup() for entering a metric as Taylor-series txyzsum() tmetric() Frame metric, used by cmetric() when cframe_flag:true triemann() Riemann-tensor in frame base, used when cframe_flag:true tricci() Ricci-tensor in frame base, used when cframe_flag:true trrc() Ricci rotation coefficients, used by christof() yesp() |
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
2004年11月に ctensorパッケージは広範囲に渡って書き直されました。
多くの関数と変数は、パッケージにMacsymaの商用版との互換性を持たせるために、
リネームされました。
New Name Old Name Description --------------------------------------------------------------------- ctaylor() DLGTAYLOR() Taylor-series expansion of an expression lgeod[] EM Geodesic equations ein[] G[] Mixed Einstein-tensor ric[] LR[] Mixed Ricci-tensor ricci() LRICCICOM() Compute the mixed Ricci-tensor ctaypov MINP Maximum power in Taylor-series expansion cgeodesic() MOTION Compute geodesic equations ct_coords OMEGA Metric coordinates ctayvar PARAM Taylor-series expansion variable lriem[] R[] Covariant Riemann-tensor uriemann() RAISERIEMANN() Compute the contravariant Riemann-tensor ratriemann RATRIEMAN Rational simplif. of the Riemann-tensor uric[] RICCI[] Contravariant Ricci-tensor uricci() RICCICOM() Compute the contravariant Ricci-tensor cmetric() SETMETRIC() Set up the metric ctaypt TAYPT Point for Taylor-series expansion ctayswitch TAYSWITCH Taylor-series setting switch csetup() TSETUP() Start interactive setup session ctransform() TTRANSFORM() Interactive coordinate transformation uriem[] UR[] Contravariant Riemann-tensor weyl[] W[] (3,1) Weyl-tensor |
| [ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書は市川 雄二によって2014年4月月20日にtexi2html 1.82を用いて生成されました。