1 @c -----------------------------------------------------------------------------
2 @c File : Atensor.de.texi
3 @c License : GNU General Public License (GPL)
5 @c Original : Atensor.texi revision 14.03.2011
6 @c Translation : Dr. Dieter Kaiser
8 @c Revision : 28.09.2011
10 @c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA
11 @c -----------------------------------------------------------------------------
13 @c -----------------------------------------------------------------------------
15 @node Paket atensor, , Paket ctensor, Tensoren
16 @section Paket @sc{atensor}
17 @c -----------------------------------------------------------------------------
20 * Einf@"uhrung in atensor::
21 * Funktionen und Variablen f@"ur atensor::
24 @c -----------------------------------------------------------------------------
25 @node Einf@"uhrung in atensor, Funktionen und Variablen f@"ur atensor, Paket atensor, Paket atensor
26 @subsection Einf@"uhrung in @sc{atensor}
27 @c -----------------------------------------------------------------------------
29 @c @code{atensor} is an algebraic tensor manipulation package. To use
30 @c @code{atensor}, type @code{load("atensor")}, followed by a call to the
31 @c @code{init_atensor} function.
33 Das Paket @code{atensor} erlaubt das algebraische Rechnen mit Tensoren. Mit
34 dem Kommando @code{load("atensor")} wird das Paket geladen. Um das Paket zu
35 initialisieren, wird die Funktion @mref{init_atensor} ausgef@"uhrt.
37 @c The essence of @code{atensor} is a set of simplification rules for the
38 @c noncommutative (dot) product operator ("@code{.}"). @code{atensor} recognizes
39 @c several algebra types; the corresponding simplification rules are put
40 @c into effect when the @code{init_atensor} function is called.
42 Im wesentlichen enth@"alt das Paket @code{atensor} Regeln f@"ur die
43 Vereinfachung von Ausdr@"ucken mit dem @mxref{dot, dot-Operator} Operator
44 @code{"."}. @code{atensor} kennt verschiedene Algebren. Mit der Funktion
45 @code{init_atensor} werden die Regeln einer Algebra initialisiert.
47 @c The capabilities of @code{atensor} can be demonstrated by defining the
48 @c algebra of quaternions as a Clifford-algebra Cl(0,2) with two basis
49 @c vectors. The three quaternionic imaginary units are then the two
50 @c basis vectors and their product, i.e.:
52 Um die M@"oglichkeiten des Paketes @code{atensor} zu zeigen, wird im Folgenden
53 die Algebra der Quaternionen als eine Clifford-Algebra Cl(0,2) mit zwei
54 Basisvektoren definiert. Die drei imagin@"aren Einheiten @code{i}, @code{j}
55 und @code{k} werden durch die zwei Vektoren @code{v[1]} und @code{v[2]} sowie
56 das Produkt @code{v[1] . v[2]} dargestellt:
63 @c Although the @code{atensor} package has a built-in definition for the
64 @c quaternion algebra, it is not used in this example, in which we
65 @c endeavour to build the quaternion multiplication table as a matrix:
67 Das Paket @code{atensor} hat eine vordefinierte Algebra der Quaternionen. Hier
68 wird die Algebra der Quaterinonen als Clifford-Algebra Cl(0,2) definiert und
69 die Multiplikationstabelle der Basisvektoren konstruiert.
72 (%i1) load("atensor")$
74 (%i2) init_atensor(clifford,0,0,2);
76 (%i3) atensimp(v[1].v[1]);
78 (%i4) atensimp((v[1].v[2]).(v[1].v[2]));
80 (%i5) q:zeromatrix(4,4);
90 (%i7) for i thru adim do q[1,i+1]:q[i+1,1]:v[i];
92 (%i8) q[1,4]:q[4,1]:v[1].v[2];
95 (%i9) for i from 2 thru 4 do
96 for j from 2 thru 4 do
97 q[i,j]:atensimp(q[i,1].q[1,j]);
113 @c @code{atensor} recognizes as base vectors indexed symbols, where the symbol
114 @c is that stored in @code{asymbol} and the index runs between 1 and
115 @c @code{adim}. For indexed symbols, and indexed symbols only, the bilinear
116 @c forms @code{sf}, @code{af}, and @code{av} are evaluated. The evaluation
117 @c substitutes the value of @code{aform[i,j]} in place of @code{fun(v[i],v[j])}
118 @c where @code{v} represents the value of @code{asymbol} and @code{fun} is
119 @c either @code{af} or @code{sf}; or, it substitutes @code{v[aform[i,j]]}
120 @c in place of @code{av(v[i],v[j])}.
122 Indizierte Symbole mit dem Namen, der in der Optionsvariablen @mref{asymbol}@w{}
123 abgelegt ist, werden von @code{atensor} als Basisvektoren erkannt. Dabei
124 l@"auft der Index von @code{1} bis @mrefdot{adim} F@"ur indizierte Symbole
125 werden die Bilinearformen @mrefcomma{sf} @mref{af} und @mref{av} ausgewertet.
126 Die Auswertung ersetzt die Bilinearform @code{fun(v[i].v[j])}, durch das
127 Matrixelement @code{aform[i,j]}, wobei @code{v} einen Basisvektor bezeichnet
128 und @code{fun} einer der Bilinearformen @code{sf} oder @code{af} ist. Ist
129 @code{fun} die Bilinearform @code{av}, dann wird @code{v[aform[i,j]]} f@"ur
130 @code{av(v[i],v[j])} substituiert. Siehe auch die Optionsvariable
133 @c Needless to say, the functions @code{sf}, @code{af} and @code{av}
136 Die Bilinearformen @code{sf}, @code{af} und @code{av} k@"onnen vom Nutzer
137 neu definiert werden, um eine gew@"unschte Algebra zu definieren.
139 @c When the @code{atensor} package is loaded, the following flags are set:
141 Wird das Paket @code{atensor} geladen, werden die folgenden Schalter auf die
142 angegebenen Werte gesetzt:
150 @c If you wish to experiment with a nonassociative algebra, you may also
151 @c consider setting @code{dotassoc} to @code{false}. In this case, however,
152 @c @code{atensimp} will not always be able to obtain the desired
155 Wird das symbolische Rechnen in einer nicht-assoziativen Algebra gew@"unscht,
156 kann auch noch der Schalter @mref{dotassoc} auf den Wert @code{false} gesetzt
157 werden. In diesem Fall kann jedoch die Funktion @mref{atensimp} nicht immer
158 eine gew@"unschte Vereinfachung erzielen.
160 @c -----------------------------------------------------------------------------
161 @node Funktionen und Variablen f@"ur atensor, , Einf@"uhrung in atensor, Paket atensor
162 @subsection Funktionen und Variablen f@"ur @sc{atensor}
163 @c -----------------------------------------------------------------------------
165 @c --- 28.09.2011 DK -----------------------------------------------------------
166 @anchor{init_atensor}
167 @deffn {Funktion} init_atensor (@var{alg_type}, @var{opt_dims})
168 @deffnx {Funktion} init_atensor (@var{alg_type})
170 @c Initializes the @code{atensor} package with the specified algebra type.
171 @c @var{alg_type} can be one of the following:
173 Initialisiert das Paket @code{atensor} mit der angegebenen Algebra
174 @var{alg_type}. Das Argument @var{alg_type} kann einen der folgenden
179 @c The universal algebra has no commutation rules.
180 Eine allgemeine Algebra, f@"ur die keine Vertauschungsregeln definiert sind.
183 @c The Grassman algebra is defined by the commutation
184 @c relation @code{u.v+v.u=0}.
185 Eine Gra@ss{}mann-Algebra, f@"ur die die Vertauschungsregel @code{u.v + v.u = 0}
189 @c The Clifford algebra is defined by the commutation
190 @c relation @code{u.v+v.u=-2*sf(u,v)} where @code{sf} is a symmetric
191 @c scalar-valued function. For this algebra, @var{opt_dims} can be up
192 @c to three nonnegative integers, representing the number of positive,
193 @c degenerate, and negative dimensions of the algebra, respectively. If
194 @c any @var{opt_dims} values are supplied, @code{atensor} will configure the
195 @c values of @code{adim} and @code{aform} appropriately. Otherwise,
196 @c @code{adim} will default to 0 and @code{aform} will not be defined.
197 Eine Clifford-Algebra, die durch die Vertauschungsregel @code{u.v + v.u =
198 -2*sf(u,v)} definiert ist. Die Bilinearform @mref{sf} ist eine symmetrische
199 Funktion, die einen skalaren Wert als Ergebnis hat. Das Argument @var{opt_dims}
200 kann bis zu drei positive ganze Zahlen sein, die die positiven,
201 entarteten und negativen Dimensionen der Algebra bezeichnen. Die Dimension
202 @mref{adim} und die Matrix @mref{aform} werden entsprechend der angegebenen
203 Argumente @var{opt_dims} initialisiert. Sind keine Argumente @var{opt_dims}
204 vorhanden, wird die Dimension @code{adim} zu Null initialisiert und keine
205 Matrix @code{aform} definiert.
208 @c The symmetric algebra is defined by the commutation
209 @c relation @code{u.v-v.u=0}.
210 Eine symmetrische Algebra, die durch die Vertauschungsregel @code{u.v - v.u = 0}
214 @c The symplectic algebra is defined by the commutation
215 @c relation @code{u.v-v.u=2*af(u,v)} where @code{af} is an antisymmetric
216 @c scalar-valued function. For the symplectic algebra, @var{opt_dims} can
217 @c be up to two nonnegative integers, representing the nondegenerate and
218 @c degenerate dimensions, respectively. If any @var{opt_dims} values are
219 @c supplied, @code{atensor} will configure the values of @code{adim} and
220 @c @code{aform} appropriately. Otherwise, @code{adim} will default to 0 and
221 @c @code{aform} will not be defined.
222 Eine symplektische Algebra, die durch die Vertauschungsregel
223 @code{u.v - v.u = 2*af(u,v)} definiert ist. Die Bilinearform @mref{af} ist
224 eine antisymmetrische Funktion, die einen skalaren Wert als Ergebnis hat. Das
225 Argument @var{opt_dims} kann bis zu zwei positive ganze Zahlen enthalten,
226 die die nicht-degenerierten und degenerierten Dimensionen der Algebra
227 bezeichnen. Die Dimension @mref{adim} und die Matrix @mref{aform}@w{}
228 werden entsprechend der angegebenen Argumente @var{opt_dims} initialisiert.
229 Sind keine Argumente @var{opt_dims} vorhanden, wird die Dimension @code{adim}
230 zu Null initialisiert und keine Matrix @code{aform} definiert.
233 @c The algebra of the Lie envelope is defined by the
234 @c commutation relation @code{u.v-v.u=2*av(u,v)} where @code{av} is
235 @c an antisymmetric function.
236 Eine einh@"ullende Lie-Algebra, die durch die Vertauschungsregel
237 @code{u.v - v.u = 2*av(u,v)} definiert ist, wobei die Bilinearform @mref{av}@w{}
238 eine antisymmetrische Funktion ist. Das Argument @var{opt_dims} kann eine
239 positive ganze Zahl sein, welche die Dimension der Lie-Algebra angibt. Die
240 Dimension @mref{adim} und die Matrix @mref{aform} werden entsprechend des
241 Argumentes @var{opt_dims} initialisiert. Ist kein Argument @var{opt_dims}
242 vorhanden, wird die Dimension @code{adim} zu Null initialisiert und keine Matrix
243 @code{aform} definiert.
246 @c The @code{init_atensor} function also recognizes several predefined
249 Die Funktion @code{init_atensor} kennt weiterhin einige vordefinierte
254 @c implements the algebra of complex numbers as the
255 @c Clifford algebra Cl(0,1). The call @code{init_atensor(complex)} is
256 @c equivalent to @code{init_atensor(clifford, 0, 0, 1)}.
257 Die Algebra der komplexen Zahlen, die als eine Clifford-Algebra Cl(0,1)
258 definiert wird. Das Kommando @code{init_atensor(complex)} ist @"aquivalent zum
259 Kommando @code{init_atensor(clifford, 0, 0, 1)}.
262 @c implements the algebra of quaternions. The call
263 @c @code{init_atensor (quaternion)} is equivalent to
264 @c @code{init_atensor (clifford, 0, 0, 2)}.
265 Die Algebra der Quaternionen, die als eine Clifford-Algebra vom Typ Cl(0,2)
266 definiert wird. Das Kommando @code{init_atensor(quaternion)}
267 ist @"a@-qui@-va@-lent zum Kommando @code{init_atensor(clifford, 0, 0, 2)}.
270 @c implements the algebra of Pauli-spinors as the Clifford-algebra
271 @c Cl(3,0). A call to @code{init_atensor(pauli)} is equivalent to
272 @c @code{init_atensor(clifford, 3)}.
273 Die Algebra der Pauli-Matrizen, die als eine Clifford-Algebra Cl(3,0)
274 definiert wird. Das Kommando @code{init_atensor(pauli)} ist @"aquivalent
275 zum Kommando @code{init_atensor(clifford, 3)}.
278 @c implements the algebra of Dirac-spinors as the Clifford-algebra
279 @c Cl(3,1). A call to @code{init_atensor(dirac)} is equivalent to
280 @c @code{init_atensor(clifford, 3, 0, 1)}.
281 Die Algebra der Dirac-Matrizen, die als eine Clifford-Algebra Cl(3,0,1)
282 definiert wird. Das Kommando @code{init_atensor(dirac)} ist @"aquivalent zum
283 Kommando @code{init_atensor(clifford, 3, 0, 1)}.
287 @c --- 28.09.2011 DK -----------------------------------------------------------
289 @deffn {Funktion} atensimp (@var{expr})
291 @c Simplifies an algebraic tensor expression @var{expr} according to the rules
292 @c configured by a call to @code{init_atensor}. Simplification includes
293 @c recursive application of commutation relations and resolving calls
294 @c to @code{sf}, @code{af}, and @code{av} where applicable. A
295 @c safeguard is used to ensure that the function always terminates, even
296 @c for complex expressions.
298 Vereinfacht einen Ausdruck @var{expr} entsprechend der Regeln f@"ur die Algebra,
299 die mit der Funktion @mref{init_atensor} festgelegt ist. Die Regeln werden
300 rekursiv auf den Ausdruck angewendet. Dabei werden auch Bilinearformen
301 @mrefcomma{sf} @mref{af} und @mref{av} ausgewertet.
305 Die folgenden Beispiele zeigen das Rechnen mit der Algebra der Quaternionen.
308 (%i1) load("atensor")$
310 (%i2) init_atensor(quaternion);
312 (%i3) atensimp(v[1].v[1]);
314 (%i4) atensimp(v[2].v[2]);
316 (%i5) atensimp((v[1].v[2]) . (v[1].v[2]));
318 (%i6) expand((2*v[1]+3*v[2])^^2);
319 (%o6) 9 (v . v ) + 6 (v . v ) + 6 (v . v ) + 4 (v . v )
326 @c --- 28.09.2011 DK -----------------------------------------------------------
328 @defvr {Optionsvariable} alg_type
329 Standardwert: @code{universal}
331 @c The algebra type. Valid values are @code{universal}, @code{grassmann},
332 @c @code{clifford}, @code{symmetric}, @code{symplectic} and @code{lie_envelop}.
334 Der Typ der Algebra, die bei der Vereinfachung von Ausdr@"ucken mit der
335 Funktion @mref{atensimp} angewendet wird. Die Algebra wird von der Funktion
336 @code{init_atensor} initialisiert. M@"ogliche Algebren sind @code{universal},
337 @code{grassmann}, @code{clifford}, @code{symmetric}, @code{symplectic} und
338 @code{lie_envelop}. Siehe f@"ur eine ausf@"uhrliche Erl@"auterung der Algebren
339 die Funktion @mrefdot{init_atensor}
342 @c --- 28.09.2011 DK -----------------------------------------------------------
344 @defvr {Optionsvariable} adim
345 Standardwert: @code{0}
347 @c The dimensionality of the algebra. @code{atensor} uses the value of
348 @c @code{adim} to determine if an indexed object is a valid base vector. See
351 Die Dimension der Algebra, die bei der Vereinfachung von Ausdr@"ucken mit der
352 Funktion @mref{atensimp} angewendet wird. Die Dimension wird von der Funktion
353 @mref{init_atensor} initialisiert. Ein indiziertes Symbol mit dem Bezeichner
354 @mref{asymbol} ist dann ein Basisvektor, wenn der Index kleiner oder gleich
355 der Dimension @code{adim} ist.
359 Die Dirac-Algebra hat die Dimension @code{4} und @code{v[4]} ist ein
363 (%i1) load("atensor")$
365 (%i2) init_atensor(dirac);
374 @c --- 28.09.2011 DK -----------------------------------------------------------
376 @defvr {Optionsvariable} aform
377 Standardwert: @code{ident(3)}
379 @c Default values for the bilinear forms @code{sf}, @code{af}, and
380 @c @code{av}. The default is the identity matrix @code{ident(3)}.
382 Matrix mit den Werten der Bilinearformen @mrefcomma{sf} @mref{af} und
383 @mrefdot{av} Der Standardwert ist die dreidimensionale Einheitsmatrix.
387 Das Beispiel zeigt die Matrix @code{aform} f@"ur eine Lie-Algebra mit drei
388 Dimensionen und die Ergebnisse der Bilinearform @code{av} f@"ur diese Algebra.
391 (%i1) load("atensor")$
393 (%i2) init_atensor(lie_envelop, 3);
401 (%i4) av(v[1], v[2]);
404 (%i5) av(v[1], v[3]);
410 @c --- 28.09.2011 DK -----------------------------------------------------------
412 @defvr {Optionsvariable} asymbol
413 Standardwert: @code{v}
415 @c The symbol for base vectors.
417 Enth@"alt das Symbol, das einen Basisvektor des Paketes @code{atensor}
418 bezeichnet. Mit der Funktion @mref{abasep} kann getestet werde, ob ein
419 indiziertes Symbol einen Basisvektor der Algebra bezeichnet.
423 In diesem Beispiel wird @code{asymbol} auf den Wert @code{x} gesetzt.
426 (%i1) load("atensor")$
428 (%i2) init_atensor(symmetric, 2);
441 @c --- 28.09.2011 DK -----------------------------------------------------------
443 @deffn {Funktion} sf (@var{u}, @var{v})
445 @c A symmetric scalar function that is used in commutation relations.
446 @c The default implementation checks if both arguments are base vectors
447 @c using @code{abasep} and if that is the case, substitutes the
448 @c corresponding value from the matrix @code{aform}.
450 Eine symmetrische Bilinearform, die bei der Vereinfachung von Ausdr@"ucken
451 mit der Funktion @mref{atensimp} angewendet wird. Die Funktion kann vom Nutzer
452 durch eine neue Funktion ersetzt werden. Die Standardimplementation pr@"uft
453 mit der Funktion @mrefcomma{abasep} ob die Argumente @var{u} und @var{v}
454 Basisvektoren sind und setzt f@"ur diesen Fall den entsprechen Wert der Matrix
458 @c -----------------------------------------------------------------------------
460 @deffn {Funktion} af (@var{u}, @var{v})
462 @c An antisymmetric scalar function that is used in commutation relations.
463 @c The default implementation checks if both arguments are base vectors
464 @c using @code{abasep} and if that is the case, substitutes the
465 @c corresponding value from the matrix @code{aform}.
467 Eine antisymmetrische Bilinearform, die bei der Vereinfachung von Ausdr@"ucken
468 mit der Funktion @mref{atensimp} angewendet wird. Die Funktion kann vom Nutzer
469 durch eine neue Funktion ersetzt werden. Die Standardimplementation pr@"uft
470 mit der Funktion @mrefcomma{abasep} ob die Argumente @var{u} und @var{v}
471 Basisvektoren sind und setzt f@"ur diesen Fall den entsprechenden Wert der
472 Matrix @mref{aform} ein.
475 @c --- 28.09.2011 DK -----------------------------------------------------------
477 @deffn {Funktion} av (@var{u}, @var{v})
479 @c An antisymmetric function that is used in commutation relations.
480 @c The default implementation checks if both arguments are base vectors
481 @c using @code{abasep} and if that is the case, substitutes the
482 @c corresponding value from the matrix @code{aform}.
484 Eine antisymmetrische Bilinearform, die bei der Vereinfachung von Ausdr@"ucken
485 mit der Funktion @mref{atensimp} angewendet wird. Die Funktion kann vom Nutzer
486 durch eine neue Funktion ersetzt werden. Die Standardimplementation pr@"uft
487 mit der Funktion @mrefcomma{abasep} ob die Argumente @var{u} und @var{v}
488 Basisvektoren sind und setzt f@"ur diesen Fall den entsprechenden Wert
489 @code{v[aform[i,j]]} der Matrix @mref{aform} ein.
494 (%i1) load("atensor")$
497 (%i3) aform:matrix([0,3,-2],[-3,0,1],[2,-1,0]);
505 (%i5) av(x[1], x[2]);
508 (%i6) av(x[1], x[3]);
514 @c --- 28.09.2011 DK -----------------------------------------------------------
516 @deffn {Funktion} abasep (@var{v})
518 @c Checks if its argument is an @code{atensor} base vector. That is, if it is
519 @c an indexed symbol, with the symbol being the same as the value of
520 @c @code{asymbol}, and the index having a numeric value between 1
523 Pr@"uft, ob das Argument @var{v} ein Basisvektor ist. Ein Basisvektor ist ein
524 indiziertes Symbol mit dem Symbol @mref{asymbol} als Bezeichner und einem
525 Index im Bereich von @code{1} bis @mrefdot{adim}
530 (%i1) load("atensor")$
542 @c --- End of file Atensor.de.texi ---------------------------------------------