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]