1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /Ctensor.texi/1.33/Sat Jun 2 00:12:36 2007/-ko/
4 * Introdução a ctensor::
5 * Funções e Variáveis Definidas para ctensor::
8 @node Introdução a ctensor, Funções e Variáveis Definidas para ctensor, ctensor, ctensor
9 @section Introdução a ctensor
11 @code{ctensor} é um pacote de manipulação de componentes. Para usar o pacote
12 @code{ctensor}, digite @code{load("ctensor")}.
13 Para começar uma sessão iterativa com @code{ctensor}, digite @code{csetup()}. Você é
14 primeiramente solicitado a especificar a dimensão a ser manipulada. Se a dimensão
15 for 2, 3 ou 4 então a lista de coordenadas padrão é @code{[x,y]}, @code{[x,y,z]}
16 ou @code{[x,y,z,t]} respectivamente.
17 Esses nomes podem ser mudados através da atribuição de uma nova lista de coordenadas para
18 a variável @code{ct_coords} (descrita abaixo) e o usuário é perguntado sobre
19 isso.Cuidado deve ser tomado para evitar o conflito de nomes de coordenadas
20 com outras definições de objetos.
22 No próximo passo, o usuário informa a métrica ou diretamente ou de um arquivo
23 especificando sua posição ordinal. Como um exemplo de um arquivo de métrica
24 comum, veja @code{share/tensor/metrics.mac}. A métrica está armazenada na matriz
25 LG. Finalmente, o inverso da métrica é calculado e armazenado na matriz
26 UG. Se tem a opção de realizar todos os cálculos em séries de
29 Um protocolo amostra é iniciado abaixo para a métrica estática, esfericamente simétrica
30 (coordenadas padrão) que será aplicadas ao problema de
31 derivação das equações de vácuo de Einstein (que levam à solução de
32 Schwarzschild) como um exemplo. Muitas das funções em @code{ctensor} irão ser
33 mostradas para a métrica padrão como exemplos.
36 (%i1) load("ctensor");
37 (%o1) /usr/local/lib/maxima/share/tensor/ctensor.mac
39 Enter the dimension of the coordinate system:
41 Do you wish to change the coordinate names?
44 1. Enter a new metric?
46 2. Enter a metric from a file?
48 3. Approximate a metric with a Taylor series?
51 Is the matrix 1. Diagonal 2. Symmetric 3. Antisymmetric 4. General
64 Enter functional dependencies with the DEPENDS function or 'N' if none
66 Do you wish to see the metric?
107 (%t9) mcs = - ---------
110 (%t10) mcs = - cos(y) sin(y)
121 @c end concepts ctensor
122 @node Funções e Variáveis Definidas para ctensor, , Introdução a ctensor, ctensor
124 @section Funções e Variáveis Definidas para ctensor
126 @subsection Inicialização e configuração
128 @deffn {Função} csetup ()
129 É uma função no pacote @code{ctensor} (component tensor)
130 que inicializa o pacote e permite ao usuário inserir uma métrica
131 interativamente. Veja @code{ctensor} para mais detalhes.
134 @deffn {Função} cmetric (@var{dis})
135 @deffnx {Função} cmetric ()
136 É uma função no pacote @code{ctensor}
137 que calcula o inverso da métrica e prepara o pacote para
140 Se @code{cframe_flag} for @code{false}, a função calcula a métrica inversa
141 @code{ug} a partir da matriz @code{lg} (definida pelo usuário). O determinante da métrica é
142 também calculado e armazenado na variável @code{gdet}. Mais adiante, o
143 pacote determina se a métrica é diagonal e escolhe o valor
144 de @code{diagmetric} conforme a determinação. Se o argumento opcional @var{dis}
145 estiver presente e não for @code{false}, a saída é mostrada ao usuário pela linha de comando para que ele possa ver
146 o inverso da métrica.
148 Se @code{cframe_flag} for @code{true}, a função espera que o valor de
149 @code{fri} (a matriz moldura inversa) e @code{lfg} (a métrica da moldura) sejam
150 definidas. A partir dessas, a matriz da moldura @code{fr} e a métrica da moldura
151 inversa @code{ufg} são calculadas.
155 @deffn {Função} ct_coordsys (@var{sistema_de_coordenadas}, @var{extra_arg})
156 @deffnx {Função} ct_coordsys (@var{sistema_de_coordenadas})
157 Escolhe um sistema de coordenadas predefinido e uma métrica. O argumento
158 @var{sistema_de_coordenadas} pode ser um dos seguintes símbolos:
162 SYMBOL Dim Coordenadas Descrição/comentários
163 --------------------------------------------------------------------------
164 cartesian2d 2 [x,y] Sist. de coord. cartesianas 2D
165 polar 2 [r,phi] Sist. de coord. Polare
167 confocalelliptic 2 [u,v]
170 cartesian3d 3 [x,y,z] Sist. de coord. cartesianas 3D
171 polarcylindrical 3 [r,theta,z]
172 ellipticcylindrical 3 [u,v,z] Elíptica 2D com Z cilíndrico
173 confocalellipsoidal 3 [u,v,w]
174 bipolarcylindrical 3 [u,v,z] Bipolar 2D com Z cilíndrico
175 paraboliccylindrical 3 [u,v,z] Parabólico 2D com Z cilíndrico
176 paraboloidal 3 [u,v,phi]
179 spherical 3 [r,theta,phi] Sist. de coord. Esféricas
180 oblatespheroidal 3 [u,v,phi]
181 oblatespheroidalsqrt 3 [u,v,phi]
182 prolatespheroidal 3 [u,v,phi]
183 prolatespheroidalsqrt 3 [u,v,phi]
184 ellipsoidal 3 [r,theta,phi]
185 cartesian4d 4 [x,y,z,t] Sist. de coord. 4D
186 spherical4d 4 [r,theta,eta,phi]
187 exteriorschwarzschild 4 [t,r,theta,phi] Métrica de Schwarzschild
188 interiorschwarzschild 4 [t,z,u,v] Métrica de Schwarzschild Interior
189 kerr_newman 4 [t,r,theta,phi] Métrica simétrica axialmente alterada
193 @code{sistema_de_coordenadas} pode também ser uma lista de funções de transformação,
194 seguida por uma lista contendo as varáveis coordenadas. Por exemplo,
195 você pode especificar uma métrica esférica como segue:
199 (%i1) load("ctensor");
200 (%o1) /share/tensor/ctensor.mac
201 (%i2) ct_coordsys([r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),
202 r*sin(theta),[r,theta,phi]]);
204 (%i3) lg:trigsimp(lg);
211 [ 0 0 r cos (theta) ]
213 (%o4) [r, theta, phi]
219 Funções de transformação podem também serem usadas quando @code{cframe_flag} for @code{true}:
223 (%i1) load("ctensor");
224 (%o1) /share/tensor/ctensor.mac
225 (%i2) cframe_flag:true;
227 (%i3) ct_coordsys([r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),
228 r*sin(theta),[r,theta,phi]]);
231 [ cos(phi) cos(theta) - cos(phi) r sin(theta) - sin(phi) r cos(theta) ]
233 (%o4) [ sin(phi) cos(theta) - sin(phi) r sin(theta) cos(phi) r cos(theta) ]
235 [ sin(theta) r cos(theta) 0 ]
238 (%i6) lg:trigsimp(lg);
245 [ 0 0 r cos (theta) ]
249 O argumento opcional @var{extra_arg} pode ser qualquer um dos seguintes:
250 @c LOOKING AT share/tensor/ctensor.mac CIRCA LINE 837, misner IS RECOGNIZED ALSO; WHAT EFFECT DOES IT HAVE ??
252 @code{cylindrical} diz a @code{ct_coordsys} para anexar uma coordenada adicional cilíndrica.
254 @code{minkowski} diz a @code{ct_coordsys} para anexar uma coordenada com assinatura métrica negativa.
256 @code{all} diz a @code{ct_coordsys} para chamar @code{cmetric} e @code{christof(false)} após escolher a métrica.
258 @c GLOBAL VARIABLE verbose IS USED IN ctensor.mac IN JUST THIS ONE CONTEXT
259 Se a variável global @code{verbose} for escolhida para @code{true}, @code{ct_coordsys} mostra os valores de @code{dim}, @code{ct_coords}, e ou @code{lg} ou @code{lfg} e @code{fri}, dependendo do valor de @code{cframe_flag}.
263 @deffn {Função} init_ctensor ()
264 Inicializa o pacote @code{ctensor}.
266 A função @code{init_ctensor} reinicializa o pacote @code{ctensor}. Essa função remove todos os arrays e matrizes usados por @code{ctensor}, coloca todos os sinalizadores de volta a seus valores padrão, retorna @code{dim} para 4, e retorna a métrica da moldura para a métrica da moldura de Lorentz.
271 @subsection Os tensores do espaço curvo
273 O principal propósito do pacote @code{ctensor} é calcular os tensores
274 do espaç(tempo) curvo, mais notavelmente os tensores usados na relatividade
277 Quando uma base métrica é usada, @code{ctensor} pode calcular os seguintes tensores:
283 lcs -- mcs -- ric -- uric
285 \ tracer - ein -- lein
287 riem -- lriem -- weyl
294 @code{ctensor} pode também usar molduras móveis. Quando @code{cframe_flag} for
295 escolhida para @code{true}, os seguintes tensores podem ser calculados:
301 fri -- fr -- lcs -- mcs -- lriem -- ric -- uric
303 lg -- ug | weyl tracer - ein -- lein
311 @deffn {Função} christof (@var{dis})
312 Uma função no pacote @code{ctensor}.
313 Essa função calcula os símbolos de Christoffel de ambos
314 os tipos. O argumento @var{dis} determina quais resultados são para serem imediatamente
315 mostrados. Os símbolos de Christoffel de primeiro e de segundo tipo são
316 armazenados nos arrays @code{lcs[i,j,k]} e @code{mcs[i,j,k]} respectivamente e
317 definidos para serem simétricos nos primeiros dois índices. Se o argumento para
318 @code{christof} for @code{lcs} ou for @code{mcs} então o único valor não nulo de @code{lcs[i,j,k]}
319 ou de @code{mcs[i,j,k]}, respectivamente, será mostrado. Se o argumento for @code{all}
320 então o único valor não nulo de @code{lcs[i,j,k]} e o único valor não nulo de @code{mcs[i,j,k]} serão
321 mostrados. Se o argumento for @code{false} então a exibição dos elementos
322 não acontecerá. Os elementos do array @code{mcs[i,j,k]} são definidos de uma tal
323 maneira que o índice final é contravariante.
326 @deffn {Função} ricci (@var{dis})
327 Uma função no pacote @code{ctensor}.
328 @code{ricci} calcula as componentes contravariantes
329 (simétricas) @code{ric[i,j]} do tensor de Ricci. Se o argumento @var{dis} for @code{true},
330 então as componentes não nulas são mostradas.
333 @deffn {Função} uricci (@var{dis})
334 Essa função primeiro calcula as
335 componentes contravariantes @code{ric[i,j]} do tensor de Ricci.
336 Então o tensor misto de Ricci é calculado usando o
337 tensor métrico contravariante. Se o valor do argumento @var{dis}
338 for @code{true}, então essas componentes mistas, @code{uric[i,j]} (o índice "i" é
339 covariante e o índice "j" é contravariante), serão mostradas
340 diretamente. De outra forma, @code{ricci(false)} irá simplesmente calcular as entradas
341 do array @code{uric[i,j]} sem mostrar os resultados.
344 @deffn {Função} scurvature ()
346 Retorna a curvatura escalar (obtida através da contração
347 do tensor de Ricci) do Riemaniano multiplicado com a métrica dada.
350 @deffn {Função} einstein (@var{dis})
351 Uma função no pacote @code{ctensor}.
352 @code{einstein} calcula o tensor misto de Einstein
353 após os símbolos de Christoffel e o tensor de Ricci terem sido obtidos
354 (com as funções @code{christof} e @code{ricci}). Se o argumento @var{dis} for
355 @code{true}, então os valores não nulos do tensor misto de Einstein @code{ein[i,j]}
356 serão mostrados quando @code{j} for o índice contravariante.
357 A variável @code{rateinstein} fará com que a simplificação racional ocorra sobre
358 esses componentes. Se @code{ratfac} for @code{true} então as componentes irão
359 também ser fatoradas.
362 @deffn {Função} leinstein (@var{dis})
363 Tensor covariante de Einstein. @code{leinstein} armazena o valor do tensor covariante de Einstein no array @code{lein}. O tensor covariante de Einstein é calculado a partir tensor misto de Einstein @code{ein} através da multiplicação desse pelo tensor métrico. Se o argumento @var{dis} for @code{true}, então os valores não nulos do tensor covariante de Einstein são mostrados.
367 @deffn {Função} riemann (@var{dis})
368 Uma função no pacote @code{ctensor}.
369 @code{riemann} calcula o tensor de curvatura de Riemann
370 a partir da métrica dada e correspondendo aos símbolos de Christoffel. As seguintes
371 convenções de índice são usadas:
375 R[i,j,k,l] = R = | - | + | | - | |
376 ijk ij,k ik,j mk ij mj ik
379 Essa notação é consistente com a notação usada por no pacote
380 @code{itensor} e sua função @code{icurvature}.
381 Se o argumento opcional @var{dis} for @code{true},
382 as componentes não nulas @code{riem[i,j,k,l]} serão mostradas.
383 Como com o tensor de Einstein, vários comutadores escolhidos pelo usuário
384 controlam a simplificação de componentes do tensor de Riemann.
385 Se @code{ratriemann} for @code{true}, então
386 simplificação racional será feita. Se @code{ratfac}
387 for @code{true} então
388 cada uma das componentes irá também ser fatorada.
390 Se a variável @code{cframe_flag} for @code{false}, o tensor de Riemann é
391 calculado diretamente dos símbolos de Christoffel. Se @code{cframe_flag} for
392 @code{true}, o tensor covariante de Riemann é calculado primeiro dos
393 coeficientes de campo da moldura.
397 @deffn {Função} lriemann (@var{dis})
398 Tensor covariante de Riemann (@code{lriem[]}).
400 Calcula o tensor covariante de Riemann como o array @code{lriem}. Se o
401 argumento @var{dis} for @code{true}, únicos valores não nulos são mostrados.
403 Se a variável @code{cframe_flag} for @code{true}, o tensor covariante
404 de Riemann é calculado diretamente dos coeficientes de campo da moldura. De outra forma,
405 o tensor (3,1) de Riemann é calculado primeiro.
407 Para informação sobre a ordenação de índice, veja @code{riemann}.
411 @deffn {Função} uriemann (@var{dis})
412 Calcula as componentes contravariantes do tensor de curvatura
413 de Riemann como elementos do array @code{uriem[i,j,k,l]}. Esses são mostrados
414 se @var{dis} for @code{true}.
418 @deffn {Função} rinvariant ()
419 Compõe o invariante de Kretchmann (@code{kinvariant}) obtido através da
420 contração dos tensores
423 lriem[i,j,k,l]*uriem[i,j,k,l].
426 Esse objeto não é automaticamente simplificado devido ao fato de poder ser muito largo.
430 @deffn {Função} weyl (@var{dis})
431 Calcula o tensor conformal de Weyl. Se o argumento @var{dis} for
432 @code{true}, as componentes não nulas @code{weyl[i,j,k,l]} irão ser mostradas para o
433 usuário. De outra forma, essas componentes irão simplesmente serem calculadas e armazenadas.
434 Se o comutador @code{ratweyl} é escolhido para @code{true}, então as componentes irão ser
435 racionalmente simplificadas; se @code{ratfac} for @code{true} então os resultados irão ser
440 @subsection Expansão das séries de Taylor
442 O pacote @code{ctensor} possui a habilidade para truncar resultados assumindo
443 que eles são aproximações das séries de Taylor. Esse comportamenteo é controlado através
444 da variável @code{ctayswitch}; quando escolhida para @code{true}, @code{ctensor} faz uso
445 internamente da função @code{ctaylor} quando simplifica resultados.
447 A função @code{ctaylor} é invocada pelas seguintes funções de @code{ctensor}:
452 ---------------------------------
453 christof() só para mcs
462 @deffn {Função} ctaylor ()
464 A função @code{ctaylor} trunca seus argumentos através da conversão
465 destes para uma série de Taylor usando @code{taylor}, e então chamando
466 @code{ratdisrep}. Isso tem efeito combinado de abandonar termos
467 de ordem mais alta na variável de expansão @code{ctayvar}. A ordem
468 dos termos que podem ser abandonados é definida através de @code{ctaypov}; o
469 ponto em torno do qual a expansão da série é realizada está especificado
472 Como um exemplo, considere uma métrica simples que é uma perturbação da
473 métrica de Minkowski. Sem restrições adicionais, mesmo uma métrica
474 diagonal produz expressões para o tensor de Einstein que são de longe muito
479 (%i1) load("ctensor");
480 (%o1) /share/tensor/ctensor.mac
483 (%i3) derivabbrev:true;
485 (%i4) ct_coords:[t,r,theta,phi];
486 (%o4) [t, r, theta, phi]
487 (%i5) lg:matrix([-1,0,0,0],[0,1,0,0],[0,0,r^2,0],[0,0,0,r^2*sin(theta)^2]);
496 [ 0 0 0 r sin (theta) ]
497 (%i6) h:matrix([h11,0,0,0],[0,h22,0,0],[0,0,h33,0],[0,0,0,h44]);
516 [ 0 0 0 r sin (theta) + h44 l ]
517 (%i9) cmetric(false);
519 (%i10) einstein(false);
542 Todavia, se nós recalcularmos esse exemplo como uma aproximação que é
543 linear na variável @code{l}, pegamos expressões muito simples:
547 (%i14) ctayswitch:true;
555 (%i18) christof(false);
559 (%i20) einstein(false);
579 (%i22) ratsimp(ein[1,1]);
581 (%o22) - (((h11 h22 - h11 ) (l ) r - 2 h33 l r ) sin (theta)
585 - 2 h44 l r - h33 h44 (l ) )/(4 r sin (theta))
592 Essa compatibilidade pode ser útil, por exemplo, quando trabalhamos no limite
593 do campo fraco longe de uma fonte gravitacional.
598 @subsection Campos de moldura
600 Quando a variável @code{cframe_flag} for escolhida para @code{true}, o pacote @code{ctensor}
601 executa seus cálculos usando uma moldura móvel.
603 @deffn {Função} frame_bracket (@var{fr}, @var{fri}, @var{diagframe})
604 O delimitador da moldura (@code{fb[]}).
606 Calcula o delimitador da moldura conforme a seguinte definição:
610 ifb = ( ifri - ifri ) ifr ifr
616 @subsection Classificação Algébrica
618 Um novo recurso (a partir de November de 2004) de @code{ctensor} é sua habilidade para
619 calcular a classificação de Petrov de uma métrica espaço tempo tetradimensional.
620 Para uma demonstração dessa compatibilidade, veja o arquivo
621 @code{share/tensor/petrov.dem}.
623 @deffn {Função} nptetrad ()
624 Calcula um tetrad nulo de Newman-Penrose (@code{np}) e seus índices ascendentes
625 em contrapartida (@code{npi}). Veja @code{petrov} para um exemplo.
627 O tetrad nulo é construído assumindo que uma moldura métrica ortonormal
628 tetradimensional com assinatura métrica (-,+,+,+) está sendo usada.
629 As componentes do tetrad nulo são relacionadas para a matriz moldura inversa
634 np = (fri + fri ) / sqrt(2)
637 np = (fri - fri ) / sqrt(2)
640 np = (fri + %i fri ) / sqrt(2)
643 np = (fri - %i fri ) / sqrt(2)
650 @deffn {Função} psi (@var{dis})
651 Calcula os cinco coeficientes de Newman-Penrose @code{psi[0]}...@code{psi[4]}.
652 Se @code{psi} for escolhida para @code{true}, os coeficientes são mostrados.
653 Veja @code{petrov} para um exemplo.
655 Esses coeficientes são calculados a partir do tensor de Weyl em uma base de coordenada.
656 Se uma base de moldura for usada,o tensor de Weyl é primeiro convertido para a base de
657 coordenada, que pode ser um procedimento computacional expansível. Por essa razão,
658 em alguns casos pode ser mais vantajoso usar uma base de coordenada em
659 primeiro lugar antes que o tensor de Weyl seja calculado. Note todavia, que
660 para a construção de um tetrad nulo de Newman-Penrose é necessário uma base de moldura. Portanto,
661 uma seq@"{u}ência de cálculo expressiva pode começar com uma base de moldura, que
662 é então usada para calcular @code{lg} (calculada automaticamente através de @code{cmetric})
663 e em seguida calcula @code{ug}. Nesse ponto, você pode comutar de volta para uma base de coordenada
664 escolhendo @code{cframe_flag} para @code{false} antes de começar a calcular os
665 símbolos de Christoffel. Mudando para uma base de moldura em um estágio posterior pode retornar
666 resultados inconsistentes, já que você pode terminar com um grande mistura de tensores, alguns
667 calculados em uma base de moldura, alguns em uma base de coordenada, sem nenhum modo para
668 disting@"{u}ir entre os dois tipos.
672 @deffn {Função} petrov ()
673 Calcula a classificação de petrov da métrica caracterizada através de @code{psi[0]}...@code{psi[4]}.
675 Por exemplo, o seguinte demonstra como obter a classificação de Petrov
679 (%i1) load("ctensor");
680 (%o1) /share/tensor/ctensor.mac
681 (%i2) (cframe_flag:true,gcd:spmod,ctrgsimp:true,ratfac:true);
683 (%i3) ct_coordsys(exteriorschwarzschild,all);
688 (%i6) nptetrad(true);
691 [ sqrt(r - 2 m) sqrt(r) ]
692 [ --------------- --------------------- 0 0 ]
693 [ sqrt(2) sqrt(r) sqrt(2) sqrt(r - 2 m) ]
695 [ sqrt(r - 2 m) sqrt(r) ]
696 [ --------------- - --------------------- 0 0 ]
697 [ sqrt(2) sqrt(r) sqrt(2) sqrt(r - 2 m) ]
699 [ r %i r sin(theta) ]
700 [ 0 0 ------- --------------- ]
703 [ r %i r sin(theta) ]
704 [ 0 0 ------- - --------------- ]
707 sqrt(r) sqrt(r - 2 m)
708 (%t7) npi = matrix([- ---------------------, ---------------, 0, 0],
709 sqrt(2) sqrt(r - 2 m) sqrt(2) sqrt(r)
711 sqrt(r) sqrt(r - 2 m)
712 [- ---------------------, - ---------------, 0, 0],
713 sqrt(2) sqrt(r - 2 m) sqrt(2) sqrt(r)
716 [0, 0, ---------, --------------------],
717 sqrt(2) r sqrt(2) r sin(theta)
720 [0, 0, ---------, - --------------------])
721 sqrt(2) r sqrt(2) r sin(theta)
747 A função de classificação Petrov é baseada no algorítmo publicado em
748 "Classifying geometries in general relativity: III Classification in practice"
749 por Pollney, Skea, e d'Inverno, Class. Quant. Grav. 17 2885-2902 (2000).
750 Exceto para alguns casos de teste simples, a implementação não está testada até
751 19 de Dezembro de 2004, e é provável que contenha erros.
756 @subsection Torsão e não metricidade
758 @code{ctensor} possui a habilidade de calcular e incluir coeficientes de torsão e não
759 metricidade nos coeficientes de conecção.
761 Os coeficientes de torsão são calculados a partir de um tensor fornecido pelo usuário
762 @code{tr}, que pode ser um tensor de categoria (2,1). A partir disso, os coeficientes de
763 torsão @code{kt} são calculados de acordo com a seguinte fórmula:
770 kt = -------------------------------
780 Note que somente o tensor de índice misto é calculao e armazenado no
783 Os coeficientes de não metricidade são calculados a partir do vetor de não metricidade
784 fornecido pelo usuário @code{nm}. A partir disso, os coeficientes de não metricidade
785 @code{nmc} são calculados como segue:
790 -nm D - D nm + g nm g
792 nmc = ------------------------------
797 onde D simboliza o delta de Kronecker.
799 Quando @code{ctorsion_flag} for escolhida para @code{true}, os valores de @code{kt}
800 são subtraídos dos coeficientes de conecção indexados mistos calculados através de
801 @code{christof} e armazenados em @code{mcs}. Similarmente, se @code{cnonmet_flag}
802 for escolhida para @code{true}, os valores de @code{nmc} são subtraídos dos
803 coeficientes de conecção indexados mistos.
805 Se necessário, @code{christof} chama as funções @code{contortion} e
806 @code{nonmetricity} com o objetivo de calcular @code{kt} e @code{nm}.
808 @deffn {Função} contortion (@var{tr})
810 Calcula os coeficientes de contorsão de categoria (2,1) a partir do tensor de torsão @var{tr}.
814 @deffn {Função} nonmetricity (@var{nm})
816 Calcula o coeficiente de não metricidade de categoria (2,1) a partir do vetor de
817 não metricidade @var{nm}.
823 @subsection Recursos diversos
825 @deffn {Função} ctransform (@var{M})
826 Uma função no pacote @code{ctensor}
827 que irá executar uma transformação de coordenadas
828 sobre uma matriz simétrica quadrada arbitrária @var{M}. O usuário deve informar as
829 funçãoes que definem a transformação. (Formalmente chamada @code{transform}.)
833 @deffn {Função} findde (@var{A}, @var{n})
835 Retorna uma lista de equações diferenciais únicas (expressões)
836 correspondendo aos elementos do array quadrado @var{n} dimensional
837 @var{A}. Atualmente, @var{n} pode ser 2 ou 3. @code{deindex} é uma lista global
838 contendo os índices de @var{A} correspondendo a essas únicas
839 equações diferenciais. Para o tensor de Einstein (@code{ein}), que
840 é um array dimensional, se calculado para a métrica no exemplo
841 abaixo, @code{findde} fornece as seguintes equações diferenciais independentes:
845 (%i1) load("ctensor");
846 (%o1) /share/tensor/ctensor.mac
847 (%i2) derivabbrev:true;
851 (%i4) lg:matrix([a,0,0,0],[0,x^2,0,0],[0,0,x^2*sin(y)^2,0],[0,0,0,-d]);
861 (%i5) depends([a,d],x);
863 (%i6) ct_coords:[x,y,z,t];
867 (%i8) einstein(false);
871 (%o9) [d x - a d + d, 2 a d d x - a (d ) x - a d d x + 2 a d d
875 - 2 a d , a x + a - a]
878 (%o10) [[1, 1], [2, 2], [4, 4]]
884 @deffn {Função} cograd ()
885 Calcula o gradiente covariante de uma função escalar permitindo ao
886 usuário escolher o nome do vetor correspondente como o exemplo sob
887 @code{contragrad} ilustra.
889 @deffn {Função} contragrad ()
891 Calcula o gradiente contravariante de uma função escalar permitindo
892 @c "vector^F2name^F*" LOOKS LIKE IT NEEDS TO BE FIXED UP, NOT SURE HOW THOUGH
893 ao usuário escolher o nome do vetor correspondente como o exemplo
894 abaixo como ilustra a métrica de Schwarzschild:
898 (%i1) load("ctensor");
899 (%o1) /share/tensor/ctensor.mac
900 (%i2) derivabbrev:true;
902 (%i3) ct_coordsys(exteriorschwarzschild,all);
911 (%i7) contragrad(f,g2);
916 (%o8) [0, -------------, 0, 0]
922 @deffn {Função} dscalar ()
923 Calcula o tensor d'Alembertiano da função escalar assim que
924 as dependências tiverem sido declaradas sobre a função. Po exemplo:
927 (%i1) load("ctensor");
928 (%o1) /share/tensor/ctensor.mac
929 (%i2) derivabbrev:true;
931 (%i3) ct_coordsys(exteriorschwarzschild,all);
935 (%i5) factor(dscalar(p));
937 p r - 2 m p r + 2 p r - 2 m p
939 (%o5) --------------------------------------
945 @deffn {Função} checkdiv ()
947 Calcula a divergência covariante do tensor de segunda categoria misto
948 (cujo primeiro índice deve ser covariante) imprimindo as
949 correspondentes n componentes do campo do vetor (a divergência) onde
950 n = @code{dim}. Se o argumento para a função for @code{g} então a
951 divergência do tensor de Einstein será formada e pode ser zero.
952 Adicionalmente, a divergência (vetor) é dada no array chamado @code{div}.
955 @deffn {Função} cgeodesic (@var{dis})
956 Uma função no pacote @code{ctensor}.
957 @code{cgeodesic} calcula as equações geodésicas de
958 movimento para uma dada métrica. Elas são armazenadas no array @code{geod[i]}. Se
959 o argumento @var{dis} for @code{true} então essas equações são mostradas.
964 @deffn {Função} bdvac (@var{f})
966 Gera as componentes covariantes das equações de campo de vácuo da
967 teoria de gravitação de Brans-Dicke. O campo escalar é especificado
968 através do argumento @var{f}, que pode ser um nome de função (com apóstrofo)
969 com dependências funcionais, e.g., @code{'p(x)}.
971 As componentes de segunda categoria do tensor campo covariante são as componentes de segunda categoria
972 representadas pelo array @code{bd}.
976 @deffn {Função} invariant1 ()
978 Gera o tensor misto de Euler-Lagrange (equações de campo) para a
979 densidade invariante de R^2. As equações de campo são componentes de um
980 array chamado @code{inv1}.
984 @deffn {Função} invariant2 ()
986 *** NOT YET IMPLEMENTED ***
988 Gera o tensor misto de Euler-Lagrange (equações de campo) para a
989 densidade invariante de @code{ric[i,j]*uriem[i,j]}. As equações de campo são as
990 componentes de um array chamado @code{inv2}.
994 @deffn {Função} bimetric ()
996 *** NOT YET IMPLEMENTED ***
998 Gera as euauações de campo da teoria bimétrica de Rosen. As equações
999 de campo são as componentes de um array chamado @code{rosen}.
1003 @subsection Funções utilitárias
1005 @deffn {Função} diagmatrixp (@var{M})
1007 Retorna @code{true} se @var{M} for uma matriz diagonal ou um array (2D).
1011 @deffn {Função} symmetricp (@var{M})
1013 Retorna @code{true} se @var{M} for uma matriz simétrica ou um array (2D).
1017 @deffn {Função} ntermst (@var{f})
1018 Fornece ao usuário um rápido quadro do "tamanho" do tensor duplamente
1019 subscrito (array) @var{f}. Imprime uma lista de dois elementos onde o segundo
1020 elemento corresponde a N-TERMOS de componentes especificadas através dos primeiros
1021 elementos. Nesse caminho, é possível rapidamente encontrar as expressões
1022 não nulas e tentar simplificação.
1026 @deffn {Função} cdisplay (@var{ten})
1027 Mostra todos os elementos do tensor @var{ten}, como representados por
1028 um array multidimensional. Tensores de categoria 0 e 1, assim como outros tipos de
1029 variáveis, são mostrados com @code{ldisplay}. Tensores de categoria 2 são
1030 mostrados como matrizes bidimensionais, enquanto tensores de alta categoria são mostrados
1031 como uma lista de matrizes bidimensionais. Por exemplo, o tensor de Riemann da
1032 métrica de Schwarzschild pode ser visto como:
1035 (%i1) load("ctensor");
1036 (%o1) /share/tensor/ctensor.mac
1039 (%i3) ct_coordsys(exteriorschwarzschild,all);
1041 (%i4) riemann(false);
1043 (%i5) cdisplay(riem);
1047 [ 3 m (r - 2 m) m 2 m ]
1048 [ 0 - ------------- + -- - ---- 0 0 ]
1052 riem = [ m (r - 2 m) ]
1053 1, 1 [ 0 0 ----------- 0 ]
1058 [ 0 0 0 ----------- ]
1063 [ 0 ------------- 0 0 ]
1074 [ 0 0 - ----------- 0 ]
1085 [ 0 0 0 - ----------- ]
1098 [ - ------------ 0 0 0 ]
1100 2, 1 [ r (r - 2 m) ]
1107 [ ------------ 0 0 0 ]
1114 2, 2 [ 0 0 - ------------ 0 ]
1119 [ 0 0 0 - ------------ ]
1126 [ 0 0 ------------ 0 ]
1128 2, 3 [ r (r - 2 m) ]
1137 [ 0 0 0 ------------ ]
1139 2, 4 [ r (r - 2 m) ]
1176 [ 0 0 0 ------- + 1 ]
1184 3, 4 [ 0 0 0 - --- ]
1197 [ ------------- 0 0 0 ]
1208 [ 0 ------------- 0 0 ]
1219 [ 0 0 - --------------- 0 ]
1224 [ - ------------- 0 0 0 ]
1229 riem = [ 0 - ------------- 0 0 ]
1234 [ 0 0 --------------- 0 ]
1244 @deffn {Função} deleten (@var{L}, @var{n})
1245 Retorna uma nova lista consistindo de @var{L} com o @var{n}'ésimo elemento
1249 @subsection Variáveis usadas por @code{ctensor}
1252 @defvr {Variável de opção} dim
1255 Uma opção no pacote @code{ctensor}.
1256 @code{dim} é a dimensão de multiplicação com o
1257 padrão 4. O comando @code{dim: n} irá escolher a dimensão para qualquer outro
1262 @defvr {Variável de opção} diagmetric
1263 Valor padrão: @code{false}
1265 Uma opção no pacote @code{ctensor}.
1266 Se @code{diagmetric} for @code{true} rotinas especiais calculam
1267 todos os objetos geométricos (que possuem o tensor métrico explicitamente)
1268 levando em consideração a diagonalidade da métrica. Tempo de
1269 execuçào reduzido irá, com certeza, resultar dessa escolha. Nota: essa opção é escolhida
1270 automaticamente por @code{csetup} se uma métrica diagonal for especificada.
1274 @defvr {Variável de opção} ctrgsimp
1276 Faz com que simplificações trigonométricas sejam usadas quando tensores forem calculados. Atualmente,
1277 @code{ctrgsimp} afeta somente cálculos envolvendo uma moldura móvel.
1281 @defvr {Variável de opção} cframe_flag
1283 Faz com que cálculos sejam executados relativamente a uma moldura móvel em oposição a
1284 uma métrica holonômica. A moldura é definida através do array da moldura inversa @code{fri}
1285 e da métrica da moldura @code{lfg}. Para cálculos usando uma moldura Cartesiana,
1286 @code{lfg} pode ser a matriz unitária de dimensão apropriada; para
1287 cálculos em uma moldura de Lorentz, @code{lfg} pode ter a assinatura
1292 @defvr {Variável de opção} ctorsion_flag
1294 Faz com que o tensor de contorsão seja incluído no cálculo dos
1295 coeficientes de conecção. O tensor de contorsão por si mesmo é calculado através de
1296 @code{contortion} a partir do tensor @code{tr} fornecido pelo usuário.
1300 @defvr {Variável de opção} cnonmet_flag
1302 Faz com que os coeficientes de não metricidade sejam incluídos no cálculo dos
1303 coeficientes de conecção. Os coeficientes de não metricidade são calculados
1304 a partir do vetor de não metricidade @code{nm} fornecido pelo usuário através da função
1305 @code{nonmetricity}.
1309 @defvr {Variável de opção} ctayswitch
1311 Se escolhida para @code{true}, faz com que alguns cálculos de @code{ctensor} sejam realizados usando
1312 expansões das séries de Taylor. atualmente, @code{christof}, @code{ricci},
1313 @code{uricci}, @code{einstein}, e @code{weyl} levam em conta essa
1318 @defvr {Variável de opção} ctayvar
1320 Variável usada pela expansão de séries de Taylor se @code{ctayswitch} é escolhida para
1325 @defvr {Variável de opção} ctaypov
1327 Maximo expoente usado em expansões de séries de Taylor quando @code{ctayswitch} for
1328 escolhida para @code{true}.
1332 @defvr {Variável de opção} ctaypt
1334 Ponto em torno do qual expansões de séries de Taylor sao realizadas quando
1335 @code{ctayswitch} for escolhida para @code{true}.
1339 @defvr {Variável de sistema} gdet
1341 O determinante do tensor métrico @code{lg}. Calculado através de @code{cmetric} quando
1342 @code{cframe_flag} for escolhido para @code{false}.
1346 @defvr {Variável de opção} ratchristof
1348 Faz com que simplificações racionais sejam aplicadas através de @code{christof}.
1352 @defvr {Variável de opção} rateinstein
1353 Valor padrão: @code{true}
1355 Se @code{true} simplificação racional será
1356 executada sobre as componentes não nulas de tensores de Einstein; se
1357 @code{ratfac} for @code{true} então as componentes irão também ser fatoradas.
1360 @defvr {Variável de opção} ratriemann
1361 Valor padrão: @code{true}
1363 Um dos comutadores que controlam
1364 simplificações dos tensores de Riemann; se @code{true}, então simplificações
1365 racionais irão ser concluídas; se @code{ratfac} for @code{true} então cada uma das
1366 componentes irá também ser fatorada.
1370 @defvr {Variável de opção} ratweyl
1371 Valor padrão: @code{true}
1373 Se @code{true}, esse comutador faz com que a função de @code{weyl}
1374 aplique simplificações racionais aos valores do tensor de Weyl. Se
1375 @code{ratfac} for @code{true}, então as componentes irão também ser fatoradas.
1378 @defvr {Variável} lfg
1379 A moldura métrica covariante. Por padrão, é inicializada para a moldura tetradimensional de Lorentz com assinatura (+,+,+,-). Usada quando @code{cframe_flag} for @code{true}.
1382 @defvr {Variável} ufg
1383 A métrica da moldura inversa. Calculada de @code{lfg} quando @code{cmetric} for chamada enquanto @code{cframe_flag} for escolhida para @code{true}.
1386 @defvr {Variável} riem
1387 O tensor de categoria (3,1) de Riemann. Calculado quando a função @code{riemann} é invocada. Para informação sobre ordenação de índices, veja a descrição de @code{riemann}.
1389 Se @code{cframe_flag} for @code{true}, @code{riem} é calculado a partir do tensor covariante de Riemann @code{lriem}.
1393 @defvr {Variável} lriem
1395 O tensor covariante de Riemann. Calculado através de @code{lriemann}.
1399 @defvr {Variável} uriem
1401 O tensor contravariante de Riemann. Calculado através de @code{uriemann}.
1405 @defvr {Variável} ric
1407 O tensor misto de Ricci. Calculado através de @code{ricci}.
1411 @defvr {Variável} uric
1413 O tensor contravariante de Ricci. Calculado através de @code{uricci}.
1417 @defvr {Variável} lg
1419 O tensor métrico. Esse tensor deve ser especificado (como uma @code{dim} através da matriz @code{dim})
1420 antes que outro cálculo possa ser executado.
1424 @defvr {Variável} ug
1426 O inverso do tensor métrico. Calculado através de @code{cmetric}.
1430 @defvr {Variável} weyl
1432 O tensor de Weyl. Calculado através de @code{weyl}.
1436 @defvr {Variável} fb
1438 Coeficientes delimitadores da moldura, como calculado através de @code{frame_bracket}.
1442 @defvr {Variável} kinvariant
1444 O invariante de Kretchmann. Calculado através de @code{rinvariant}.
1448 @defvr {Variável} np
1450 Um tetrad nulo de Newman-Penrose. Calculado através de @code{nptetrad}.
1454 @defvr {Variável} npi
1456 O índice ascendente do tetrad nulo de Newman-Penrose. Calculado através de @code{nptetrad}.
1457 Definido como @code{ug.np}. O produto @code{np.transpose(npi)} é constante:
1460 (%i39) trigsimp(np.transpose(npi));
1472 @defvr {Variável} tr
1474 Tensor de categoria 3 fornecido pelo usuário representando torsão. Usado por @code{contortion}.
1477 @defvr {Variável} kt
1479 O tensor de contorsão, calculado a partir de @code{tr} através de @code{contortion}.
1482 @defvr {Variável} nm
1484 Vetor de não metrcidade fornecido pelo usuário. Usado por @code{nonmetricity}.
1487 @defvr {Variável} nmc
1489 Os coeficientes de não metricidade, calculados a partir de @code{nm} por @code{nonmetricity}.
1493 @defvr {Variável de sistema} tensorkill
1495 Variável indicando se o pacote tensor foi inicializado. Escolhida e usada por
1496 @code{csetup}, retornada ao seu valor original através de @code{init_ctensor}.
1500 @defvr {Variável de opção} ct_coords
1501 Valor padrão: @code{[]}
1503 Uma opção no pacote @code{ctensor}.
1504 @code{ct_coords} contém uma lista de coordenadas.
1505 Enquanto normalmente definida quando a função @code{csetup} for chamada,
1506 se pode redefinir as coordenadas com a atribuição
1507 @code{ct_coords: [j1, j2, ..., jn]} onde os j's são os novos nomes de coordenadas.
1508 Veja também @code{csetup}.
1512 @subsection Nomes reservados
1514 Os seguintes nomes são usados internamente pelo pacote @code{ctensor} e
1515 não devem ser redefinidos:
1519 ---------------------------------------
1520 _lg() Avalia para @code{lfg} se a moldura métrica for usada,
1521 para @code{lg} de outra forma
1522 _ug() Avalia para @code{ufg} se a moldura métrica for usada,
1523 para @code{ug} de outra forma
1524 cleanup() Remove ítens da lista @code{deindex}
1525 contract4() Usado por psi()
1526 filemet() Usado por csetup() quando lendo a métrica de um arquivo
1527 findde1() Usado por findde()
1528 findde2() Usado por findde()
1529 findde3() Usado por findde()
1530 kdelt() Delta de Kronecker (não generalizado)
1531 newmet() Usado por csetup() para escolher uma métrica
1533 setflags() Usado por init_ctensor()
1536 sermet() Usado por csetup() para informar uma métricacom série
1539 tmetric() Moldura métrica, usado por cmetric() quando
1541 triemann() Tensor de Riemann em base de moldura, usado quando
1543 tricci() Tensor de Ricci em base de moldura, usada quando
1545 trrc() Coeficientes de rotação de Ricci, usado por
1551 @subsection Modificações
1553 Em Novembro de 2004, o pacote @code{ctensor} foi extensivamente reescrito.
1554 Muitas funções e variáveis foram renomeadas com o objetivo de tornar o
1555 pacote com a versão comercial do Macsyma.
1559 Novo Nome Nome Antigo Descrição
1560 --------------------------------------------------------------------
1561 ctaylor() DLGTAYLOR() Expansão da série de Taylor de uma
1562 -----------------------------expressão
1563 lgeod[] EM Equações geodésicas
1564 ein[] G[] Tensor misto de Einstein
1565 ric[] LR[] Tensor misto de Ricci
1566 ricci() LRICCICOM() Calcula o tensor misto de Ricci
1567 ctaypov MINP Maximo expoente em expansões de séries de
1568 -----------------------------Taylor
1569 cgeodesic() MOTION Calcula as equações geodésicas
1570 ct_coords OMEGA Coordenadas métricas
1571 ctayvar PARAM Variável de expansão de séries de
1572 -----------------------------Taylor
1573 lriem[] R[] Tensor covariante de Riemann
1574 uriemann() RAISERIEMANN() Calcula o tensor contravariante de
1575 -----------------------------Riemann
1576 ratriemann RATRIEMAN Simplificação racional do tensor de
1577 -----------------------------Riemann
1578 uric[] RICCI[] Tensor de Ricci contravariante
1579 uricci() RICCICOM() Calcula o tensor de Ricci contravariante
1580 cmetric() SETMETRIC() Escolhe a métrica
1581 ctaypt TAYPT Ponto para expansões de séries de Taylor
1582 ctayswitch TAYSWITCH Escolhe o comutador de séries de Taylor
1583 csetup() TSETUP() Inicia sessão interativa de configuração
1584 ctransform() TTRANSFORM() Transformação de coordenadas interativa
1585 uriem[] UR[] Tensor contravariante de Riemann
1586 weyl[] W[] Tensor (3,1) de Weyl