1 @c /Ctensor.texi/1.31/Sun Jul 30 08:49:51 2006/-ko/
3 * Introdução a ctensor::
4 * Definições para ctensor::
7 @node Introdução a ctensor, Definições para ctensor, ctensor, ctensor
8 @section Introdução a ctensor
10 @code{ctensor} é um pacote de manipulação de
11 componentes. Para usar o pacote @code{ctensor}, digite
12 @code{load("ctensor")}. Para começar uma sessão iterativa
13 com @code{ctensor}, digite @code{csetup()}. O primeiro que será pedido
14 pelo pacote é a dimensão a ser manipulada. Se a dimensão for 2, 3
15 ou 4 então a lista de coordenadas padrão é @code{[x,y]},
16 @code{[x,y,z]} ou @code{[x,y,z,t]} respectivamente. Esses nomes podem
17 ser mudados através da atribuição de uma nova lista de
18 coordenadas para a variável @code{ct_coords} (descrita abaixo) e o
19 utilizador é questionado sobre isso. Deve ter o cuidado de evitar
20 conflitos de nomes de coordenadas com outras definições
23 No próximo passo, o utilizador informa a métrica ou directamente ou
24 de um ficheiro especificando sua posição ordinal. Como
25 um exemplo de um ficheiro de métrica comum, veja
26 @file{share/tensor/metrics.mac}. A métrica é armazenada na matriz
27 LG. Finalmente, o inverso da métrica é calculado e armazenado na
28 matriz UG. Se tem a opção de realizar todos os
29 cálculos em séries de potência.
31 A seguir, mostramos um exemplo de protocolo para a métrica estática,
32 esfericamente simétrica (coordenadas padrão) que será aplicada ao
33 problema de derivação das equações de
34 vácuo de Einstein (que levam à solução de
35 Schwarzschild). Muitas das funções em @code{ctensor}
36 irão ser mostradas como exemplos para a métrica padrão.
39 (%i1) load("ctensor");
40 (%o1) /usr/local/lib/maxima/share/tensor/ctensor.mac
42 Enter the dimension of the coordinate system:
44 Do you wish to change the coordinate names?
47 1. Enter a new metric?
49 2. Enter a metric from a file?
51 3. Approximate a metric with a Taylor series?
54 Is the matrix 1. Diagonal 2. Symmetric 3. Antisymmetric 4. General
67 Enter functional dependencies with the DEPENDS function or 'N' if none
69 Do you wish to see the metric?
110 (%t9) mcs = - ---------
113 (%t10) mcs = - cos(y) sin(y)
124 @c end concepts ctensor
125 @node Definições para ctensor, , Introdução a ctensor, ctensor
127 @section Definições para ctensor
129 @subsection Inicialização e configuração
131 @deffn {Função} csetup ()
132 É uma função no pacote @code{ctensor} (component
133 tensor) que inicializa o pacote e permite ao utilizador inserir uma
134 métrica interativamente. Veja @code{ctensor} para mais detalhes.
137 @deffn {Função} cmetric (@var{dis})
138 @deffnx {Função} cmetric ()
139 É uma função no pacote @code{ctensor} que calcula o
140 inverso da métrica e prepara o pacote para cálculos adiante.
142 Se @code{cframe_flag} for @code{false}, a função calcula
143 a métrica inversa @code{ug} a partir da matriz @code{lg} (definida
144 pelo utilizador). O determinante da métrica é também calculado e
145 armazenado na variável @code{gdet}. Mais adiante, o pacote determina
146 se a métrica é diagonal e escolhe o valor de @code{diagmetric}
147 conforme a determinação. Se o argumento opcional
148 @var{dis} estiver presente e não for @code{false}, a
149 saída é mostrada ao utilizador pela linha de comando
150 para que ele possa ver o inverso da métrica.
152 Se @code{cframe_flag} for @code{true}, a função espera
153 que o valor de @code{fri} (a matriz referencial inversa) e @code{lfg} (a
154 métrica do referencial) sejam definidas. A partir dessas, a matriz do
155 referencial @code{fr} e a métrica do referencial inverso @code{ufg}
160 @deffn {Função} ct_coordsys (@var{sistema_de_coordenadas}, @var{extra_arg})
161 @deffnx {Função} ct_coordsys (@var{sistema_de_coordenadas})
162 Escolhe um sistema de coordenadas predefinido e uma métrica. O
163 argumento @var{sistema_de_coordenadas} pode ser um dos seguintes
168 SYMBOL Dim Coordenadas Descrição/comentários
169 --------------------------------------------------------------------------
170 cartesian2d 2 [x,y] Sist. de coord. cartesianas 2D
171 polar 2 [r,phi] Sist. de coord. Polare
173 confocalelliptic 2 [u,v]
176 cartesian3d 3 [x,y,z] Sist. de coord. cartesianas 3D
177 polarcylindrical 3 [r,theta,z]
178 ellipticcylindrical 3 [u,v,z] Elíptica 2D com Z cilíndrico
179 confocalellipsoidal 3 [u,v,w]
180 bipolarcylindrical 3 [u,v,z] Bipolar 2D com Z cilíndrico
181 paraboliccylindrical 3 [u,v,z] Parabólico 2D com Z cilíndrico
182 paraboloidal 3 [u,v,phi]
185 spherical 3 [r,theta,phi] Sist. de coord. Esféricas
186 oblatespheroidal 3 [u,v,phi]
187 oblatespheroidalsqrt 3 [u,v,phi]
188 prolatespheroidal 3 [u,v,phi]
189 prolatespheroidalsqrt 3 [u,v,phi]
190 ellipsoidal 3 [r,theta,phi]
191 cartesian4d 4 [x,y,z,t] Sist. de coord. 4D
192 spherical4d 4 [r,theta,eta,phi]
193 exteriorschwarzschild 4 [t,r,theta,phi] Métrica de Schwarzschild
194 interiorschwarzschild 4 [t,z,u,v] Métrica de Schwarzschild Interior
195 kerr_newman 4 [t,r,theta,phi] Métrica simétrica axialmente alterada
199 @code{sistema_de_coordenadas} pode também ser uma lista de funções de transformação,
200 seguida por uma lista contendo as varáveis coordenadas. Por exemplo,
201 pode especificar uma métrica esférica como segue:
205 (%i1) load("ctensor");
206 (%o1) /share/tensor/ctensor.mac
207 (%i2) ct_coordsys([r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),
208 r*sin(theta),[r,theta,phi]]);
210 (%i3) lg:trigsimp(lg);
217 [ 0 0 r cos (theta) ]
219 (%o4) [r, theta, phi]
225 Funções de transformação podem também
226 serem usadas quando @code{cframe_flag} for @code{true}:
230 (%i1) load("ctensor");
231 (%o1) /share/tensor/ctensor.mac
232 (%i2) cframe_flag:true;
234 (%i3) ct_coordsys([r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),
235 r*sin(theta),[r,theta,phi]]);
238 [ cos(phi) cos(theta) - cos(phi) r sin(theta) - sin(phi) r cos(theta) ]
240 (%o4) [ sin(phi) cos(theta) - sin(phi) r sin(theta) cos(phi) r cos(theta) ]
242 [ sin(theta) r cos(theta) 0 ]
245 (%i6) lg:trigsimp(lg);
252 [ 0 0 r cos (theta) ]
256 O argumento opcional @var{extra_arg} pode ser qualquer um dos seguintes:
257 @c LOOKING AT share/tensor/ctensor.mac CIRCA LINE 837, misner IS RECOGNIZED ALSO; WHAT EFFECT DOES IT HAVE ??
259 @code{cylindrical} diz a @code{ct_coordsys} para anexar uma coordenada
260 adicional cilíndrica.
262 @code{minkowski} diz a @code{ct_coordsys} para anexar uma coordenada com
263 assinatura métrica negativa.
265 @code{all} diz a @code{ct_coordsys} para chamar @code{cmetric} e
266 @code{christof(false)} após escolher a métrica.
268 @c GLOBAL VARIABLE verbose IS USED IN ctensor.mac IN JUST THIS ONE CONTEXT
269 Se a variável global @code{verbose} for escolhida para @code{true},
270 @code{ct_coordsys} mostra os valores de @code{dim}, @code{ct_coords}, e
271 ou @code{lg} ou @code{lfg} e @code{fri}, dependendo do valor de
276 @deffn {Função} init_ctensor ()
277 Inicializa o pacote @code{ctensor}.
279 A função @code{init_ctensor} reinicializa o pacote
280 @code{ctensor}. Essa função remove todos os arrays e
281 matrizes usados por @code{ctensor}, coloca todos os sinalizadores de
282 volta a seus valores padrão, retorna @code{dim} para 4, e retorna a
283 métrica do referencial para a métrica do referencial de Lorentz.
288 @subsection Os tensores do espaço curvo
290 O principal propósito do pacote @code{ctensor} é calcular os
291 tensores do espaç(tempo) curvo, mais notavelmente os
292 tensores usados na relatividade geral.
294 Quando uma base métrica é usada, @code{ctensor} pode calcular os
301 lcs -- mcs -- ric -- uric
303 \ tracer - ein -- lein
305 riem -- lriem -- weyl
312 @code{ctensor} pode também usar referenciais móveis. Quando
313 @code{cframe_flag} for escolhida para @code{true}, os seguintes tensores
314 podem ser calculados:
320 fri -- fr -- lcs -- mcs -- lriem -- ric -- uric
322 lg -- ug | weyl tracer - ein -- lein
330 @deffn {Função} christof (@var{dis})
331 Uma função no pacote @code{ctensor}. Essa
332 função calcula os símbolos de Christoffel
333 de ambos os tipos. O argumento @var{dis} determina quais resultados
334 são para serem imediatamente mostrados. Os símbolos de
335 Christoffel de primeiro e de segundo tipo são armazenados nos arrays
336 @code{lcs[i,j,k]} e @code{mcs[i,j,k]} respectivamente e definidos para
337 serem simétricos nos primeiros dois índices. Se o
338 argumento para @code{christof} for @code{lcs} ou for @code{mcs} então
339 o único valor não nulo de @code{lcs[i,j,k]} ou de @code{mcs[i,j,k]},
340 respectivamente, será mostrado. Se o argumento for @code{all} então
341 o único valor não nulo de @code{lcs[i,j,k]} e o único valor não
342 nulo de @code{mcs[i,j,k]} serão mostrados. Se o argumento for
343 @code{false} então a exibição dos elementos não
344 acontecerá. Os elementos do array @code{mcs[i,j,k]} são definidos de
345 uma tal maneira que o índice final é contravariante.
348 @deffn {Função} ricci (@var{dis})
349 Uma função no pacote @code{ctensor}. @code{ricci}
350 calcula as componentes contravariantes (simétricas) @code{ric[i,j]} do
351 tensor de Ricci. Se o argumento @var{dis} for @code{true}, então as
352 componentes não nulas são mostradas.
355 @deffn {Função} uricci (@var{dis})
356 Essa função primeiro calcula as componentes
357 contravariantes @code{ric[i,j]} do tensor de Ricci. Então o tensor
358 misto de Ricci é calculado usando o tensor métrico contravariante.
359 Se o valor do argumento @var{dis} for @code{true}, então essas
360 componentes mistas, @code{uric[i,j]} (o índice "i" é
361 covariante e o índice "j" é contravariante), serão
362 mostradas directamente. De outra forma, @code{ricci(false)} irá
363 simplesmente calcular as entradas do array @code{uric[i,j]} sem mostrar
367 @deffn {Função} scurvature ()
369 Retorna a curvatura escalar (obtida através da
370 contração do tensor de Ricci) do Riemaniano multiplicado
374 @deffn {Função} einstein (@var{dis})
375 Uma função no pacote @code{ctensor}. @code{einstein}
376 calcula o tensor misto de Einstein após os símbolos de
377 Christoffel e o tensor de Ricci terem sido obtidos (com as
378 funções @code{christof} e @code{ricci}). Se o argumento
379 @var{dis} for @code{true}, então os valores não nulos do tensor
380 misto de Einstein @code{ein[i,j]} serão mostrados quando @code{j} for
381 o índice contravariante. A variável @code{rateinstein}
382 fará com que a simplificação racional ocorra sobre
383 esses componentes. Se @code{ratfac} for @code{true} então as
384 componentes irão também ser factoradas.
387 @deffn {Função} leinstein (@var{dis})
388 Tensor covariante de Einstein. @code{leinstein} armazena o valor do
389 tensor covariante de Einstein no array @code{lein}. O tensor covariante
390 de Einstein é calculado a partir tensor misto de Einstein @code{ein}
391 através da multiplicação desse pelo tensor
392 métrico. Se o argumento @var{dis} for @code{true}, então os valores
393 não nulos do tensor covariante de Einstein são mostrados.
397 @deffn {Função} riemann (@var{dis})
398 Uma função no pacote @code{ctensor}. @code{riemann}
399 calcula o tensor de curvatura de Riemann a partir da métrica dada e
400 correspondendo aos símbolos de Christoffel. As seguintes
401 convenções de índice são usadas:
405 R[i,j,k,l] = R = | - | + | | - | |
406 ijk ij,k ik,j mk ij mj ik
409 Essa notação é consistente com a
410 notação usada por no pacote @code{itensor} e sua
411 função @code{icurvature}. Se o argumento opcional
412 @var{dis} for @code{true}, as componentes não nulas
413 @code{riem[i,j,k,l]} serão mostradas. Como com o tensor de Einstein,
414 vários comutadores escolhidos pelo utilizador controlam a
415 simplificação de componentes do tensor de Riemann. Se
416 @code{ratriemann} for @code{true}, então simplificação
417 racional será feita. Se @code{ratfac} for @code{true} então cada uma
418 das componentes irá também ser factorada.
420 Se a variável @code{cframe_flag} for @code{false}, o tensor de Riemann
421 é calculado directamente dos símbolos de Christoffel. Se
422 @code{cframe_flag} for @code{true}, o tensor covariante de Riemann é
423 calculado primeiro dos coeficientes de campo do referencial.
427 @deffn {Função} lriemann (@var{dis})
428 Tensor covariante de Riemann (@code{lriem[]}).
430 Calcula o tensor covariante de Riemann como o array @code{lriem}. Se o
431 argumento @var{dis} for @code{true}, únicos valores não nulos são
434 Se a variável @code{cframe_flag} for @code{true}, o tensor covariante
435 de Riemann é calculado directamente dos coeficientes de campo do
436 referencial. De outra forma, o tensor (3,1) de Riemann é calculado
439 Para informação sobre a ordenação de
440 índice, veja @code{riemann}.
444 @deffn {Função} uriemann (@var{dis})
445 Calcula as componentes contravariantes do tensor de curvatura
446 de Riemann como elementos do array @code{uriem[i,j,k,l]}. Esses são
447 mostrados se @var{dis} for @code{true}.
451 @deffn {Função} rinvariant ()
452 Compõe o invariante de Kretchmann (@code{kinvariant}) obtido através
453 da contração dos tensores
456 lriem[i,j,k,l]*uriem[i,j,k,l].
459 Esse objecto não é automaticamente simplificado devido ao facto de
460 poder ser muito largo.
464 @deffn {Função} weyl (@var{dis})
465 Calcula o tensor conformal de Weyl. Se o argumento @var{dis} for
466 @code{true}, as componentes não nulas @code{weyl[i,j,k,l]} irão ser
467 mostradas para o utilizador. De outra forma, essas componentes irão
468 simplesmente serem calculadas e armazenadas. Se o comutador
469 @code{ratweyl} é escolhido para @code{true}, então as componentes
470 irão ser racionalmente simplificadas; se @code{ratfac} for @code{true}
471 então os resultados irão ser factorados também.
475 @subsection Expansão das séries de Taylor
477 O pacote @code{ctensor} possui a habilidade para truncar resultados
478 assumindo que eles são aproximações das séries de
479 Taylor. Esse comportamenteo é controlado através da variável
480 @code{ctayswitch}; quando escolhida para @code{true}, @code{ctensor} faz
481 uso internamente da função @code{ctaylor} quando
482 simplifica resultados.
484 A função @code{ctaylor} é invocada pelas seguintes funções de @code{ctensor}:
489 ---------------------------------
490 christof() só para mcs
499 @deffn {Função} ctaylor ()
501 A função @code{ctaylor} trunca seus argumentos através
502 da conversão destes para uma série de Taylor usando @code{taylor}, e
503 então chamando @code{ratdisrep}. Isso tem efeito combinado de
504 abandonar termos de ordem mais alta na variável de expansão
505 @code{ctayvar}. A ordem dos termos que podem ser abandonados é
506 definida através de @code{ctaypov}; o ponto em torno do qual a
507 expansão da série é realizada está especificado em
510 Como um exemplo, considere uma métrica simples que é uma
511 perturbação da métrica de Minkowski. Sem
512 restrições adicionais, mesmo uma métrica diagonal
513 produz expressões para o tensor de Einstein que são de longe muito
518 (%i1) load("ctensor");
519 (%o1) /share/tensor/ctensor.mac
522 (%i3) derivabbrev:true;
524 (%i4) ct_coords:[t,r,theta,phi];
525 (%o4) [t, r, theta, phi]
526 (%i5) lg:matrix([-1,0,0,0],[0,1,0,0],[0,0,r^2,0],[0,0,0,r^2*sin(theta)^2]);
535 [ 0 0 0 r sin (theta) ]
536 (%i6) h:matrix([h11,0,0,0],[0,h22,0,0],[0,0,h33,0],[0,0,0,h44]);
555 [ 0 0 0 r sin (theta) + h44 l ]
556 (%i9) cmetric(false);
558 (%i10) einstein(false);
581 Todavia, se nós recalcularmos esse exemplo como uma
582 aproximação que é linear na variável @code{l},
583 pegamos expressões muito simples:
587 (%i14) ctayswitch:true;
595 (%i18) christof(false);
599 (%i20) einstein(false);
619 (%i22) ratsimp(ein[1,1]);
621 (%o22) - (((h11 h22 - h11 ) (l ) r - 2 h33 l r ) sin (theta)
625 - 2 h44 l r - h33 h44 (l ) )/(4 r sin (theta))
632 Essa compatibilidade pode ser útil, por exemplo, quando trabalhamos no
633 limite do campo fraco longe de uma fonte gravitacional.
638 @subsection Campos de referencial
640 Quando a variável @code{cframe_flag} for escolhida para @code{true}, o
641 pacote @code{ctensor} executa seus cálculos usando um referencial
644 @deffn {Função} frame_bracket (@var{fr}, @var{fri}, @var{diagframe})
645 O delimitador do referencial (@code{fb[]}).
647 Calcula o delimitador do referencial conforme a seguinte
652 ifb = ( ifri - ifri ) ifr ifr
658 @subsection Classificação Algébrica
660 Um novo recurso (a partir de November de 2004) de @code{ctensor} é sua habilidade para
661 calcular a classificação de Petrov de uma métrica espaço tempo tetradimensional.
662 Para uma demonstração dessa compatibilidade, veja o ficheiro
663 @code{share/tensor/petrov.dem}.
665 @deffn {Função} nptetrad ()
666 Calcula um tetrad nulo de Newman-Penrose (@code{np}) e seus índices ascendentes
667 em contrapartida (@code{npi}). Veja @code{petrov} para um exemplo.
669 O tetrad nulo é construído assumindo que um referencial
670 métrico ortonormal tetradimensional com assinatura métrica (-,+,+,+)
671 está sendo usada. As componentes do tetrad nulo são relacionadas
672 para a matriz referencial inversa como segue:
676 np = (fri + fri ) / sqrt(2)
679 np = (fri - fri ) / sqrt(2)
682 np = (fri + %i fri ) / sqrt(2)
685 np = (fri - %i fri ) / sqrt(2)
692 @deffn {Função} psi (@var{dis})
693 Calcula os cinco coeficientes de Newman-Penrose @code{psi[0]}...@code{psi[4]}.
694 Se @code{psi} for escolhida para @code{true}, os coeficientes são mostrados.
695 Veja @code{petrov} para um exemplo.
697 Esses coeficientes são calculados a partir do tensor de Weyl em uma
698 base de coordenada. Se uma base de referencial for usada, o tensor de Weyl
699 é primeiro convertido para a base de coordenada, que pode ser um
700 procedimento computacional expansível. Por essa razão,
701 em alguns casos pode ser mais vantajoso usar uma base de coordenada em
702 primeiro lugar antes que o tensor de Weyl seja calculado. Note todavia,
703 que para a construção de um tetrad nulo de
704 Newman-Penrose é necessário uma base de referencial. Portanto, uma
705 sequência de cálculo expressiva pode começar com uma
706 base de referencial, que é então usada para calcular @code{lg}
707 (calculada automaticamente através de @code{cmetric}) e em seguida
708 calcula @code{ug}. Nesse ponto, pode comutar de volta para uma base de
709 coordenada escolhendo @code{cframe_flag} para @code{false} antes de
710 começar a calcular os símbolos de
711 Christoffel. Mudando para uma base de referencial num estágio posterior
712 pode retornar resultados inconsistentes, já que pode terminar com uma
713 grande mistura de tensores, alguns calculados numa base de referencial, e
714 outros numa base de coordenada, sem nenhum modo para distinguir entre os
719 @deffn {Função} petrov ()
720 Calcula a classificação de petrov da métrica caracterizada através de @code{psi[0]}...@code{psi[4]}.
722 Por exemplo, o seguinte demonstra como obter a classificação de Petrov
726 (%i1) load("ctensor");
727 (%o1) /share/tensor/ctensor.mac
728 (%i2) (cframe_flag:true,gcd:spmod,ctrgsimp:true,ratfac:true);
730 (%i3) ct_coordsys(exteriorschwarzschild,all);
735 (%i6) nptetrad(true);
738 [ sqrt(r - 2 m) sqrt(r) ]
739 [ --------------- --------------------- 0 0 ]
740 [ sqrt(2) sqrt(r) sqrt(2) sqrt(r - 2 m) ]
742 [ sqrt(r - 2 m) sqrt(r) ]
743 [ --------------- - --------------------- 0 0 ]
744 [ sqrt(2) sqrt(r) sqrt(2) sqrt(r - 2 m) ]
746 [ r %i r sin(theta) ]
747 [ 0 0 ------- --------------- ]
750 [ r %i r sin(theta) ]
751 [ 0 0 ------- - --------------- ]
754 sqrt(r) sqrt(r - 2 m)
755 (%t7) npi = matrix([- ---------------------, ---------------, 0, 0],
756 sqrt(2) sqrt(r - 2 m) sqrt(2) sqrt(r)
758 sqrt(r) sqrt(r - 2 m)
759 [- ---------------------, - ---------------, 0, 0],
760 sqrt(2) sqrt(r - 2 m) sqrt(2) sqrt(r)
763 [0, 0, ---------, --------------------],
764 sqrt(2) r sqrt(2) r sin(theta)
767 [0, 0, ---------, - --------------------])
768 sqrt(2) r sqrt(2) r sin(theta)
794 A função de classificação Petrov é baseada no algoritmo publicado em
795 "Classifying geometries in general relativity: III Classification in practice"
796 por Pollney, Skea, e d'Inverno, Class. Quant. Grav. 17 2885-2902 (2000).
797 Exceto para alguns casos de teste simples, a implementação não está testada até
798 19 de Dezembro de 2004, e é provável que contenha erros.
803 @subsection Torsão e não metricidade
805 @code{ctensor} possui a habilidade de calcular e incluir coeficientes de torsão e não
806 metricidade nos coeficientes de conecção.
808 Os coeficientes de torsão são calculados a partir de um tensor fornecido pelo utilizador
809 @code{tr}, que pode ser um tensor de categoria (2,1). A partir disso, os coeficientes de
810 torsão @code{kt} são calculados de acordo com a seguinte fórmula:
817 kt = -------------------------------
827 Note que somente o tensor de índice misto é calculao e armazenado no
830 Os coeficientes de não metricidade são calculados a partir do vector de não metricidade
831 fornecido pelo utilizador @code{nm}. A partir disso, os coeficientes de não metricidade
832 @code{nmc} são calculados como segue:
837 -nm D - D nm + g nm g
839 nmc = ------------------------------
844 onde D simboliza o delta de Kronecker.
846 Quando @code{ctorsion_flag} for escolhida para @code{true}, os valores de @code{kt}
847 são subtraídos dos coeficientes de conecção indexados mistos calculados através de
848 @code{christof} e armazenados em @code{mcs}. Similarmente, se @code{cnonmet_flag}
849 for escolhida para @code{true}, os valores de @code{nmc} são subtraídos dos
850 coeficientes de conecção indexados mistos.
852 Se necessário, @code{christof} chama as funções @code{contortion} e
853 @code{nonmetricity} com o objectivo de calcular @code{kt} e @code{nm}.
855 @deffn {Função} contortion (@var{tr})
857 Calcula os coeficientes de contorsão de categoria (2,1) a partir do tensor de torsão @var{tr}.
861 @deffn {Função} nonmetricity (@var{nm})
863 Calcula o coeficiente de não metricidade de categoria (2,1) a partir do vector de
864 não metricidade @var{nm}.
870 @subsection Recursos diversos
872 @deffn {Função} ctransform (@var{M})
873 Uma função no pacote @code{ctensor}
874 que irá executar uma transformação de coordenadas
875 sobre uma matriz simétrica quadrada arbitrária @var{M}. O utilizador deve informar as
876 funçãoes que definem a transformação. (Formalmente chamada @code{transform}.)
880 @deffn {Função} findde (@var{A}, @var{n})
882 Retorna uma lista de equações diferenciais únicas (expressões)
883 correspondendo aos elementos do array quadrado @var{n} dimensional
884 @var{A}. Actualmente, @var{n} pode ser 2 ou 3. @code{deindex} é uma lista global
885 contendo os índices de @var{A} correspondendo a essas únicas
886 equações diferenciais. Para o tensor de Einstein (@code{ein}), que
887 é um array dimensional, se calculado para a métrica no exemplo
888 abaixo, @code{findde} fornece as seguintes equações diferenciais independentes:
892 (%i1) load("ctensor");
893 (%o1) /share/tensor/ctensor.mac
894 (%i2) derivabbrev:true;
898 (%i4) lg:matrix([a,0,0,0],[0,x^2,0,0],[0,0,x^2*sin(y)^2,0],[0,0,0,-d]);
908 (%i5) depends([a,d],x);
910 (%i6) ct_coords:[x,y,z,t];
914 (%i8) einstein(false);
918 (%o9) [d x - a d + d, 2 a d d x - a (d ) x - a d d x + 2 a d d
922 - 2 a d , a x + a - a]
925 (%o10) [[1, 1], [2, 2], [4, 4]]
931 @deffn {Função} cograd ()
932 Calcula o gradiente covariante de uma função escalar permitindo ao
933 utilizador escolher o nome do vector correspondente como o exemplo sob
934 @code{contragrad} ilustra.
936 @deffn {Função} contragrad ()
938 Calcula o gradiente contravariante de uma função escalar permitindo
939 @c "vector^F2name^F*" LOOKS LIKE IT NEEDS TO BE FIXED UP, NOT SURE HOW THOUGH
940 ao utilizador escolher o nome do vector correspondente como o exemplo
941 abaixo como ilustra a métrica de Schwarzschild:
945 (%i1) load("ctensor");
946 (%o1) /share/tensor/ctensor.mac
947 (%i2) derivabbrev:true;
949 (%i3) ct_coordsys(exteriorschwarzschild,all);
958 (%i7) contragrad(f,g2);
963 (%o8) [0, -------------, 0, 0]
969 @deffn {Função} dscalar ()
970 Calcula o tensor d'Alembertiano da função escalar assim que
971 as dependências tiverem sido declaradas sobre a função. Po exemplo:
974 (%i1) load("ctensor");
975 (%o1) /share/tensor/ctensor.mac
976 (%i2) derivabbrev:true;
978 (%i3) ct_coordsys(exteriorschwarzschild,all);
982 (%i5) factor(dscalar(p));
984 p r - 2 m p r + 2 p r - 2 m p
986 (%o5) --------------------------------------
992 @deffn {Função} checkdiv ()
994 Calcula a divergência covariante do tensor de segunda categoria misto
995 (cujo primeiro índice deve ser covariante) imprimindo as
996 correspondentes n componentes do campo do vector (a divergência) onde
997 n = @code{dim}. Se o argumento para a função for @code{g} então a
998 divergência do tensor de Einstein será formada e pode ser zero.
999 Adicionalmente, a divergência (vector) é dada no array chamado @code{div}.
1002 @deffn {Função} cgeodesic (@var{dis})
1003 Uma função no pacote @code{ctensor}.
1004 @code{cgeodesic} calcula as equações geodésicas de
1005 movimento para uma dada métrica. Elas são armazenadas no array @code{geod[i]}. Se
1006 o argumento @var{dis} for @code{true} então essas equações são mostradas.
1011 @deffn {Função} bdvac (@var{f})
1013 Gera as componentes covariantes das equações de campo de vácuo da
1014 teoria de gravitação de Brans-Dicke. O campo escalar é especificado
1015 através do argumento @var{f}, que pode ser um nome de função (com apóstrofo)
1016 com dependências funcionais, e.g., @code{'p(x)}.
1018 As componentes de segunda categoria do tensor campo covariante são as componentes de segunda categoria
1019 representadas pelo array @code{bd}.
1023 @deffn {Função} invariant1 ()
1025 Gera o tensor misto de Euler-Lagrange (equações de campo) para a
1026 densidade invariante de R^2. As equações de campo são componentes de um
1027 array chamado @code{inv1}.
1031 @deffn {Função} invariant2 ()
1033 *** NOT YET IMPLEMENTED ***
1035 Gera o tensor misto de Euler-Lagrange (equações de campo) para a
1036 densidade invariante de @code{ric[i,j]*uriem[i,j]}. As equações de campo são as
1037 componentes de um array chamado @code{inv2}.
1041 @deffn {Função} bimetric ()
1043 *** NOT YET IMPLEMENTED ***
1045 Gera as euauações de campo da teoria bimétrica de Rosen. As equações
1046 de campo são as componentes de um array chamado @code{rosen}.
1050 @subsection Funções utilitárias
1052 @deffn {Função} diagmatrixp (@var{M})
1054 Retorna @code{true} se @var{M} for uma matriz diagonal ou um array (2D).
1058 @deffn {Função} symmetricp (@var{M})
1060 Retorna @code{true} se @var{M} for uma matriz simétrica ou um array (2D).
1064 @deffn {Função} ntermst (@var{f})
1065 Fornece ao utilizador um rápido quadro do "tamanho" do tensor duplamente
1066 subscrito (array) @var{f}. Imprime uma lista de dois elementos onde o segundo
1067 elemento corresponde a N-TERMOS de componentes especificadas através dos primeiros
1068 elementos. Nesse caminho, é possível rapidamente encontrar as expressões
1069 não nulas e tentar simplificação.
1073 @deffn {Função} cdisplay (@var{ten})
1074 Mostra todos os elementos do tensor @var{ten}, como representados por
1075 um array multidimensional. Tensores de categoria 0 e 1, assim como outros tipos de
1076 variáveis, são mostrados com @code{ldisplay}. Tensores de categoria 2 são
1077 mostrados como matrizes bidimensionais, enquanto tensores de alta categoria são mostrados
1078 como uma lista de matrizes bidimensionais. Por exemplo, o tensor de Riemann da
1079 métrica de Schwarzschild pode ser visto como:
1082 (%i1) load("ctensor");
1083 (%o1) /share/tensor/ctensor.mac
1086 (%i3) ct_coordsys(exteriorschwarzschild,all);
1088 (%i4) riemann(false);
1090 (%i5) cdisplay(riem);
1094 [ 3 m (r - 2 m) m 2 m ]
1095 [ 0 - ------------- + -- - ---- 0 0 ]
1099 riem = [ m (r - 2 m) ]
1100 1, 1 [ 0 0 ----------- 0 ]
1105 [ 0 0 0 ----------- ]
1110 [ 0 ------------- 0 0 ]
1121 [ 0 0 - ----------- 0 ]
1132 [ 0 0 0 - ----------- ]
1145 [ - ------------ 0 0 0 ]
1147 2, 1 [ r (r - 2 m) ]
1154 [ ------------ 0 0 0 ]
1161 2, 2 [ 0 0 - ------------ 0 ]
1166 [ 0 0 0 - ------------ ]
1173 [ 0 0 ------------ 0 ]
1175 2, 3 [ r (r - 2 m) ]
1184 [ 0 0 0 ------------ ]
1186 2, 4 [ r (r - 2 m) ]
1223 [ 0 0 0 ------- + 1 ]
1231 3, 4 [ 0 0 0 - --- ]
1244 [ ------------- 0 0 0 ]
1255 [ 0 ------------- 0 0 ]
1266 [ 0 0 - --------------- 0 ]
1271 [ - ------------- 0 0 0 ]
1276 riem = [ 0 - ------------- 0 0 ]
1281 [ 0 0 --------------- 0 ]
1291 @deffn {Função} deleten (@var{L}, @var{n})
1292 Retorna uma nova lista consistindo de @var{L} com o @var{n}'ésimo elemento
1296 @subsection Variáveis usadas por @code{ctensor}
1299 @defvr {Variável de opção} dim
1300 Valor por omissão: 4
1302 Uma opção no pacote @code{ctensor}.
1303 @code{dim} é a dimensão de multiplicação com o
1304 padrão 4. O comando @code{dim: n} irá escolher a dimensão para qualquer outro
1309 @defvr {Variável de opção} diagmetric
1310 Valor por omissão: @code{false}
1312 Uma opção no pacote @code{ctensor}.
1313 Se @code{diagmetric} for @code{true} rotinas especiais calculam
1314 todos os objectos geométricos (que possuem o tensor métrico explicitamente)
1315 levando em consideração a diagonalidade da métrica. Tempo de
1316 execuçào reduzido irá, com certeza, resultar dessa escolha. Nota: essa opção é escolhida
1317 automaticamente por @code{csetup} se uma métrica diagonal for especificada.
1321 @defvr {Variável de opção} ctrgsimp
1323 Faz com que simplificações trigonométricas sejam usadas quando tensores forem calculados. Actualmente,
1324 @code{ctrgsimp} afecta somente cálculos envolvendo um referencial móvel.
1328 @defvr {Variável de opção} cframe_flag
1330 Faz com que cálculos sejam executados relativamente a um referencial
1331 móvel em oposição a uma métrica holonómica. O
1332 referencial é definido através do array do referencial inverso
1333 @code{fri} e da métrica do referencial @code{lfg}. Para cálculos
1334 usando um referencial Cartesiano, @code{lfg} pode ser a matriz
1335 unitária de dimensão apropriada; para cálculos num referencial
1336 de Lorentz, @code{lfg} pode ter a assinatura apropriada.
1340 @defvr {Variável de opção} ctorsion_flag
1342 Faz com que o tensor de contorsão seja incluído no cálculo dos
1343 coeficientes de conecção. O tensor de contorsão por si mesmo é calculado através de
1344 @code{contortion} a partir do tensor @code{tr} fornecido pelo utilizador.
1348 @defvr {Variável de opção} cnonmet_flag
1350 Faz com que os coeficientes de não metricidade sejam incluídos no cálculo dos
1351 coeficientes de conecção. Os coeficientes de não metricidade são calculados
1352 a partir do vector de não metricidade @code{nm} fornecido pelo utilizador através da função
1353 @code{nonmetricity}.
1357 @defvr {Variável de opção} ctayswitch
1359 Se escolhida para @code{true}, faz com que alguns cálculos de @code{ctensor} sejam realizados usando
1360 expansões das séries de Taylor. actualmente, @code{christof}, @code{ricci},
1361 @code{uricci}, @code{einstein}, e @code{weyl} levam em conta essa
1366 @defvr {Variável de opção} ctayvar
1368 Variável usada pela expansão de séries de Taylor se @code{ctayswitch} é escolhida para
1373 @defvr {Variável de opção} ctaypov
1375 Maximo expoente usado em expansões de séries de Taylor quando @code{ctayswitch} for
1376 escolhida para @code{true}.
1380 @defvr {Variável de opção} ctaypt
1382 Ponto em torno do qual expansões de séries de Taylor sao realizadas quando
1383 @code{ctayswitch} for escolhida para @code{true}.
1387 @defvr {Variável de sistema} gdet
1389 O determinante do tensor métrico @code{lg}. Calculado através de @code{cmetric} quando
1390 @code{cframe_flag} for escolhido para @code{false}.
1394 @defvr {Variável de opção} ratchristof
1396 Faz com que simplificações racionais sejam aplicadas através de @code{christof}.
1400 @defvr {Variável de opção} rateinstein
1401 Valor por omissão: @code{true}
1403 Se @code{true} simplificação racional será
1404 executada sobre as componentes não nulas de tensores de Einstein; se
1405 @code{ratfac} for @code{true} então as componentes irão também ser factoradas.
1408 @defvr {Variável de opção} ratriemann
1409 Valor por omissão: @code{true}
1411 Um dos comutadores que controlam
1412 simplificações dos tensores de Riemann; se @code{true}, então simplificações
1413 racionais irão ser concluídas; se @code{ratfac} for @code{true} então cada uma das
1414 componentes irá também ser factorada.
1418 @defvr {Variável de opção} ratweyl
1419 Valor por omissão: @code{true}
1421 Se @code{true}, esse comutador faz com que a função de @code{weyl}
1422 aplique simplificações racionais aos valores do tensor de Weyl. Se
1423 @code{ratfac} for @code{true}, então as componentes irão também ser factoradas.
1426 @defvr {Variável} lfg
1427 O referencial métrico covariante. Por padrão, é inicializado para
1428 o referencial tetradimensional de Lorentz com assinatura
1429 (+,+,+,-). Usada quando @code{cframe_flag} for @code{true}.
1432 @defvr {Variável} ufg
1433 A métrica do referencial inverso. Calculada de @code{lfg} quando @code{cmetric} for chamada enquanto @code{cframe_flag} for escolhida para @code{true}.
1436 @defvr {Variável} riem
1437 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}.
1439 Se @code{cframe_flag} for @code{true}, @code{riem} é calculado a partir do tensor covariante de Riemann @code{lriem}.
1443 @defvr {Variável} lriem
1445 O tensor covariante de Riemann. Calculado através de @code{lriemann}.
1449 @defvr {Variável} uriem
1451 O tensor contravariante de Riemann. Calculado através de @code{uriemann}.
1455 @defvr {Variável} ric
1457 O tensor misto de Ricci. Calculado através de @code{ricci}.
1461 @defvr {Variável} uric
1463 O tensor contravariante de Ricci. Calculado através de @code{uricci}.
1467 @defvr {Variável} lg
1469 O tensor métrico. Esse tensor deve ser especificado (como uma @code{dim} através da matriz @code{dim})
1470 antes que outro cálculo possa ser executado.
1474 @defvr {Variável} ug
1476 O inverso do tensor métrico. Calculado através de @code{cmetric}.
1480 @defvr {Variável} weyl
1482 O tensor de Weyl. Calculado através de @code{weyl}.
1486 @defvr {Variável} fb
1488 Coeficientes delimitadores do referencial, como calculado através de @code{frame_bracket}.
1492 @defvr {Variável} kinvariant
1494 O invariante de Kretchmann. Calculado através de @code{rinvariant}.
1498 @defvr {Variável} np
1500 Um tetrad nulo de Newman-Penrose. Calculado através de @code{nptetrad}.
1504 @defvr {Variável} npi
1506 O índice ascendente do tetrad nulo de Newman-Penrose. Calculado através de @code{nptetrad}.
1507 Definido como @code{ug.np}. O produto @code{np.transpose(npi)} é constante:
1510 (%i39) trigsimp(np.transpose(npi));
1522 @defvr {Variável} tr
1524 Tensor de categoria 3 fornecido pelo utilizador representando torsão. Usado por @code{contortion}.
1527 @defvr {Variável} kt
1529 O tensor de contorsão, calculado a partir de @code{tr} através de @code{contortion}.
1532 @defvr {Variável} nm
1534 Vetor de não metrcidade fornecido pelo utilizador. Usado por @code{nonmetricity}.
1537 @defvr {Variável} nmc
1539 Os coeficientes de não metricidade, calculados a partir de @code{nm} por @code{nonmetricity}.
1543 @defvr {Variável de sistema} tensorkill
1545 Variável indicando se o pacote tensor foi inicializado. Escolhida e usada por
1546 @code{csetup}, retornada ao seu valor original através de @code{init_ctensor}.
1550 @defvr {Variável de opção} ct_coords
1551 Valor por omissão: @code{[]}
1553 Uma opção no pacote @code{ctensor}.
1554 @code{ct_coords} contém uma lista de coordenadas.
1555 Enquanto normalmente definida quando a função @code{csetup} for chamada,
1556 se pode redefinir as coordenadas com a atribuição
1557 @code{ct_coords: [j1, j2, ..., jn]} onde os j's são os novos nomes de coordenadas.
1558 Veja também @code{csetup}.
1562 @subsection Nomes reservados
1564 Os seguintes nomes são usados internamente pelo pacote @code{ctensor} e
1565 não devem ser redefinidos:
1569 ---------------------------------------
1570 _lg() Avalia para @code{lfg} se for usado o referencial métrico,
1571 para @code{lg} de outra forma
1572 _ug() Avalia para @code{ufg} se for usado o referencial métrico,
1573 para @code{ug} de outra forma
1574 cleanup() Remove ítens da lista @code{deindex}
1575 contract4() Usado por psi()
1576 filemet() Usado por csetup() quando lendo a métrica de um ficheiro
1577 findde1() Usado por findde()
1578 findde2() Usado por findde()
1579 findde3() Usado por findde()
1580 kdelt() Delta de Kronecker (não generalizado)
1581 newmet() Usado por csetup() para escolher uma métrica
1583 setflags() Usado por init_ctensor()
1586 sermet() Usado por csetup() para informar uma métricacom série
1589 tmetric() Referencial métrico, usado por cmetric() quando
1591 triemann() Tensor de Riemann na base do referencial, usado quando
1593 tricci() Tensor de Ricci na base do referencial, usado quando
1595 trrc() Coeficientes de rotação de Ricci, usado por
1601 @subsection Modificações
1603 Em Novembro de 2004, o pacote @code{ctensor} foi extensivamente reescrito.
1604 Muitas funções e variáveis foram renomeadas com o objectivo de tornar o
1605 pacote com a versão comercial do Macsyma.
1609 Novo Nome Nome Antigo Descrição
1610 --------------------------------------------------------------------
1611 ctaylor() DLGTAYLOR() Expansão da série de Taylor de uma
1612 -----------------------------expressão
1613 lgeod[] EM Equações geodésicas
1614 ein[] G[] Tensor misto de Einstein
1615 ric[] LR[] Tensor misto de Ricci
1616 ricci() LRICCICOM() Calcula o tensor misto de Ricci
1617 ctaypov MINP Maximo expoente em expansões de séries de
1618 -----------------------------Taylor
1619 cgeodesic() MOTION Calcula as equações geodésicas
1620 ct_coords OMEGA Coordenadas métricas
1621 ctayvar PARAM Variável de expansão de séries de
1622 -----------------------------Taylor
1623 lriem[] R[] Tensor covariante de Riemann
1624 uriemann() RAISERIEMANN() Calcula o tensor contravariante de
1625 -----------------------------Riemann
1626 ratriemann RATRIEMAN Simplificação racional do tensor de
1627 -----------------------------Riemann
1628 uric[] RICCI[] Tensor de Ricci contravariante
1629 uricci() RICCICOM() Calcula o tensor de Ricci contravariante
1630 cmetric() SETMETRIC() Escolhe a métrica
1631 ctaypt TAYPT Ponto para expansões de séries de Taylor
1632 ctayswitch TAYSWITCH Escolhe o comutador de séries de Taylor
1633 csetup() TSETUP() Inicia sessão interativa de configuração
1634 ctransform() TTRANSFORM() Transformação de coordenadas interativa
1635 uriem[] UR[] Tensor contravariante de Riemann
1636 weyl[] W[] Tensor (3,1) de Weyl