From: Robert D. <rob...@us...> - 2011-12-09 05:58:22
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Maxima, A Computer Algebra System". The branch, master has been updated via ae3a5000b16705e9411daf0a6dae58bada9fb3ec (commit) via 765e987503f4823507f9242d2fc6638aba70a594 (commit) via 14d31d4df832a7c3cd8478bc2d04a0f3a24bc9d8 (commit) via b804115e791a3f5bfc089f4ee7d11204397b0896 (commit) via 238c947faef88548f67f68c5f1f534a48293173c (commit) via 0bb7cecba80feacbd31d879c5017fcc64f03fab7 (commit) via 3de3c2c7cef55c962b0f0f4936571313b135d905 (commit) via 82a9d5a4f9481e62c8e64c5fa7314798d05e86f3 (commit) via 664f3490ab7abd38981f10dceaae573b4360c454 (commit) via 29944a1094153081ec8917603903e3eea2a3bb3e (commit) via 2755b297b5903dbac4c24c1207f97c26396d36a0 (commit) via 774980428a0dc1b02c00cde6bd703dd2cd2ccf47 (commit) via e2d2867a65114dc8ce68c7fb0cce77cfb467bf09 (commit) via 0598f6f94a6f10b99e24bcb753d25fb663325f8a (commit) via 9a66dfab2f819c60c3b9f8733aa579eca73123e4 (commit) via be6882a75ef47bccca4940d48b7d96c79c79da69 (commit) via 16a57a6c2cffdda622fb13eacf2f66c43b8056d9 (commit) via 6f0b63fc62209069240f4aa0e6a1b75501e04524 (commit) via 907805b14b388f2c6a35c1b7f12af5d5328c929a (commit) via 3c524d8fdb8e9a6dd08919bd37c105d00d175c8a (commit) via 1837e0ead155c823afb40e645224485156a71dde (commit) via 6af1fac4ed5e2fa1d1b8a869c5ceff42e7c8aa3e (commit) via c42317dd1a88a6d13a5fc7da5966235c304befa8 (commit) via 05f7249a1d32d6672e124cef8ebc3fcc1999f8f5 (commit) via a04a36c9a5f1f7b65e206c92e775c2fbf9ed1ed4 (commit) via d554219a32805ed35e6d1074fa6f66a5d29ff65a (commit) via 0f4d6b952d69f18f689998db400827ba5e0aaadc (commit) via d4ea721293dcee707ffb68ef4a80025b49d87eb1 (commit) via 7d8799b4cf04ed74d8ee87ef8994a1639ec9a617 (commit) via ebe6a3df92c3c818474f7f0d6b9618914e4ecb2a (commit) from 05e0868f39729d2c27f99188b2ace1d53c0027cd (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ae3a5000b16705e9411daf0a6dae58bada9fb3ec Merge: 765e987 05e0868 Author: robert_dodier <rob...@us...> Date: Thu Dec 8 22:55:29 2011 -0700 Resolve merge conflict in git pull. commit 765e987503f4823507f9242d2fc6638aba70a594 Author: Mario Rodriguez <rio...@us...> Date: Tue Dec 6 10:48:00 2011 +0100 Update translation diff --git a/doc/info/es/Polynomials.es.texi b/doc/info/es/Polynomials.es.texi index ab4dadf..20c51e8 100644 --- a/doc/info/es/Polynomials.es.texi +++ b/doc/info/es/Polynomials.es.texi @@ -1,4 +1,4 @@ -@c English version 2011-07-03 +@c English version 2011-08-04 @menu * Introducci@'on a los polinomios:: * Funciones y variables para polinomios:: @@ -65,6 +65,18 @@ Si @code{berlefact} vale @code{false} entonces se utiliza el algoritmo de factor @deffn {Funci@'on} bezout (@var{p1}, @var{p2}, @var{x}) Es una alternativa a la funci@'on @code{resultant}. Devuelve una matriz. +@example +(%i1) bezout(a*x+b, c*x^2+d, x); + [ b c - a d ] +(%o1) [ ] + [ a b ] +(%i2) determinant(%); + 2 2 +(%o2) a d + b c +(%i3) resultant(a*x+b, c*x^2+d, x); + 2 2 +(%o3) a d + b c +@end example @end deffn @deffn {Funci@'on} bothcoef (@var{expr}, @var{x}) @@ -214,9 +226,11 @@ funci@'on. (%i1) coeff ([4*a, -3*a, 2*a], a); (%o1) [4, - 3, 2] (%i2) coeff (matrix ([a*x, b*x], [-c*x, -d*x]), x); +@group [ a b ] (%o2) [ ] [ - c - d ] +@end group (%i3) coeff (a*u - b*v = 7*u + 3*v, u); (%o3) a = 7 @end example @@ -917,17 +931,46 @@ equation may be given as first argument. @defvr {Variable opcional} modulus Valor por defecto: @code{false} -Si @code{modulus} es un n@'umero positivo @var{p}, las operaciones con n@'umeros racionales (como los devueltos por @code{rat} y funciones asociadas) se realizan m@'odulo @var{p}, utilizando el llamado sistema de m@'odulo balanceado, en el que @code{@var{n} m@'odulo @var{p}} se define como un entero @var{k} de @code{[-(@var{p}-1)/2, ..., 0, ..., (@var{p}-1)/2]} -si @var{p} es impar, o de @code{[-(@var{p}/2 - 1), ..., 0, ...., @var{p}/2]} si @var{p} es par, de tal manera que @code{@var{a} @var{p} + @var{k}} es igual a @var{n} para alg@'un entero @var{a}. -@c NEED EXAMPLES OF "BALANCED MODULUS" HERE +Si @code{modulus} es un n@'umero positivo @var{p}, las operaciones con n@'umeros racionales +(como los devueltos por @code{rat} y funciones relacionadas) se realizan m@'odulo @var{p}, +utilizando el llamado sistema de m@'odulo balanceado, en el que @code{@var{n} m@'odulo @var{p}} +se define como un entero @var{k} de @code{[-(@var{p}-1)/2, ..., 0, ..., (@var{p}-1)/2]} +si @var{p} es impar, o de @code{[-(@var{p}/2 - 1), ..., 0, ...., @var{p}/2]} si @var{p} es par, +de tal manera que @code{@var{a} @var{p} + @var{k}} es igual a @var{n} para alg@'un entero @var{a}. -@c FALTA PARRAFO POCO LEGIBLE +Normalmente a @code{modulus} se le asigna un n@'umero primo. Se acepta que a @code{modulus} +se le asigne un entero positivo no primo, pero se obtendr@'a un mensaje de aviso. Maxima +responder@'a con un mensaje de error cuando se le asigne a @code{modulus} cero o un n@'umero +negativo. -Normalmente a @code{modulus} se le asigna un n@'umero primo. Se acepta que a @code{modulus} se le asigne un entero positivo no primo, pero se obtendr@'a un mensaje de aviso. Maxima permitir@'a que a @code{modulus} se le asigne cero o un entero negativo, aunque no est@'e clara su utilidad. +Ejemplos: -@c NEED EXAMPLES HERE +@example +(%i1) modulus:7; +(%o1) 7 +(%i2) polymod([0,1,2,3,4,5,6,7]); +(%o2) [0, 1, 2, 3, - 3, - 2, - 1, 0] +(%i3) modulus:false; +(%o3) false +(%i4) poly:x^6+x^2+1; + 6 2 +(%o4) x + x + 1 +(%i5) factor(poly); + 6 2 +(%o5) x + x + 1 +(%i6) modulus:13; +(%o6) 13 +(%i7) factor(poly); + 2 4 2 +(%o7) (x + 6) (x - 6 x - 2) +(%i8) polymod(%); + 6 2 +(%o8) x + x + 1 +@end example @end defvr + + @deffn {Funci@'on} num (@var{expr}) Devuelve el numerador de @var{expr} si se trata de una fracci@'on. Si @var{expr} no es una fracci@'on, se devuelve @var{expr}. @@ -1155,7 +1198,8 @@ Valor por defecto: @code{true} Si @code{ratdenomdivide} vale @code{true}, la funci@'on @code{ratexpand} expande una fracci@'on en la que el numerador es una suma en una suma de divisiones. En otro caso, @code{ratexpand} reduce una suma de divisiones a una @'unica fracci@'on, cuyo numerador es la suma de los denominadores de cada fracci@'on. -Examples: +Ejemplos: + @example (%i1) expr: (x^2 + x + 1)/(y^2 + 7); 2 @@ -1172,11 +1216,13 @@ Examples: y + 7 y + 7 y + 7 (%i4) ratdenomdivide: false$ (%i5) ratexpand (expr); +@group 2 x + x + 1 (%o5) ---------- 2 y + 7 +@end group (%i6) expr2: a^2/(b^2 + 3) + b/(b^2 + 3); 2 b a @@ -1610,20 +1656,68 @@ La funci@'on @code{remainder} devuelve el segundo elemento de la lista retornada @end deffn @deffn {Funci@'on} resultant (@var{p_1}, @var{p_2}, @var{x}) -@deffnx {Variable} resultant -Calcula la resultante de los dos polinomios @var{p_1} y @var{p_2}, eliminando la variable @var{x}. -La resultante es un determinante de los coeficientes de @var{x} en @var{p_1} y @var{p_2}, que es igual a cero si s@'olo si @var{p_1} y @var{p_2} tienen un factor com@'un no constante. +Calcula la resultante de los dos polinomios @var{p_1} y @var{p_2}, eliminando +la variable @var{x}. La resultante es un determinante de los coeficientes de @var{x} +en @var{p_1} y @var{p_2}, que es igual a cero si s@'olo si @var{p_1} y @var{p_2} +tienen un factor com@'un no constante. + +Si @var{p_1} o @var{p_2} pueden ser factorizados, puede ser necesario llamar a +@code{factor} antes que invocar a @code{resultant}. -Si @var{p_1} o @var{p_2} pueden ser factorizados, puede ser necesario llamar a @code{factor} antes que invocar a @code{resultant}. +La variable opcional @code{resultant} controla qu@'e algoritmo ser@'a utilizado para calcular la resultante. +V@'eanse @code{option_resultant} y @code{resultant}. -La variable @code{resultant} controla qu@'e algoritmo ser@'a utilizado para calcular la resultante. -@c FALTA COMPLETAR PARRAFO +La funci@'on @code{bezout} toma los mismos argumentos que @code{resultant} y devuelve una matriz. +El determinante del valor retornado es la resultante buscada. -La funci@'on @code{bezout} toma los mismos argumentos que @code{resultant} y devuelve una matriz. El determinante del valor retornado es la resultante buscada. +Ejemplos: -@c NEED AN EXAMPLE HERE +@example +(%i1) resultant(2*x^2+3*x+1, 2*x^2+x+1, x); +(%o1) 8 +(%i2) resultant(x+1, x+1, x); +(%o2) 0 +(%i3) resultant((x+1)*x, (x+1), x); +(%o3) 0 +(%i4) resultant(a*x^2+b*x+1, c*x + 2, x); + 2 +(%o4) c - 2 b c + 4 a + +(%i5) bezout(a*x^2+b*x+1, c*x+2, x); +@group + [ 2 a 2 b - c ] +(%o5) [ ] + [ c 2 ] +@end group +(%i6) determinant(%); +(%o6) 4 a - (2 b - c) c +@end example @end deffn + + +@defvr {Variable opcional} resultant +Valor por defecto: @code{subres} + +La variable opcional @code{resultant} controla qu@'e algoritmo ser@'a utilizado para +calcular la resultante con la funci@'on @code{resultant}. Los valores posibles son: + +@table @code +@item subres +para el algoritmo PRS (@i{polynomial remainder sequence}) subresultante, +@item mod +para el algoritmo resultante modular y +@item red +para el algoritmo PRS (@i{polynomial remainder sequence}) reducido. +@end table + +En la mayor parte de problemas, el valor por defecto, @code{subres}, es el +m@'as apropiado. Pero en el caso de problemas bivariantes o univariantes +de grado alto, puede ser mejor utilizar @code{mod}. +@end defvr + + + @defvr {Variable opcional} savefactors Valor por defecto: @code{false} commit 14d31d4df832a7c3cd8478bc2d04a0f3a24bc9d8 Author: Mario Rodriguez <rio...@us...> Date: Tue Dec 6 08:38:28 2011 +0100 Update translation diff --git a/doc/info/es/MathFunctions.es.texi b/doc/info/es/MathFunctions.es.texi index 8b8932b..adb2fe0 100644 --- a/doc/info/es/MathFunctions.es.texi +++ b/doc/info/es/MathFunctions.es.texi @@ -1,4 +1,4 @@ -@c English version 2011-06-15 +@c English version 2011-12-01 @menu * Funciones para los n@'umeros:: * Funciones para los n@'umeros complejos:: @@ -15,18 +15,103 @@ @section Funciones para los n@'umeros -@deffn {Funci@'on} abs (@var{expr}) -Devuelve el valor absoluto de @var{expr}. Si la expresi@'on es compleja, retorna -el m@'odulo de @var{expr}. +@deffn {Funci@'on} abs (@var{z}) +La funci@'on @code{abs} representa el valor absoluto y se puede aplicar tanto +a argumentos num@'ericos como simb@'olicos. Si el argumento @var{z} es un +n@'umero real o complejo, @code{abs} devuelve el valor absoluto de @var{z}. +Si es posible, las expresiones simb@'olicas que utilizan la funci@'on del +valor absoluto tambi@'en se simplifican. -@code{abs} se distribuye sobre listas, matrices y ecuaciones. -V@'ease tambi@'en @code{distribute_over}. +Maxima puede derivar, integrar y calcular l@'{@dotless{i}}mites de expresiones +que contengan a @code{abs}. El paquete @code{abs_integrate} extiende las +capacidades de Maxima para calcular integrales que contengan llamadas a +@code{abs}. V@'ease @code{(%i12)} en el ejemplo de m@'as abajo. + +Cuando se aplica a una lista o matriz, @code{abs} se distribuye autom@'aticamente +sobre sus elementos. De forma similar, tambi@'en se distribuye sobre los dos +miembros de una igualdad. Para cambiar este comportamiento por defecto, +v@'ease la variable @code{distribute_over}. + +Ejemplos: + +C@'alculo del valor absoluto de n@'umeros reales y complejos, incluyendo +constantes num@'ericas e infinitos. El primer ejemplo muestra c@'omo +@code{abs} se distribuye sobre los elementos de una lista. + +@example +(%i1) abs([-4, 0, 1, 1+%i]); +(%o1) [4, 0, 1, sqrt(2)] + +(%i2) abs((1+%i)*(1-%i)); +(%o2) 2 +(%i3) abs(%e+%i); + 2 +(%o3) sqrt(%e + 1) +(%i4) abs([inf, infinity, minf]); +(%o4) [inf, inf, inf] +@end example + +Simplificaci@'on de expresiones que contienen @code{abs}: + +@example +(%i5) abs(x^2); + 2 +(%o5) x +(%i6) abs(x^3); + 2 +(%o6) x abs(x) + +(%i7) abs(abs(x)); +(%o7) abs(x) +(%i8) abs(conjugate(x)); +(%o8) abs(x) +@end example + +Integrando y derivando con la funci@'on @code{abs}. N@'otese que se pueden +calcular m@'as integrales que involucren la funci@'on @code{abs} si se +carga el paquete @code{abs_integrate}. El @'ultimo ejemplo muestra la +transformada de Laplace de @code{abs}. V@'ease @code{laplace}. + +@example +(%i9) diff(x*abs(x),x),expand; +(%o9) 2 abs(x) + +(%i10) integrate(abs(x),x); + x abs(x) +(%o10) -------- + 2 + +(%i11) integrate(x*abs(x),x); + / + [ +(%o11) I x abs(x) dx + ] + / + +(%i12) load(abs_integrate)$ +(%i13) integrate(x*abs(x),x); + 2 3 + x abs(x) x signum(x) +(%o13) --------- - ------------ + 2 6 + +(%i14) integrate(abs(x),x,-2,%pi); + 2 + %pi +(%o14) ---- + 2 + 2 + +(%i15) laplace(abs(x),x,s); + 1 +(%o15) -- + 2 + s +@end example @end deffn @deffn {Funci@'on} ceiling (@var{x}) - Si @var{x} es un n@'umero real, devuelve el menor entero mayor o igual que @var{x}. Si @var{x} es una expresi@'on constante (por ejemplo, @code{10 * %pi}), @@ -227,8 +312,70 @@ matrices o ecuaciones. V@'ease @code{distribute_over}. @deffn {Funci@'on} cabs (@var{expr}) -Devuelve el valor absoluto complejo (m@'odulo complejo) de @var{expr}. +Calcula el valor absoluto de una expresi@'on que representa a un n@'umero +complejo. Al contrario que @code{abs}, la funci@'on @code{cabs} siempre +descompone su argumento en sus partes real e imaginaria. Si @code{x} e +@code{y} representan variables o expresiones reales, la funci@'on @code{cabs} +calcula el valor absoluto de @code{x + %i*y} como +@example + 2 2 + sqrt(y + x ) +@end example +La funci@'on @code{cabs} puede utilizar propiedades como la simetr@'{@dotless{i}}a +de funciones complejas para calcular el valor absoluto de una expresi@'on. + +@code{cabs} no es una funci@'on apropiada para c@'alculos simb@'olicos; en tales +casos, que incluyen la integraci@'on, diferenciaci@'on y l@'{@dotless{i}}mites que +contienen valores absolutos, es mejor utilizar @code{abs}. + +El resultado devuelto por @code{cabs} puede incluir la funci@'on de valor absoluto, +@code{abs}, y el arco tangente, @code{atan2}. + +Cuando se aplica a una lista o matriz, @code{cabs} autom@'aticamente se distribuye +sobre sus elementos. Tambi@'en se distribuye sobre los dos miembros de una +igualdad. + +Para otras formas de operar con n@'umeros complejos, v@'eanse las funciones +@code{rectform}, @code{realpart}, @code{imagpart}, @code{carg}, @code{conjugate} +y @code{polarform}. + +Ejemplos: + +Ejemplos con @code{sqrt} and @code{sin}: + +@example +(%i1) cabs(sqrt(1+%i*x)); + 2 1/4 +(%o1) (x + 1) +(%i2) cabs(sin(x+%i*y)); + 2 2 2 2 +(%o2) sqrt(cos (x) sinh (y) + sin (x) cosh (y)) +@end example + +La simetr@'{@dotless{i}}a especular de la funci@'on de error @code{erf} se utiliza +para calcular el valor absoluto del argumento complejo: + +@example +(%i3) cabs(erf(x+%i*y)); + 2 + (erf(%i y + x) - erf(%i y - x)) +(%o3) sqrt(-------------------------------- + 4 + 2 + (erf(%i y + x) + erf(%i y - x)) + - --------------------------------) + 4 +@end example + +Dado que Maxima reconoce algunas identidades complejas de las funciones de +Bessel, le permite calcular su valor absoluto cuando tiene argumentos +complejos. Un ejemplo para @code{bessel_j}: + +@example +(%i4) cabs(bessel_j(1,%i)); +(%o4) abs(bessel_j(1, %i)) +@end example @end deffn @@ -793,13 +940,6 @@ Si toma el valor @code{false}, se desactivar@'an todas estas simplificaciones. @item @code{logsimp} si vale @code{false}, entonces no se transforma @code{%e} a potencias que contengan logaritmos. -@item @code{lognumer} -si vale @code{true}, entonces los argumentos de @code{log} que sean n@'umeros -decimales negativos en coma flotante se convertir@'an siempre a su valor -absoluto antes de aplicar @code{log}. Si @code{numer} vale tambi@'en @code{true}, -entonces los argumentos enteros negativos de @code{log} tambi@'en se convertir@'an -en su valor absoluto. - @item @code{lognegint} si vale @code{true} se aplica la regla @code{log(-n)} -> @code{log(n)+%i*%pi}, siendo @code{n} un entero positivo. @@ -872,7 +1012,7 @@ Si se hace @code{declare(n,integer);} entonces @code{logcontract(2*a*n*log(x));} @defvr {Variable opcional} logexpand -Valor por defecto: @code{false} +Valor por defecto: @code{true} Si @code{logexpand} vale @code{true} hace que @code{log(a^b)} se convierta en @code{b*log(a)}. Si toma el valor @code{all}, @code{log(a*b)} tambi@'en se @@ -880,7 +1020,7 @@ reducir@'a a @code{log(a)+log(b)}. Si toma el valor @code{super}, entonces @code{log(a/b)} tambi@'en se reducir@'a a @code{log(a)-log(b)}, siendo @code{a/b} racional con @code{a#1}, (la expresi@'on @code{log(1/b)}, para @code{b} entero, se simplifica siempre). Si toma el valor @code{false}, -que es el valor por defecto, se desactivar@'an todas estas simplificaciones. +se desactivar@'an todas estas simplificaciones. @end defvr @@ -892,13 +1032,6 @@ Si @code{lognegint} vale @code{true} se aplica la regla @code{log(-n)} -> @code{ @end defvr -@defvr {Variable opcional} lognumer -Valor por defecto: @code{false} - -Si @code{lognumer} vale @code{true}, entonces los argumentos de @code{log} que sean n@'umeros decimales negativos en coma flotante se convertir@'an siempre a su valor absoluto antes de aplicar @code{log}. Si @code{numer} vale tambi@'en @code{true}, entonces los argumentos enteros negativos de @code{log} tambi@'en se convertir@'an en su valor absoluto. - -@end defvr - @defvr {Variable opcional} logsimp @@ -1480,7 +1613,12 @@ La instrucci@'on @code{demo ("trgsmp.dem")} muestra algunos ejemplos de @code{tr @end deffn @deffn {Funci@'on} trigrat (@var{expr}) -Devuelve una forma can@'onica simplificada cuasi-lineal de una expresi@'on trigonom@'etrica; @var{expr} es una fracci@'on racional que contiene @code{sin}, @code{cos} o @code{tan}, cuyos argumentos son formas lineales respecto de ciertas variables (o kernels) y @code{%pi/@var{n}} (@var{n} entero) con coeficientes enteros. El resultado es una fracci@'on simplificada con el numerador y denominador lineales respecto de @code{sin} y @code{cos}. +Devuelve una forma can@'onica simplificada cuasi-lineal de una expresi@'on trigonom@'etrica; +@var{expr} es una fracci@'on racional que contiene @code{sin}, @code{cos} o @code{tan}, +cuyos argumentos son formas lineales respecto de ciertas variables (o kernels) y @code{%pi/@var{n}} +(@var{n} entero) con coeficientes enteros. El resultado es una fracci@'on simplificada con +el numerador y denominador lineales respecto de @code{sin} y @code{cos}. As@'{@dotless{i}}, + @code{trigrat} devuelve una expresi@'on lineal siempre que sea posible. @c ===beg=== @c trigrat(sin(3*a)/sin(a+%pi/3)); commit b804115e791a3f5bfc089f4ee7d11204397b0896 Author: Mario Rodriguez <rio...@us...> Date: Tue Dec 6 07:22:50 2011 +0100 Change version diff --git a/doc/info/es/maxima.texi b/doc/info/es/maxima.texi index 017409b..fa1ff68 100644 --- a/doc/info/es/maxima.texi +++ b/doc/info/es/maxima.texi @@ -17,7 +17,7 @@ @documentencoding ISO-8859-1 @synindex vr fn @settitle Manual de Maxima -Ver. 5.25 +Ver. 5.26 @c %**end of header @setchapternewpage odd @ifinfo commit 238c947faef88548f67f68c5f1f534a48293173c Author: crategus <cra...@us...> Date: Mon Dec 5 00:11:31 2011 +0100 Work on the translation diff --git a/doc/info/de/Itensor.de.texi b/doc/info/de/Itensor.de.texi index d6f6d52..551a5f3 100755 --- a/doc/info/de/Itensor.de.texi +++ b/doc/info/de/Itensor.de.texi @@ -5,7 +5,7 @@ @c Original : Itensor.texi revision 15.06.2011 @c Translation : Dr. Dieter Kaiser @c Date : 20.11.2010 -@c Revision : 24.09.2011 +@c Revision : 04.12.2011 @c @c This file is part of Maxima -- GPL CAS based on DOE-MACSYMA @c ----------------------------------------------------------------------------- @@ -22,85 +22,41 @@ @section Tensorpakete in Maxima @c ----------------------------------------------------------------------------- -@c Maxima implements symbolic tensor manipulation of two distinct types: -@c component tensor manipulation (@code{ctensor} package) and indicial tensor -@c manipulation (@code{itensor} package). - -In Maxima sind zwei verschiedene Methoden implementiert, um mit Tensoren zu -rechnen. Das Paket @code{ctensor} implementiert das Rechnen in der +Maxima hat drei verschiedene Pakete, um mit Tensoren zu rechnen. Das Paket +@code{ctensor} implementiert das Rechnen mit Tensoren in der Koordinatendarstellung und das Paket @code{itensor} das Rechnen in einer -Indexnotation. - -@c Nota bene: Please see the note on 'new tensor notation' below. - -@c Component tensor manipulation means that geometrical tensor -@c objects are represented as arrays or matrices. Tensor operations such -@c as contraction or covariant differentiation are carried out by -@c actually summing over repeated (dummy) indices with @code{do} statements. -@c That is, one explicitly performs operations on the appropriate tensor -@c components stored in an array or matrix. - -Beim Rechnen in einer Koordinatendarstellung werden Tensoren als Arrays oder -Matrizen dargestellt. Operationen mit Tensoren wie die Tensorverj@"ungung oder -die kovariante Ableitung werden ausgef@"uhrt als Operationen mit den -Komponenten des Tensors, die in einem Array oder einer Matrix gespeichert sind. - -@c Indicial tensor manipulation is implemented by representing -@c tensors as functions of their covariant, contravariant and derivative -@c indices. Tensor operations such as contraction or covariant -@c differentiation are performed by manipulating the indices themselves -@c rather than the components to which they correspond. - -Beim Rechnen in der Indexnotation werden Tensoren als Funktionen ihrer -kovarianten und kontravarianten Indizes sowie den Ableitungen nach den -Komponenten dargestellt. Operationen wie die Tensorverj@"ungung oder die -kovariante Ableitung werden ausgef@"uhrt, in dem die Indizes manipuliert werden. - -@c These two approaches to the treatment of differential, algebraic and -@c analytic processes in the context of Riemannian geometry have various -@c advantages and disadvantages which reveal themselves only through the -@c particular nature and difficulty of the user's problem. However, one -@c should keep in mind the following characteristics of the two -@c implementations: - -Diese beiden Ans@"atze der Behandlung von mathematischen Problemen im -Zusammenhang mit der Riemannschen Geometrie haben verschiedene Vor- und -Nachteile, die sich erst anhand des zu behandelnden Problems und dessen -Schwierigkeitsgrad zeigen. Folgenden Eigenschaften der beiden -Implementierungen sollten beachtet werden: - -@c The representation of tensors and tensor operations explicitly in -@c terms of their components makes @code{ctensor} easy to use. Specification of -@c the metric and the computation of the induced tensors and invariants -@c is straightforward. Although all of Maxima's powerful simplification -@c capacity is at hand, a complex metric with intricate functional and -@c coordinate dependencies can easily lead to expressions whose size is -@c excessive and whose structure is hidden. In addition, many calculations -@c involve intermediate expressions which swell causing programs to -@c terminate before completion. Through experience, a user can avoid -@c many of these difficulties. +Indexnotation. Das Paket @code{atensor} erlaubt die algebraische Manipulation +von Tensoren in verschiedenen Algebren. + +Beim Rechnen in einer Koordinatendarstellung mit dem Paket @code{ctensor} werden +Tensoren als Arrays oder Matrizen dargestellt. Operationen mit Tensoren wie die +Tensorverj@"ungung oder die kovariante Ableitung werden ausgef@"uhrt als +Operationen mit den Komponenten des Tensors, die in einem Array oder einer +Matrix gespeichert sind. + +Beim Rechnen in der Indexnotation mit dem Paket @code{itensor} werden Tensoren +als Funktionen ihrer kovarianten und kontravarianten Indizes sowie den +Ableitungen nach den Komponenten dargestellt. Operationen wie die +Tensorverj@"ungung oder die kovariante Ableitung werden ausgef@"uhrt, in dem die +Indizes manipuliert werden. + +Die beiden genannten Pakete @code{itensor} und @code{ctensor} f@"ur die +Behandlung von mathematischen Problemen im Zusammenhang mit der Riemannschen +Geometrie haben verschiedene Vor- und Nachteile, die sich erst anhand des zu +behandelnden Problems und dessen Schwierigkeitsgrad zeigen. Folgenden +Eigenschaften der beiden Implementierungen sollten beachtet werden: Die Darstellung von Tensoren und Tensoroperationen in einer expliziten -Koordinatendarstellung macht die Nutzung des Paketes @code{ctensor} einfach. -Die Spezifikation der Metrik und die Ableitung von Tensoren sowie von -Invarianten ist unkompliziert. Trotz Maximas Methoden f@"ur die Vereinfachung -von Ausdr@"ucken kann jedoch eine komplexe Metrik mit komplizierten funktionalen +Koordinatendarstellung vereinfacht die Nutzung des Paketes @code{ctensor}. Die +Spezifikation der Metrik und die Ableitung von Tensoren sowie von Invarianten +ist unkompliziert. Trotz Maximas Methoden f@"ur die Vereinfachung von +Ausdr@"ucken kann jedoch eine komplexe Metrik mit komplizierten funktionalen Abh@"angigkeiten der Koordinaten leicht zu sehr gro@ss{}en Ausdr@"ucken f@"uhren, die die Struktur eines Ergebnisses verbergen. Weiterhin k@"onnen Rechnungen zu sehr gro@ss{}en Zwischenergebnisse f@"uhren, die zu einem Programmabbruch f@"uhren, bevor die Rechnung beendet werden kann. Jedoch kann der Nutzer mit einiger Erfahrung viele dieser Probleme vermeiden. -@c Because of the special way in which tensors and tensor operations -@c are represented in terms of symbolic operations on their indices, -@c expressions which in the component representation would be unmanageable can -@c sometimes be greatly simplified by using the special routines for symmetrical -@c objects in @code{itensor}. In this way the structure of a large expression -@c may be more transparent. On the other hand, because of the the special -@c indicial representation in @code{itensor}, in some cases the -@c user may find difficulty with the specification of the metric, function -@c definition, and the evaluation of differentiated "indexed" objects. - Aufgrund der besonderen Weise, wie Tensoren und Tensoroperationen als symbolische Operationen ihrer Indizes dargestellt werden, k@"onnen Ausdr@"ucke, die in einer Koordinatendarstellung sehr unhandlich sind, mit Hilfe spezieller @@ -110,22 +66,34 @@ transparenter sein. Auf der anderen Seite kann die Spezifikation einer Metrik, die Definition von Funktionen und die Auswertung von abgeleiteten indizierten Objekten f@"ur den Nutzer schwierig sein. -The @code{itensor} package can carry out differentiation with respect to an -indexed variable, which allows one to use the package when dealing with -Lagrangian and Hamiltonian formalisms. As it is possible to differentiate a -field Lagrangian with respect to an (indexed) field variable, one can use -Maxima to derive the corresponding Euler-Lagrange equations in indicial form. -These equations can be translated into component tensor (@code{ctensor}) -programs using the @code{ic_convert} function, allowing us to solve the field -equations in a particular coordinate representation, or to recast the equations -of motion in Hamiltonian form. See @code{einhil.dem} and @code{bradic.dem} for -two comprehensive examples. The first, @code{einhil.dem}, uses the -Einstein-Hilbert action to derive the Einstein field tensor in the homogeneous -and isotropic case (Friedmann equations) and the spherically symmetric, static -case (Schwarzschild solution.) The second, @code{bradic.dem}, demonstrates how -to compute the Friedmann equations from the action of Brans-Dicke gravity -theory, and also derives the Hamiltonian associated with the theory's scalar -field. +@c The @code{itensor} package can carry out differentiation with respect to an +@c indexed variable, which allows one to use the package when dealing with +@c Lagrangian and Hamiltonian formalisms. As it is possible to differentiate a +@c field Lagrangian with respect to an (indexed) field variable, one can use +@c Maxima to derive the corresponding Euler-Lagrange equations in indicial form. +@c These equations can be translated into component tensor (@code{ctensor}) +@c programs using the @code{ic_convert} function, allowing us to solve the field +@c equations in a particular coordinate representation, or to recast the +@c equations of motion in Hamiltonian form. See @code{einhil.dem} and +@c @code{bradic.dem} for two comprehensive examples. The first, +@c @code{einhil.dem}, uses the Einstein-Hilbert action to derive the Einstein +@c field tensor in the homogeneous and isotropic case (Friedmann equations) and +@c the spherically symmetric, static case (Schwarzschild solution.) The second, +@c @code{bradic.dem}, demonstrates how to compute the Friedmann equations from +@c the action of Brans-Dicke gravity theory, and also derives the Hamiltonian +@c associated with the theory's scalar field. + +Mit dem Paket @code{itensor} k@"onnen Ableitungen nach einer indizierten +Variablen ausgef@"uhrt werden, wodurch es m@"oglich ist, @code{itensor} auch +f@"ur Probleme im Zusammenhang mit dem Lagrange- oder Hamiltonian-Formalismus +einzusetzen. Da es m@"oglich ist, die Lagrangeschen Feldgleichungen nach einer +indizierten Variablen abzuleiten, k@"onnen zum Beispiel die +Euler-Lagrange-Gleichungen in einer Indexnotation aufgestellt werden. Werden +die Gleichungen mit der Funktion @mref{ic_convert} in eine +Komponentendarstellung f@"ur das Paket @code{ctensor} transformiert, k@"onnen +die Feldgleichungen in einer bestimmten Koordinatendarstellung gel@"ost werden. +Siehe dazu die ausf@"uhrlichen Beispiele in @code{einhil.dem} und +@code{bradic.dem}. @c ----------------------------------------------------------------------------- @page @@ -144,116 +112,218 @@ field. @c ----------------------------------------------------------------------------- @c ----------------------------------------------------------------------------- -@subsubsection New tensor notation +@c @subsubsection New tensor notation @c ----------------------------------------------------------------------------- -Earlier versions of the @code{itensor} package in Maxima used a notation that sometimes -led to incorrect index ordering. Consider the following, for instance: +@c Earlier versions of the @code{itensor} package in Maxima used a notation that +@c sometimes led to incorrect index ordering. Consider the following, for +@c instance: + +@c @example +@c (%i2) imetric(g); +@c (%o2) done +@c (%i3) ishow(g([],[j,k])*g([],[i,l])*a([i,j],[]))$ +@c i l j k +@c (%t3) g g a +@c i j +@c (%i4) ishow(contract(%))$ +@c k l +@c (%t4) a +@c @end example + +@c This result is incorrect unless @code{a} happens to be a symmetric tensor. +@c The reason why this happens is that although @code{itensor} correctly +@c maintains the order within the set of covariant and contravariant indices, +@c once an index is raised or lowered, its position relative to the other set of +@c indices is lost. + +@c To avoid this problem, a new notation has been developed that remains fully +@c compatible with the existing notation and can be used interchangeably. In +@c this notation, contravariant indices are inserted in the appropriate +@c positions in the covariant index list, but with a minus sign prepended. +@c Functions like @code{contract} and @code{ishow} are now aware of this +@c new index notation and can process tensors appropriately. + +@c In this new notation, the previous example yields a correct result: + +@c @example +@c (%i5) ishow(g([-j,-k],[])*g([-i,-l],[])*a([i,j],[]))$ +@c i l j k +@c (%t5) g a g +@c i j +@c (%i6) ishow(contract(%))$ +@c l k +@c (%t6) a +@c @end example + +@c Presently, the only code that makes use of this notation is the @code{lc2kdt} +@c function. Through this notation, it achieves consistent results as it +@c applies the metric tensor to resolve Levi-Civita symbols without resorting +@c to numeric indices. + +@c Since this code is brand new, it probably contains bugs. While it has been +@c tested to make sure that it doesn't break anything using the "old" tensor +@c notation, there is a considerable chance that "new" tensors will fail to +@c interoperate with certain functions or features. These bugs will be fixed +@c as they are encountered @dots{} until then, caveat emptor! + +@c ----------------------------------------------------------------------------- +@c @subsubsection Indicial tensor manipulation +@c ----------------------------------------------------------------------------- + +@c The indicial tensor manipulation package may be loaded by +@c @code{load(itensor)}. Demos are also available: try @code{demo(tensor)}. + +Das Paket @code{itensor} f@"ur das Rechnen mit Tensoren in der Indexnotation +wird mit dem Kommando @code{load(itensor)} geladen. Mit dem Kommando +@code{demo(tensor)} wird eine Liste mit verschiedenen Beispielen angezeigt. + +@c In @code{itensor} a tensor is represented as an "indexed object" . This is a +@c function of 3 groups of indices which represent the covariant, +@c contravariant and derivative indices. The covariant indices are +@c specified by a list as the first argument to the indexed object, and +@c the contravariant indices by a list as the second argument. If the +@c indexed object lacks either of these groups of indices then the empty list +@c @code{[]} is given as the corresponding argument. Thus, @code{g([a,b],[c])} +@c represents an indexed object called @code{g} which has two covariant indices +@c @code{(a,b)}, one contravariant index (@code{c}) and no derivative indices. + +Im Paket @code{itensor} werden Tensoren als indiziertes Objekte dargestellt. +Ein indiziertes Objekt ist eine Funktion mit drei Gruppen an Indizes, die die +kovarianten, kontravarianten und Ableitungsindizes eines Tensors darstellen. +Das erste Argument der Funktion ist eine Liste der kovarianten Indizes und das +zweite Argument die Liste der kontravarianten Indizes. Hat der Tensor keine +entsprechenden Komponenten, dann wird eine leere Liste als Argument angegeben. +Zum Beispiel repr@"asentiert @code{g([a,b], [c]} einen Tensor @code{g}, der zwei +kovariante Indizes @code{[a,b]}, einen kontravarianten Index @code{[c]} und +keinen Ableitungsindex hat. Mit der Funktion @mref{ishow} werden Tensoren +in einer besonderen Schreibweise ausgegeben. + +Beispiele: @example -(%i2) imetric(g); -(%o2) done -(%i3) ishow(g([],[j,k])*g([],[i,l])*a([i,j],[]))$ - i l j k -(%t3) g g a - i j -(%i4) ishow(contract(%))$ - k l -(%t4) a -@end example - -This result is incorrect unless @code{a} happens to be a symmetric tensor. -The reason why this happens is that although @code{itensor} correctly maintains -the order within the set of covariant and contravariant indices, once an -index is raised or lowered, its position relative to the other set of -indices is lost. - -To avoid this problem, a new notation has been developed that remains fully -compatible with the existing notation and can be used interchangeably. In -this notation, contravariant indices are inserted in the appropriate -positions in the covariant index list, but with a minus sign prepended. -Functions like @code{contract} and @code{ishow} are now aware of this -new index notation and can process tensors appropriately. - -In this new notation, the previous example yields a correct result: - -@example -(%i5) ishow(g([-j,-k],[])*g([-i,-l],[])*a([i,j],[]))$ - i l j k -(%t5) g a g - i j -(%i6) ishow(contract(%))$ - l k -(%t6) a -@end example +(%i1) load(itensor)$ -Presently, the only code that makes use of this notation is the @code{lc2kdt} -function. Through this notation, it achieves consistent results as it -applies the metric tensor to resolve Levi-Civita symbols without resorting -to numeric indices. +(%i2) g([a,b], [c]); +(%o2) g([a, b], [c]) + +(%i3) ishow(g([a,b], [c]))$ + c +(%t3) g + a b +@end example + +@c The derivative indices, if they are present, are appended as +@c additional arguments to the symbolic function representing the tensor. +@c They can be explicitly specified by the user or be created in the +@c process of differentiation with respect to some coordinate variable. +@c Since ordinary differentiation is commutative, the derivative indices +@c are sorted alphanumerically, unless @code{iframe_flag} is set to @code{true}, +@c indicating that a frame metric is being used. This canonical ordering makes +@c it possible for Maxima to recognize that, for example, @code{t([a],[b],i,j)} +@c is the same as @code{t([a],[b],j,i)}. Differentiation of an indexed object +@c with respect to some coordinate whose index does not appear as an argument +@c to the indexed object would normally yield zero. This is because +@c Maxima would not know that the tensor represented by the indexed object +@c might depend implicitly on the corresponding coordinate. By modifying the +@c existing Maxima function @code{diff} in @code{itensor}, Maxima now assumes +@c that all indexed objects depend on any variable of differentiation unless +@c otherwise stated. This makes it possible for the summation convention to be +@c extended to derivative indices. It should be noted that @code{itensor} does +@c not possess the capabilities of raising derivative indices, and so they are +@c always treated as covariant. + +Ableitungsindizes werden als weitere Argumente der Funktion hinzugef@"ugt, die +den Tensor repr@"asentiert. Ableitungsindizes k@"onnen vom Nutzer angegeben +oder bei der Ableitung von Tensoren von Maxima hinzugef@"ugt werden. Im +Allgemeinen ist die Differentiation kommutativ, so dass die Reihenfolge der +Ableitungsindizes keine Rolle spielt. Daher werden die Indizes von Maxima +bei der Vereinfachung mit Funktionen wie @mref{rename} alphabetisch sortiert. +Dies ist jedoch nicht der Fall, wenn bewegte Bezugssysteme genutzt werden, was +mit der Optionsvariablen @mref{iframe_flag} angezeigt wird, die in diesem Fall +den Wert @code{true} erh@"alt. Es ist zu beachten, dass mit dem Paket +@code{itensor} Ableitungsindizes nicht angehoben werden k@"onnen und +nur als kovariante Indizes auftreten. -Since this code is brand new, it probably contains bugs. While it has been -tested to make sure that it doesn't break anything using the "old" tensor -notation, there is a considerable chance that "new" tensors will fail to -interoperate with certain functions or features. These bugs will be fixed -as they are encountered @dots{} until then, caveat emptor! +Beispiele: -@c ----------------------------------------------------------------------------- -@subsubsection Indicial tensor manipulation -@c ----------------------------------------------------------------------------- +@example +(%i1) load(itensor)$ -The indicial tensor manipulation package may be loaded by -@code{load(itensor)}. Demos are also available: try @code{demo(tensor)}. - -In @code{itensor} a tensor is represented as an "indexed object" . This is a -function of 3 groups of indices which represent the covariant, -contravariant and derivative indices. The covariant indices are -specified by a list as the first argument to the indexed object, and -the contravariant indices by a list as the second argument. If the -indexed object lacks either of these groups of indices then the empty -list @code{[]} is given as the corresponding argument. Thus, @code{g([a,b],[c])} -represents an indexed object called @code{g} which has two covariant indices -@code{(a,b)}, one contravariant index (@code{c}) and no derivative indices. - -The derivative indices, if they are present, are appended as -additional arguments to the symbolic function representing the tensor. -They can be explicitly specified by the user or be created in the -process of differentiation with respect to some coordinate variable. -Since ordinary differentiation is commutative, the derivative indices -are sorted alphanumerically, unless @code{iframe_flag} is set to @code{true}, -indicating that a frame metric is being used. This canonical ordering makes it -possible for Maxima to recognize that, for example, @code{t([a],[b],i,j)} is -the same as @code{t([a],[b],j,i)}. Differentiation of an indexed object with -respect to some coordinate whose index does not appear as an argument -to the indexed object would normally yield zero. This is because -Maxima would not know that the tensor represented by the indexed -object might depend implicitly on the corresponding coordinate. By -modifying the existing Maxima function @code{diff} in @code{itensor}, Maxima now -assumes that all indexed objects depend on any variable of -differentiation unless otherwise stated. This makes it possible for -the summation convention to be extended to derivative indices. It -should be noted that @code{itensor} does not possess the capabilities of -raising derivative indices, and so they are always treated as -covariant. - -The following functions are available in the tensor package for -manipulating indexed objects. At present, with respect to the -simplification routines, it is assumed that indexed objects do not -by default possess symmetry properties. This can be overridden by -setting the variable @code{allsym[false]} to @code{true}, which will -result in treating all indexed objects completely symmetric in their -lists of covariant indices and symmetric in their lists of -contravariant indices. - -The @code{itensor} package generally treats tensors as opaque objects. -Tensorial equations are manipulated based on algebraic rules, specifically -symmetry and contraction rules. In addition, the @code{itensor} package -understands covariant differentiation, curvature, and torsion. Calculations -can be performed relative to a metric of moving frame, depending on the setting -of the @code{iframe_flag} variable. - -A sample session below demonstrates how to load the @code{itensor} package, -specify the name of the metric, and perform some simple calculations. +(%i2) ishow(t([a,b],[c],j,i))$ + c +(%t2) t + a b,j i +(%i3) ishow(rename(%))$ + c +(%t3) t + a b,i j +(%i4) ishow(t([a,b],[c],j,i) - t([a,b],[c],i,j))$ + c c +(%t4) t - t + a b,j i a b,i j +(%i5) ishow(rename(%))$ +(%t5) 0 +(%i6) iframe_flag:true; +(%o6) true +(%i7) ishow(t([a,b],[c],j,i) - t([a,b],[c],i,j))$ + c c +(%t7) t - t + a b,j i a b,i j +(%i8) ishow(rename(%))$ + c c +(%t8) t - t + a b,j i a b,i j +@end example + +Das folgende Beispiel zeigt einen Ausdruck mit verschiedenen Ableitungen eines +Tensors @code{g}. Ist @code{g} der metrische Tensor, dann entspricht das +Ergebnis der Definition des Christoffel-Symbols der ersten Art. + +@example +(%i1) load(itensor)$ + +(%i2) ishow(1/2*(idiff(g([i,k],[]),j) + idiff(g([j,k],[]),i) + - idiff(g([i,j],[]),k)))$ + g + g - g + j k,i i k,j i j,k +(%t2) ------------------------ + 2 +@end example + +@c The following functions are available in the tensor package for +@c manipulating indexed objects. At present, with respect to the +@c simplification routines, it is assumed that indexed objects do not +@c by default possess symmetry properties. This can be overridden by +@c setting the variable @code{allsym[false]} to @code{true}, which will +@c result in treating all indexed objects completely symmetric in their +@c lists of covariant indices and symmetric in their lists of +@c contravariant indices. + +Tensoren werden standardm@"a@ss{}ig nicht als symmetrisch angenommen. Erh@"alt +die Optionsvariable @mref{allsym} den Wert @code{true}, dann werden alle +Tensoren als symmetrisch in den kovarianten und kontravarianten Indizes +angenommen. + +@c The @code{itensor} package generally treats tensors as opaque objects. +@c Tensorial equations are manipulated based on algebraic rules, specifically +@c symmetry and contraction rules. In addition, the @code{itensor} package +@c understands covariant differentiation, curvature, and torsion. Calculations +@c can be performed relative to a metric of moving frame, depending on the +@c setting of the @code{iframe_flag} variable. + +Das Paket @code{itensor} behandelt Tensoren im Allgemeinen als opake Objekte. +Auf Tensorgleichungen werden algebraischen Regeln insbesondere Symmetrieregeln +und Regeln f@"ur die Tensorverj@"ungung angewendet. Weiterhin kennt +@code{itensor} die kovariante Ableitung, Kr@"ummung und die Torsion. Rechnungen +k@"onnen in bewegten Bezugssystemen ausgef@"uhrt werden. + +@c A sample session below demonstrates how to load the @code{itensor} package, +@c specify the name of the metric, and perform some simple calculations. + +Beispiele: + +Die folgenden Beispiele zeigen einige Anwendungen des Paketes @code{itensor}. @example (%i1) load(itensor); @@ -306,6 +376,7 @@ specify the name of the metric, and perform some simple calculations. (%t15) v - v ifc2 i,j %6 i j (%i16) ishow(radcan(ev(%,ifc2,ifc1)))$ +@group %6 %7 %6 %7 (%t16) - (ifg v ifb + ifg v ifb - 2 v %6 j %7 i %6 i j %7 i,j @@ -313,6 +384,7 @@ specify the name of the metric, and perform some simple calculations. %6 %7 - ifg v ifb )/2 %6 %7 i j +@end group (%i17) ishow(canform(s([i,j],[])-s([j,i])))$ (%t17) s - s i j j i @@ -352,7 +424,7 @@ specify the name of the metric, and perform some simple calculations. @subsubsection Behandlung indizierter Gr@"o@ss{}en @c ----------------------------------------------------------------------------- -@c --- 04.09.2011 DK ----------------------------------------------------------- +@c --- 04.12.2011 DK ----------------------------------------------------------- @anchor{canten} @deffn {Funktion} canten (@var{expr}) @@ -363,11 +435,12 @@ specify the name of the metric, and perform some simple calculations. @c required simplification. Ist vergleichbar mit der Funktion @mref{rename} und vereinfacht den Ausdruck -@var{expr} indem Dummy-Indizes umbenannt und permutiert werden. Die Funktion -@code{rename} kann nur Ausdr@"ucke mit Summen von Tensorprodukten vereinfachen, -in denen keine Ableitungen nach Tensorkomponenten auftreten. Die Funktion -@code{canten} hat dieselben Beschr@"ankungen und sollte nur verwendet werden, -wenn die Funktion @mref{canform} nicht die gew@"unschte Vereinfachung erzielt. +@var{expr} indem gebundene Indizes umbenannt und permutiert werden. Wie die +Funktion @code{rename} kann @code{canten} nur Ausdr@"ucke mit Summen von +Tensorprodukten vereinfachen, in denen keine Ableitungen nach Tensorkomponenten +auftreten. Daher sollte @code{canten} nur verwendet werden, wenn sich mit +der Funktion @mref{canform} nicht die gew@"unschte Vereinfachung eines +Ausdrucks erzielen l@"asst. @c The @code{canten} function returns a mathematically correct result only @c if its argument is an expression that is fully symmetric in its indices. @@ -378,6 +451,10 @@ Das Ergebnis der Funktion @code{canten} ist mathematisch nur korrekt, wenn die Tensoren symmetrisch in ihren Indizes sind. Hat die Optionsvariable @mref{allsym} @emph{nicht} den Wert @code{true}, bricht @code{canten} mit einer Fehlermeldung ab. + +Siehe auch die Funktion @mrefcomma{concan} mit der Ausdr@"ucke mit Tensoren +ebenfalls vereinfacht werden k@"onnen, wobei @code{concan} zus@"atzlich +Tensorverj@"ungungen ausf@"uhrt. @end deffn @c --- 22.08.2011 DK ----------------------------------------------------------- @@ -390,10 +467,10 @@ Fehlermeldung ab. @c objects called @var{name} with @var{m} covariant and @var{n} contravariant @c indices will be renamed to @var{new}. -@"Andert den Namen aller indizierten Objekte im Ausdruck @var{expr} von +@"Andert den Namen aller Tensoren im Ausdruck @var{expr} von @var{old} nach @var{new}. Das Argument @var{old} kann ein Symbol oder eine Liste der Form @code{[@var{name}, @var{m}, @var{n}]} sein. Im letzteren Fall -werden nur die Tensoren zu @var{new} umbenannt, die den Namen @var{name} haben +werden nur die Tensoren zu @var{new} umbenannt, die den Namen @var{name} sowie @var{m} kovariante und @var{n} kontravariante Indizes haben. Beispiel: @@ -549,7 +626,7 @@ Funktion gegeben. @c Similar to @code{canten} but also performs index contraction. Ist vergleichbar mit der Funktion @mrefdot{canten} Im Unterschied zu -@code{canten} wird zus@"atzlich die Tensorverj@"ungung ausgef@"uhrt. +@code{canten} werden zus@"atzlich Tensorverj@"ungungen ausgef@"uhrt. @end deffn @c --- 03.09.2011 DK ----------------------------------------------------------- @@ -1025,19 +1102,67 @@ To reenable the Lisp debugger set *debugger-hook* to nil. @end example @end deffn -@c --- 04.09.2011 DK ----------------------------------------------------------- +@c --- 02.12.2011 DK ----------------------------------------------------------- @anchor{levi_civita} @deffn {Funktion} levi_civita (@var{L}) -@c is the permutation (or Levi-Civita) tensor which yields 1 if -@c the list @var{L} consists of an even permutation of integers, -1 if it -@c consists of an odd permutation, and 0 if some indices in @var{L} are -@c repeated. - Ist der Levi-Civita-Tensor, der auch Permutationstensor genannt wird. Der Tensor hat den Wert @code{1}, wenn die Liste @var{L} eine gerade Permutation -ganzer Zahlen ist, @code{-1} f@"ur eine ungerade Permutation und ansonsten -@code{0}. +ganzer Zahlen ist, den Wert @code{-1} f@"ur eine ungerade Permutation und +ansonsten den Wert @code{0}. + +Beispiel: + +F@"ur eine Kreisbewegung ist die Bahngeschwindigkeit @code{v} das Kreuzprodukt +aus Winkelgeschwindigkeit @code{w} und Ortsvektor @code{r}. Wir haben also +@code{v = w x r}. Hier wird eine tensorielle Schreibweise des Kreuzproduktes +mit dem Levi-Civita-Tensor eingef@"uhrt. Der Ausdruck wird sodann f@"ur die +erste Komponente zu der bekannten Definition des Kreuzproduktes vereinfacht. + +@example +(%i1) load(itensor)$ + +(%i2) ishow(v([],[a])= + 'levi_civita([],[a,b,c])*w([b],[])*r([c],[]))$ +@group + a a b c +(%t2) v = levi_civita w r + b c +@end group +(%i3) ishow(subst([a=1],%))$ + 1 1 b c +(%t3) v = levi_civita w r + b c +(%i4) ishow(ev(%, levi_civita))$ + 1 1 b c +(%t4) v = kdelta w r + 1 2 3 b c +(%i5) ishow(expand(ev(%, kdelta)))$ + 1 b c c b +(%t5) v = kdelta kdelta w r - kdelta kdelta w r + 2 3 b c 2 3 b c +(%i6) ishow(contract(%))$ + 1 +(%t6) v = w r - r w + 2 3 2 3 +@end example + +In diesem Beispiel wird das Spatprodukt von drei Vektoren @code{a}, @code{b} und +@code{b} mit dem Levi-Civita-Tensor definiert und dann vereinfacht. + +@example +(%i1) load(itensor)$ + +(%i2) ishow(levi_civita([],[i,j,k])*a([i],[])*b([j],[])*c([k],[]))$ + i j k +(%t2) kdelta a b c + 1 2 3 i j k +(%i3) ishow(contract(expand(ev(%,kdelta))))$ +(%t3) a b c - b a c - a c b + c a b + b c a + 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 + - c b a + 1 2 3 +@end example @end deffn @c --- 22.08.2011 DK ----------------------------------------------------------- @@ -1143,12 +1268,14 @@ Beispiele: *ichr2([%7,r],[%2])$ (%i4) expr: ishow(%)$ +@group %4 %5 %6 %7 %3 u %1 %2 (%t4) g g ichr2 ichr2 ichr2 ichr2 %1 %4 %2 %3 %5 %6 %7 r %4 %5 %6 %7 u %1 %3 %2 - g g ichr2 ichr2 ichr2 ichr2 %1 %2 %3 %5 %4 %6 %7 r +@end group (%i5) flipflag: true; (%o5) true (%i6) ishow(rename(expr))$ @@ -1193,12 +1320,11 @@ eines Tensors mit einer h@"oheren Stufe als 2 zeigen. Beispiel: @example -(%i1) load(ctensor); -(%o1) /share/tensor/ctensor.mac -(%i2) load(itensor); -(%o2) /share/tensor/itensor.lisp +(%i1) load(ctensor)$ +(%i2) load(itensor)$ (%i3) lg:matrix([sqrt(r/(r-2*m)),0,0,0],[0,r,0,0], [0,0,sin(theta)*r,0],[0,0,0,sqrt((r-2*m)/r)]); +@group [ r ] [ sqrt(-------) 0 0 0 ] [ r - 2 m ] @@ -1210,6 +1336,7 @@ Beispiel: [ r - 2 m ] [ 0 0 0 sqrt(-------) ] [ r ] +@end group (%i4) components(g([i,j],[]),lg); (%o4) done (%i5) showcomps(g([i,j],[])); @@ -1460,7 +1587,7 @@ Beispiele: @c is set to @code{true}. @code{idiff} f@"uhrt Ableitungen nach den Koordinaten einer tensoriellen -Gr@"o@ss{}e aus. Im Unterschied dazu f@"uhrt die Funktion @mref{diff} +Gr@"o@ss{}e aus. Im Unterschied dazu f@"uhrt die Funktion @mref{diff}@w{} Ableitungen nach den unabh@"angigen Variablen aus. Eine tensorielle Gr@"o@ss{}e erh@"alt zus@"atzlich den Index @var{v_1}, der die Ableitung bezeichnet. Mehrfache Indizes f@"ur Ableitungen werden sortiert, au@ss{}er wenn die @@ -1690,6 +1817,7 @@ Kronecker-Delta hat. enth@"alt, die mit der Funktion @code{coord} die Eigenschaft der kovarianten Ableitung erhalten haben. +@need 800 Beispiel: @example @@ -1779,17 +1907,21 @@ enthalten. Im besonderen erkennt @code{simpmetderiv} die folgenden Identit@"aten: @example +@group ab ab ab a g g + g g = (g g ) = (kdelta ) = 0 ,d bc bc,d bc ,d c ,d +@end group @end example -daher +daher ist @example +@group ab ab g g = - g g ,d bc bc,d +@end group @end example und @@ -1881,6 +2013,16 @@ Setzt alle tensoriellen Gr@"o@ss{}en, die genau einen Ableitungsindex haben, auf den Wert Null. @end deffn +@c --- 04.12.2011 DK ----------------------------------------------------------- +@anchor{vect_coords} +@defvr {Optionsvariable} vect_coords +Standardwert: @code{false} + +Tensoren k@"onnen 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 @code{vect_coords} abgelegt sind. +@end defvr + @c ----------------------------------------------------------------------------- @need 1200 @node Tensoren in gekr@"ummten R@"aumen, Begleitende Vielbeine, Tensoranalysis, Funktionen und Variablen f@"ur itensor @@ -2176,6 +2318,35 @@ the @code{iframe_bracket_form} flag is set to @code{false}: @end example @c ----------------------------------------------------------------------------- +@anchor{iframe_flag} +@defvr {Optionsvariable} iframe_flag +Standardwert: @code{false} + +To use frames, you must first set @code{iframe_flag} to @code{true}. This +causes the Christoffel-symbols, @code{ichr1} and @code{ichr2}, to be replaced +by the more general frame connection coefficients @code{icc1} and @code{icc2} +in calculations. Speficially, the behavior of @code{covdiff} and +@code{icurvature} is changed. + +The frame is defined by two tensors: the inverse frame field (@code{ifri}, +the dual basis tetrad), +and the frame metric @code{ifg}. The frame metric is the identity matrix for +orthonormal frames, or the Lorentz metric for orthonormal frames in Minkowski +spacetime. The inverse frame field defines the frame base (unit vectors). +Contraction properties are defined... [truncated message content] |