[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
26.1 Introduction to ctensor | ||
26.2 Functions and Variables for ctensor |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
パッケージを初期化し、ユーザーに計量を対話的に入力可能にする
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 [phi,u,v] 環状座標 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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
変数 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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
任意の平方対称行列 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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
もし Mの最初の n行と n列が対角行列か対角 (2D) 配列を形成するなら
true
を返します。
Categories: Package ctensor · Predicate functions
もし Mが nかける nの対称行列か対称 (2D) 配列なら
true
を返し、そうでなければ false
を返します。
もし n が Mのサイズより小さいなら、
symmetricp
は
行1から行 nと列1から列 nからなる nかける nの部分行列(もしくは部分配列)のみを考慮します。
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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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() |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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 |
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by 市川雄二 on June, 21 2016 using texi2html 1.76.