Nächste: Tensoren in gekrümmten Räumen, Vorige: Tensorsymmetrien, Nach oben: Funktionen und Variablen für ITENSOR [Inhalt][Index]
Ist die gleichnamige Funktion diff für die Differentiation einer
tensoriellen Größe. diff ist für das Paket itensor
erweitert. Die tensorielle Größe expr wird n_1-mal nach der
Variablen v_1, n_2 nach der Variablen v_2, …
abgeleitet. Die Argumente v_1 können ganze Zahlen von 1,
…, dim sein. In diesem Fall bezeichnen die ganzen Zahlen der Reihe
nach die Indizes, die in der Optionsvariablen vect_coords abgelegt sind.
dim ist die Dimension der tensoriellen Größen.
Weiterhin erlaubt die erweiterte Funktion diff die Berechnung von
Ableitungen nach indizierten Variablen. So können Ausdrücke, die den
Metriktensor und seine Ableitungen enthalten, nach dem Metriktensor und seinen
Ableitungen abgeleitet werden.
Beispiele:
(%i1) load("itensor")$
(%i2) depends(v,t);
(%o2) [v(t)]
(%i3) ishow(diff(v([i,j],[k])^2, t,1))$
k d k
(%t3) 2 v (-- (v ))
i j dt i j
(%i4) ishow(diff(v([i,j],[k])^2, t,2))$
2
k d k d k 2
(%t4) 2 v (--- (v )) + 2 (-- (v ))
i j 2 i j dt i j
dt
idiff führt Ableitungen nach den Koordinaten einer tensoriellen
Größe aus. Im Unterschied dazu führt die Funktion diff
Ableitungen nach den unabhängigen Variablen aus. Eine tensorielle Größe
erhält zusätzlich den Index v_1, der die Ableitung bezeichnet.
Mehrfache Indizes für Ableitungen werden sortiert, außer wenn die
Optionsvariable iframe_flag den Wert true hat.
idiff kann auch die Determinante des Metriktensors ableiten. Wird zum
Beispiel der Optionsvariablen imetric der Wert g zugewiesen,
dann hat das Kommando idiff(determinant(g), k) das Ergebnis
2 * determinant(g) * ichr2([%i,k], [%i]), wobei die Dummy-Variable
passend gewählt wird.
Berechnet die Lie-Ableitung eines tensoriellen Ausdrucks ten für das Vektorfeld v. Das Argument ten kann irgendeine tensorielle Größe sein. Das Argument v ist der Name eines Vektorfeldes und wird ohne Indizes angegeben.
Beispiel:
(%i1) load("itensor");
(%o1) /share/tensor/itensor.lisp
(%i2) ishow(liediff(v,a([i,j],[])*b([],[k],l)))$
k %2 %2 %2
(%t2) b (v a + v a + v a )
,l i j,%2 ,j i %2 ,i %2 j
%1 k %1 k %1 k
+ (v b - b v + v b ) a
,%1 l ,l ,%1 ,l ,%1 i j
Wertet jedes Auftreten von Substantivformen der Funktion idiff in
dem tensoriellem Ausdruck ten aus.
Gibt einen zum Argument expr äquivalenten Ausdruck zurück, in dem
alle Ableitungen von indizierten Größen durch Substantivformen der
Funktion idiff ersetzt sind.
Ist äquivalent zur Ausführung der Funktion undiff, der die
Funktionen ev und rediff nachfolgen.
evundiff erlaubt die Auswertung von Ausdrücken, die nicht direkt in
ihrer abgeleiteten Form ausgewertet werden können. So führt das folgende
Beispiel zu einer Fehlermeldung:
(%i1) load("itensor");
(%o1) /share/tensor/itensor.lisp
(%i2) icurvature([i,j,k],[l],m);
Maxima encountered a Lisp error:
Error in $ICURVATURE [or a callee]:
$ICURVATURE [or a callee] requires less than three arguments.
Automatically continuing.
To reenable the Lisp debugger set *debugger-hook* to nil.
Wird jedoch icurvature in der Substantivform verwendet, kann der
Ausdruck mit evundiff ausgewertet werden:
(%i3) ishow('icurvature([i,j,k],[l],m))$
l
(%t3) icurvature
i j k,m
(%i4) ishow(evundiff(%))$
l l %1 l %1
(%t4) - ichr2 - ichr2 ichr2 - ichr2 ichr2
i k,j m %1 j i k,m %1 j,m i k
l l %1 l %1
+ ichr2 + ichr2 ichr2 + ichr2 ichr2
i j,k m %1 k i j,m %1 k,m i j
Um Christoffel-Symbole abzuleiten, wird die Funktion evundiff
nicht benötigt:
(%i5) imetric(g); (%o5) done (%i6) ishow(ichr2([i,j],[k],l))$
k %3
g (g - g + g )
j %3,i l i j,%3 l i %3,j l
(%t6) -----------------------------------------
2
k %3
g (g - g + g )
,l j %3,i i j,%3 i %3,j
+ -----------------------------------
2
Alle tensoriellen Größen tensor_i die im Ausdruck expr auftreten und keine Ableitungen haben, werden zu Null gesetzt.
Alle tensoriellen Größen tensor_i die im Ausdruck expr auftreten und Ableitungen haben, werden zu Null gesetzt.
Setzt alle Ableitungen der tensoriellen Größe tensor die im Ausdruck expr auftritt und n oder mehr Ableitungen hat, auf den Wert Null.
Beispiele:
(%i1) load("itensor");
(%o1) /share/tensor/itensor.lisp
(%i2) ishow(a([i],[J,r],k,r)+a([i],[j,r,s],k,r,s))$
J r j r s
(%t2) a + a
i,k r i,k r s
(%i3) ishow(flushnd(%,a,3))$
J r
(%t3) a
i,k r
Gibt der tensoriellen Größe tensor_i die Eigenschaft, dass die kovariante Ableitung eines Vektors mit dem Namen tensor_i das Ergebnis Kronecker-Delta hat.
coord ist auch eine Systemvariable, die alle tensoriellen Größen
enthält, die mit der Funktion coord die Eigenschaft der kovarianten
Ableitung erhalten haben.
Beispiel:
(%i1) coord(x); (%o1) done (%i2) idiff(x([],[i]),j); (%o2) kdelta([j], [i]) (%i3) coord; (%o3) [x]
Entfernt die mit der Funktion coord definierte Eigenschaft für die
tensoriellen Größen tensor_i. Das Kommando remcoord(all)
entfernt diese Eigenschaft für alle tensoriellen Größen.
Zeigt das Argument expr auf die gleiche Weise an wie die Funktion
ishow mit dem Unterschied, dass der d’Alembert-Operator name im
Ausdruck durch [] ersetzt wird.
Beispiel:
(%i1) makebox(g([],[i,j])*p([m],[n],i,j),g); (%o1) []p([m], [n])
Vereinfacht Ausdrücke, die kovariante und kontravariante Ableitungen des
Metriktensors enthalten. conmetderiv kann zum Beispiel die Ableitungen
des kontravarianten Metriktensors in Beziehung zu den Christoffel-Symbolen
setzen:
(%i1) load("itensor");
(%o1) /share/tensor/itensor.lisp
(%i2) ishow(g([],[a,b],c))$
a b
(%t2) g
,c
(%i3) ishow(conmetderiv(%,g))$
%1 b a %1 a b
(%t3) - g ichr2 - g ichr2
%1 c %1 c
Vereinfacht Ausdrücke die Produkte von Ableitungen des Metriktensors
enthalten. Im besonderen erkennt simpmetderiv die folgenden
Identitäten:
ab ab ab a g g + g g = (g g ) = (kdelta ) = 0 ,d bc bc,d bc ,d c ,d
daher ist
ab ab g g = - g g ,d bc bc,d
und
ab ab g g = g g ,j ab,i ,i ab,j
was aus den Symmetrien der Christoffel-Symbole folgt.
Die Funktion simpmetderiv akzeptiert einen optionalen Parameter
stop. Ist dieser vorhanden, stoppt die Funktion nach der ersten
erfolgreichen Substitution in einem Produkt. simpmetderiv beachtet
ferner die Optionsvariable flipflag, welche die Ordnung der Indizes
kontrolliert.
Siehe auch weyl.dem für Beispiele der Funktionen simpmetderiv
und conmetderiv, die die Vereinfachung des Weyl-Tensors zeigen.
Beispiel:
(%i1) load("itensor");
(%o1) /share/tensor/itensor.lisp
(%i2) imetric(g);
(%o2) done
(%i3) ishow(g([],[a,b])*g([],[b,c])*g([a,b],[],d)*g([b,c],[],e))$
a b b c
(%t3) g g g g
a b,d b c,e
(%i4) ishow(canform(%))$
errexp1 has improper indices
-- an error. Quitting. To debug this try debugmode(true);
(%i5) ishow(simpmetderiv(%))$
a b b c
(%t5) g g g g
a b,d b c,e
(%i6) flipflag:not flipflag;
(%o6) true
(%i7) ishow(simpmetderiv(%th(2)))$
a b b c
(%t7) g g g g
,d ,e a b b c
(%i8) flipflag:not flipflag;
(%o8) false
(%i9) ishow(simpmetderiv(%th(2),stop))$
a b b c
(%t9) - g g g g
,e a b,d b c
(%i10) ishow(contract(%))$
b c
(%t10) - g g
,e c b,d
Setzt alle tensoriellen Größen, die genau einen Ableitungsindex haben, auf den Wert Null.
Standardwert: false
Tensoren können durch Angabe von ganzen Zahlen nach den einzelnen Komponenten
abgeleitet werden. In diesem Fall bezeichnen die ganzen Zahlen der Reihe nach
die Indizes, die in der Optionsvariablen vect_coords abgelegt sind.
Nächste: Tensoren in gekrümmten Räumen, Vorige: Tensorsymmetrien, Nach oben: Funktionen und Variablen für ITENSOR [Inhalt][Index]