Previous: Введение в пакет ctensor, Up: Пакет ctensor [Contents][Index]
Эта функция производит начальные установки пакета ctensor
и позволяет пользователю ввести метрику интерактивно.
См. ctensor для более подробного описания.
Функция пакета ctensor, которая вычисляет обратную
метрику и готовит пакет к проведению дальнейших вычислений.
Если переключатель cframe_flag равен false, то функция
вычисляет обратную метрику ug исходя из заданной пользователем
матрицы lg. Определитель метрики тоже вычисляется и
сохраняется в переменной gdet. Боле того, программа определяет
является ли метрика диагональной и соответственным образом
устанавливает значение ключа diagmetric. Если задан необязательный
ключ dis и его значение не равно false, то в ходе сессии
пользователь запрашивается требуется ли распечатать компоненты обратной
метрики на экран.
Если ключ cframe_flag равен true, тогда ожидается, что
заданы значения fri (матрица обратного базиса) и массив lfg
(метрика относительно данного базиса). Исходя из этих данных
вычисляются матрица fr и обратная метрика ufg
относительно заданного базиса.
Задает одну из предопределенных координатных систем и метрик. Аргумент coordinate_system может принимать одно из следующих значений:
Символ Dim Координаты Описание/комментарии
------------------------------------------------------------------
cartesian2d 2 [x,y] Декартовы 2D координаты
polar 2 [r,phi] Полярные координаты
elliptic 2 [u,v] Эллиптические
координаты
confocalelliptic 2 [u,v] Конфокальные
эллиптические
bipolar 2 [u,v] Биполярные координаты
parabolic 2 [u,v] Параболические
координаты
cartesian3d 3 [x,y,z] Декартова 3D система
координат
polarcylindrical 3 [r,theta,z] Цилиндрические
координаты
ellipticcylindrical 3 [u,v,z] Эллиптические 2D
с цилинром z
confocalellipsoidal 3 [u,v,w] Конфокальные
эллипсоидальные
bipolarcylindrical 3 [u,v,z] Биполярные 2D
с цилиндром z
paraboliccylindrical 3 [u,v,z] Параболические 2D
с цилиндром z
paraboloidal 3 [u,v,phi] Параболоидные
координаты
conical 3 [u,v,w] Конические координаты
toroidal 3 [u,v,phi] Тороидальные координаты
spherical 3 [r,theta,phi] Сферические координаты
oblatespheroidal 3 [u,v,phi] Сжатые сфероидальные
oblatespheroidalsqrt 3 [u,v,phi]
prolatespheroidal 3 [u,v,phi] Вытянутые сфероидальные
prolatespheroidalsqrt 3 [u,v,phi]
ellipsoidal 3 [r,theta,phi] Эллипсоидальные
координаты
cartesian4d 4 [x,y,z,t] Декартовы 4D координаты
spherical4d 4 [r,theta,eta,phi] Сферические 4D
координаты
exteriorschwarzschild 4 [t,r,theta,phi] Метрика Шварцшильда
interiorschwarzschild 4 [t,z,u,v] Внутреняя метрика
Шрарцшильда
kerr_newman 4 [t,r,theta,phi] Метрика Керра-Ньюмана
coordinate_system может быть списком функций преобразования,
за которым следует список координат. Например,
можно задать метрику следующим образом:
(%i1) load("ctensor");
(%o1) /share/tensor/ctensor.mac
(%i2) ct_coordsys([r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),
r*sin(theta),[r,theta,phi]]);
(%o2) done
(%i3) lg:trigsimp(lg);
[ 1 0 0 ]
[ ]
[ 2 ]
(%o3) [ 0 r 0 ]
[ ]
[ 2 2 ]
[ 0 0 r cos (theta) ]
(%i4) ct_coords;
(%o4) [r, theta, phi]
(%i5) dim;
(%o5) 3
Функции преобразования могут также использоваться и в случае,
когда cframe_flag равно true:
(%i1) load("ctensor");
(%o1) /share/tensor/ctensor.mac
(%i2) cframe_flag:true;
(%o2) true
(%i3) ct_coordsys([r*cos(theta)*cos(phi),r*cos(theta)*sin(phi),
r*sin(theta),[r,theta,phi]]);
(%o3) done
(%i4) fri;
(%o4)
[cos(phi)cos(theta) -cos(phi) r sin(theta) -sin(phi) r cos(theta)]
[ ]
[sin(phi)cos(theta) -sin(phi) r sin(theta) cos(phi) r cos(theta)]
[ ]
[ sin(theta) r cos(theta) 0 ]
(%i5) cmetric();
(%o5) false
(%i6) lg:trigsimp(lg);
[ 1 0 0 ]
[ ]
[ 2 ]
(%o6) [ 0 r 0 ]
[ ]
[ 2 2 ]
[ 0 0 r cos (theta) ]
Необязательный аргумент extra_arg может принимать одно из следующих значений:
cylindrical указывает ct_coordsys добавить одну
дополнительную цилиндрическую координату.
minkowski указывает ct_coordsys добавить дополнительную
декартову координату с отрицательной сигнатурой.
all указывает ct_coordsys, что после определения метрики
необходимо вызвать cmetric и christof(false).
Если глобальная переменная verbose равна true,
то ct_coordsys выводит значения dim, ct_coords, и
или lg или lfg и fri, в зависимости от значения
cframe_flag.
Инициализирует пакет ctensor.
Функция init_ctensor ре-инициализирует пакет
ctensor, при этом из памяти удаляются все использованные ранее пакетом ctensor
массивы и матрицы и восстанавливаются стандартные значения всех
ключей, в том числе: размерность многообразия, dim,
устанавливается равной 4, а метрика устанавливается равной метрике Лоренца.
Основное назначение пакета ctensor – вычисление различных
тензоров для искривленного пространства-времени, в основном
тензоров, использующихся в общей теории относительности.
При использовании голономного (координатного) базиса ctensor может вычислить
следующие объекты:
lg -- ug
\ \
lcs -- mcs -- ric -- uric
\ \ \
\ tracer - ein -- lein
\
riem -- lriem -- weyl
\
uriem
ctensor может также работать при неголономном базисе (тетрадный формализм).
Когда cframe_flag равно true, следующие
объекты могут быть вычислены:
lfg -- ufg
\
fri -- fr -- lcs -- mcs -- lriem -- ric -- uric
\ | \ \ \
lg -- ug | weyl tracer - ein -- lein
|\
| riem
|
\uriem
Функция пакета ctensor, вычисляющая символы Кристоффеля
первого и второго родов. Аргумент dis определяет какой
результат должен быть отображен.
Символы Кристоффеля первого и второго рода хранятся в массивах
lcs[i,j,k] и mcs[i,j,k] соответственно и считается
симметричным по первой паре индексов. Если аргумент
christof есть lcs или mcs то будут выведены
все уникальные (симметрия) ненулевые значения lcs[i,j,k]
или mcs[i,j,k], соответственно. Если аргумент равен
all, тогда печатаются уникальные ненулевые значения
как lcs[i,j,k] и mcs[i,j,k].
Если аргумент равен false, то ни какие значения не
отображаются. Массив mcs[i,j,k] определен таким образом,
что последний индекс является контравариантным.
Функция пакета ctensor, вычисляющая ковариантные
(симметричные) компоненты тензора Риччи ric[i,j].
Если аргумент dis равен true, то на экран выводится печать
результатов вычисления ненулевых компонент тензора.
Эта функция сначала вычисляет ковариантные
компоненты тензора Риччи ric[i,j].
Затем с помощью контравариантной метрики
вычисляется тензор Риччи со смешанными компонентами.
Если аргумент dis равен true, тогда смешанные
компоненты uric[i,j] (индекс i ковариантный,
а индекс j контравариантный), будут распечатаны.
При ricci(false) просто вычисляется массив uric[i,j]
без печати на экран.
Возвращает значение скалярной кривизны, получаемое сверткой тензора кривизны Риччи.
Функция einstein вычисляет смешанный тензор Эйнштейна
после того как вычислены символы Кристоффеля и тензор Риччи
пи помощи функций christof и ricci.
Если аргумент dis равен true, тогда ненулевые компоненты
тензора Эйнштейна ein[i,j] будут напечатаны, где
индекс j является ковариантным.
Переключатель rateinstein вызывает рациональное упрощение
результирующих компонент. Если ratfac равен true
тогда компоненты будут автоматически факторизованы.
Вычисляет ковариантный тензор Эйнштейна. leinstein записывает
компоненты ковариантного тензора Эйнштейна в массив lein.
Контравариантные компоненты тензора Эйнштейна вычисляются исходя из
смешанного тензора Эйнштейна ein. Если аргумент dis
равен true, тогда ненулевые компоненты ковариантного тензора
Эйнштейна распечатываются на экране.
Функция riemann вычисляет тензор кривизны Римана используя
метрику и символы Кристоффеля. При этом используются следующие
соглашения:
l _l _l _l _m _l _m
R[i,j,k,l] = R = | - | + | | - | |
ijk ij,k ik,j mk ij mj ik
Эти обозначения совместимы с используемыми в пакете itensor
и его функцией icurvature. Если необязательный
аргумент dis равен true, тогда
ненулевые компоненты тензора riem[i,j,k,l] печатаются на экране.
Как и для тензора Эйнштейна, управление процессом упрощения компонент тензора Римана
осуществляется при помощи различные переключателей(флагов).
Если ratriemann равен true, тогда
будет применено рациональное упрощение.
Если ratfac равен true, тогда каждая компонента
факторизуется.
Если cframe_flag равен false, тогда тензор Римана
вычисляется непосредственно исходя из символов Кристоффеля.
Если cframe_flag равен true, тогда сначала
вычисляется ковариантный тензор Римана исходя из компонент
неголономного базиса.
Ковариантный тензор Римана (lriem[]).
Функция вычисляет ковариантный тензор Римана и заносит результаты в
массив lriem. Если флаг dis равен true, то
результаты вычислений уникальных ненулевых компонент тензора выводятся
на экран.
Если флаг cframe_flag равен true, то ковариантный тензор
Римана вычисляется напрямую по компонентам тетрады, если иначе, то
вначале вычисляется тензор Римана ранга (3,1).
Информация о порядке следования индексов подробнее освящена в пункте riemann.
Вычисляет контравариантные компоненты тензора Римана и заносит их в
матрицу uriem[i,j,k,l]. Результаты вычислений печатаются на
экране если флаг dis равен true.
Вычисляет инвариант Кречмана (Kretchmann) (kinvariant),
используя свертку тензоров. Например,
lriem[i,j,k,l]*uriem[i,j,k,l].
Поскольку выражение может быть громоздким, то по умолчанию отключено автоматическое упрощение результата вычисления инварианта.
Вычисляет конформный тензор Вейля. Если флаг dis равен
true - на экране печатаются не нулевые компоненты
weyl[i,j,k,l], если иначе, то результаты вычислений просто
заносятся в матрицу. Если ключ ratweyl равен true, тогда
производится автоматическое упрощение результата с использованием
алгебры рациональных чисел; при ratfac равном true
результат вычислений автоматически факторизуется.
В пакете ctensor реализованы возможности упрощения результатов
вычислений если метрика апроксимирована рядом Тейлора. Для учета метрики
такого типа необходимо установить ключ ctayswitch равным
true. Данный ключ заставляет использовать при пакетных вычислениях
функцию ctaylor для упрощения результатов.
Функция ctaylor вызывается в следующих пакетных функциях ctensor:
Функция Комментарий
---------------------------------
christof() Только для mcs
ricci()
uricci()
einstein()
riemann()
weyl()
checkdiv()
Функция ctaylor преобразует выражения заданных аргументов конвертируя их в
Тейлоровские ряды, используя функцию taylor, и затем вызывая
ratdisrep. Это приводит к отбрасыванию слагаемых высокого
порядка по переменной разложения ctayvar. Порядок отбрасываемых
членов определен переменной ctaypov; центральная точка окрестности
разложения определяется переменной ctaypt.
В качестве примера рассмотрим простую метрику , полученную в результате возмущений метрики Минковского. Если не наложить ограничений, то даже диагональная метрика в этом случае приводит к достаточно громоздким выражениям тензора Эйнштейна:
(%i1) load("ctensor");
(%o1) /share/tensor/ctensor.mac
(%i2) ratfac:true;
(%o2) true
(%i3) derivabbrev:true;
(%o3) true
(%i4) ct_coords:[t,r,theta,phi];
(%o4) [t, r, theta, phi]
(%i5) lg:matrix([-1,0,0,0],[0,1,0,0],[0,0,r^2,0],
[0,0,0,r^2*sin(theta)^2]);
[ - 1 0 0 0 ]
[ ]
[ 0 1 0 0 ]
[ ]
(%o5) [ 2 ]
[ 0 0 r 0 ]
[ ]
[ 2 2 ]
[ 0 0 0 r sin (theta) ]
(%i6) h:matrix([h11,0,0,0],[0,h22,0,0],[0,0,h33,0],[0,0,0,h44]);
[ h11 0 0 0 ]
[ ]
[ 0 h22 0 0 ]
(%o6) [ ]
[ 0 0 h33 0 ]
[ ]
[ 0 0 0 h44 ]
(%i7) depends(l,r);
(%o7) [l(r)]
(%i8) lg:lg+l*h;
[ h11 l - 1 0 0 0 ]
[ ]
[ 0 h22 l + 1 0 0 ]
[ ]
(%o8) [ 2 ]
[ 0 0 r + h33 l 0 ]
[ ]
[ 2 2 ]
[ 0 0 0 r sin (theta) + h44 l ]
(%i9) cmetric(false);
(%o9) done
(%i10) einstein(false);
(%o10) done
(%i11) ntermst(ein);
[[1, 1], 62]
[[1, 2], 0]
[[1, 3], 0]
[[1, 4], 0]
[[2, 1], 0]
[[2, 2], 24]
[[2, 3], 0]
[[2, 4], 0]
[[3, 1], 0]
[[3, 2], 0]
[[3, 3], 46]
[[3, 4], 0]
[[4, 1], 0]
[[4, 2], 0]
[[4, 3], 0]
[[4, 4], 46]
(%o12) done
Однако если считать что l мало и оставить только линейные члены
по l, тогда получим намного более простое выражение для тензора Эйнштейна:
(%i14) ctayswitch:true;
(%o14) true
(%i15) ctayvar:l;
(%o15) l
(%i16) ctaypov:1;
(%o16) 1
(%i17) ctaypt:0;
(%o17) 0
(%i18) christof(false);
(%o18) done
(%i19) ricci(false);
(%o19) done
(%i20) einstein(false);
(%o20) done
(%i21) ntermst(ein);
[[1, 1], 6]
[[1, 2], 0]
[[1, 3], 0]
[[1, 4], 0]
[[2, 1], 0]
[[2, 2], 13]
[[2, 3], 2]
[[2, 4], 0]
[[3, 1], 0]
[[3, 2], 2]
[[3, 3], 9]
[[3, 4], 0]
[[4, 1], 0]
[[4, 2], 0]
[[4, 3], 0]
[[4, 4], 9]
(%o21) done
(%i22) ratsimp(ein[1,1]);
2 2 4 2 2
(%o22) - (((h11 h22 - h11 ) (l ) r - 2 h33 l r ) sin (theta)
r r r
2 2 4 2
- 2 h44 l r - h33 h44 (l ) )/(4 r sin (theta))
r r r
Данное приближение полезно в пределе слабого поля, вдали от гравитационных источников.
Если ключ cframe_flag равен true, то пакетные
вычисления выполняются с использованием тетрадного (неголономного в общем
случае) базиса.
Скобка тетрады (fb[]).
Вычисляет скобку тетрады, следуя определению:
c c c d e ifb = ( ifri - ifri ) ifr ifr ab d,e e,d a b
Новой особенностью пакета ctensor (начиная с ноября 2004)
является возможность вычисления классификации Петрова 4-мерного
пространственно-временного многообразия.
Демонстрационные вычисления по данной теме представлены в файле
share/tensor/petrov.dem.
Вычисляет световую тетраду (np) Ньюмана-Пенроуза и связанную с ней
дуальную часть (npi), см. petrov для примера.
Световая тетрада конструируется с использованием 4-х мерного ортонормального базиса метрики, обладающей сигнатурой (-,+,+,+). Компоненты световой тетрады связаны с обратной матрицей метрики следующими соотношениями:
np = (fri + fri ) / sqrt(2) 1 1 2 np = (fri - fri ) / sqrt(2) 2 1 2 np = (fri + %i fri ) / sqrt(2) 3 3 4 np = (fri - %i fri ) / sqrt(2) 4 3 4
Вычисляет пять коэффициентов Ньюмана-Пенроуза psi[0]...psi[4].
Если psi равен true, эти коэффициенты печатаются на
экране, см пример в пункте petrov.
Коэффициенты вычисляются в координатном базисе из тензора Вейля.
Если при использовании тетрадного базиса, компоненты тензора Вейля предварительно
конвертируются в координатный базис. Эта процедура не оптимальна с
вычислительной точки зрения и поэтому перед вычислением тензора Вейля
предварительно рекомендуется задать координатный базис.
Заметим однако, что вычисления световой тетрады (np)
Ньюмана-Пенроуза требует задания тетрадного базиса. Таким образом,
имеющая смысл схема вычислений в этом случае может состоять из следующих
этапов: вначале задается базис тетрады, который затем используется для
вычисления метрики lg (вычисляется автоматически при вызове cmetric)
и обратной метрики ug; на этом этапе можно переключится обратно к
координатному базису установив ключ cframe_flag равным
false перед началом вычислений символов Кристоффеля.
Переход обратно к тетрадному базису на более поздних стадиях вычислений
может привести к несогласованным результатам, поскольку в выражении
перемешиваются результаты вычислений компонент тензоров выполненных в
различных базисах.
Вычисляет классификацию Петрова для данной метрики, определяя psi[0]...psi[4].
Например, нижеследующее показывает, как получить классификацию Петрова для метрики Керра:
(%i1) load("ctensor");
(%o1) /share/tensor/ctensor.mac
(%i2) (cframe_flag:true,gcd:spmod,ctrgsimp:true,ratfac:true);
(%o2) true
(%i3) ct_coordsys(exteriorschwarzschild,all);
(%o3) done
(%i4) ug:invert(lg)$
(%i5) weyl(false);
(%o5) done
(%i6) nptetrad(true);
(%t6) np =
[ sqrt(r - 2 m) sqrt(r) ]
[--------------- --------------------- 0 0 ]
[sqrt(2) sqrt(r) sqrt(2) sqrt(r - 2 m) ]
[ ]
[ sqrt(r - 2 m) sqrt(r) ]
[--------------- - --------------------- 0 0 ]
[sqrt(2) sqrt(r) sqrt(2) sqrt(r - 2 m) ]
[ ]
[ r %i r sin(theta) ]
[ 0 0 ------- --------------- ]
[ sqrt(2) sqrt(2) ]
[ ]
[ r %i r sin(theta)]
[ 0 0 ------- - ---------------]
[ sqrt(2) sqrt(2) ]
sqrt(r) sqrt(r - 2 m)
(%t7) npi = matrix([- ---------------------,---------------, 0, 0],
sqrt(2) sqrt(r - 2 m) sqrt(2) sqrt(r)
sqrt(r) sqrt(r - 2 m)
[- ---------------------, - ---------------, 0, 0],
sqrt(2) sqrt(r - 2 m) sqrt(2) sqrt(r)
1 %i
[0, 0, ---------, --------------------],
sqrt(2) r sqrt(2) r sin(theta)
1 %i
[0, 0, ---------, - --------------------])
sqrt(2) r sqrt(2) r sin(theta)
(%o7) done
(%i7) psi(true);
(%t8) psi = 0
0
(%t9) psi = 0
1
m
(%t10) psi = --
2 3
r
(%t11) psi = 0
3
(%t12) psi = 0
4
(%o12) done
(%i12) petrov();
(%o12) D
Вычисление классификации Петрова основано на алгоритме опубликованном в монографии "Classifying geometries in general relativity: III Classification in practice" by Pollney, Skea, and d’Inverno, Class. Quant. Grav. 17 2885-2902 (2000). В текущем виде (по состоянию на 19 декабря 2004) код программы протестирован только для некоторых простых случаев и может содержать ошибки.
В пакете ctensor реализованы учета
неметричности и кручения в коэффициентах связности.
Коэффициенты кручения вычисляются при помощи определенного пользователем
тензора кручения ранга (2,1) tr. Используя его, коэффициенты
кручения, kt, вычисляются по формулам:
m m m
- g tr - g tr - tr g
im kj jm ki ij km
kt = -------------------------------
ijk 2
k km
kt = g kt
ij ijm
Заметим, что массив kt содержит только смешанные компоненты.
Коэффициенты неметричности вычисляются из предварительно определенного
пользователем вектора неметричности nm по следующим формулам:
k k km
-nm D - D nm + g nm g
k i j i j m ij
nmc = ------------------------------
ij 2
где D обозначает дельта-символ Кронекера.
Если ключ ctorsion_flag равен true, то коэффициенты kt
выделяются из смешанных компонент связности вычисляемых функцией
christof и запоминаются в массиве mcs. Аналогичным образом
Maxima поступает, если флаг cnonmet_flag равен true, в
этом случае из смешанных компонент связности выделяется массив nmc.
Если необходимо, функция christof вызывает функции contortion
nonmetricity для вычисления массивов kt nm.
Вычисляет коэффициенты кручения ранга (2,1) из тензора кручения tr.
Вычисляет коэффициенты неметричности ранга (2,1) из вектора неметричности nm.
Функция, выполняющая координатное преобразование произвольной
симметричной матрицы M. Пользователь интерактивно запрашивается
системой о функциях осуществляющих преобразование (прошлое название transform).
возвращает список дифференциальных уравнений, соответствующих элементам
n -ой квадратной матрицы A. В текущем виде n может
быть 2 или 3. deindex - список (определенный глобально) содержащий индексы
матрицы A соответствующие этим дифференциальным уравнениям.
Для тензора Эйнштейна (ein), представленного в форме двухмерного
массива вычисленного по метрике данной ниже, функция findde дает
следующую систему уравнений:
(%i1) load("ctensor");
(%o1) /share/tensor/ctensor.mac
(%i2) derivabbrev:true;
(%o2) true
(%i3) dim:4;
(%o3) 4
(%i4) lg:matrix([a, 0, 0, 0], [ 0, x^2, 0, 0],
[0, 0, x^2*sin(y)^2, 0], [0,0,0,-d]);
[ a 0 0 0 ]
[ ]
[ 2 ]
[ 0 x 0 0 ]
(%o4) [ ]
[ 2 2 ]
[ 0 0 x sin (y) 0 ]
[ ]
[ 0 0 0 - d ]
(%i5) depends([a,d],x);
(%o5) [a(x), d(x)]
(%i6) ct_coords:[x,y,z,t];
(%o6) [x, y, z, t]
(%i7) cmetric();
(%o7) done
(%i8) einstein(false);
(%o8) done
(%i9) findde(ein,2);
2
(%o9) [d x - a d + d, 2 a d d x - a (d ) x - a d d x
x x x x x x
2 2
+ 2 a d d - 2 a d , a x + a - a]
x x x
(%i10) deindex;
(%o10) [[1, 1], [2, 2], [4, 4]]
Вычисляет ковариантный градиент скалярной функции. Пользователь может
задать имя полученному вектору, согласно процедуре проиллюстрированной
ниже в пункте contragrad.
Вычисляет контравариантный градиент скалярной функции. Пользователь может задать имя полученному вектору, следуя примеру (вычисления используют метрику Шварцшильда):
(%i1) load("ctensor");
(%o1) /share/tensor/ctensor.mac
(%i2) derivabbrev:true;
(%o2) true
(%i3) ct_coordsys(exteriorschwarzschild,all);
(%o3) done
(%i4) depends(f,r);
(%o4) [f(r)]
(%i5) cograd(f,g1);
(%o5) done
(%i6) listarray(g1);
(%o6) [0, f , 0, 0]
r
(%i7) contragrad(f,g2);
(%o7) done
(%i8) listarray(g2);
f r - 2 f m
r r
(%o8) [0, -------------, 0, 0]
r
вычисляет даламбертиан скалярной функции, (зависимость от переменных должна быть определена заранее), например:
(%i1) load("ctensor");
(%o1) /share/tensor/ctensor.mac
(%i2) derivabbrev:true;
(%o2) true
(%i3) ct_coordsys(exteriorschwarzschild,all);
(%o3) done
(%i4) depends(p,r);
(%o4) [p(r)]
(%i5) factor(dscalar(p));
2
p r - 2 m p r + 2 p r - 2 m p
r r r r r r
(%o5) --------------------------------------
2
r
вычисляет ковариантную дивергенцию смешанного тензора второго ранга
(первый индекс должен быть ковариантным). На печать выводится
n-соответствующих компонент полученного векторного поля, где
n = dim. Если аргументом функции является g (метрический
тензор), тогда для упрощения результата используется равенство нулю
ковариантной дивергенции тензора Эйнштейна. Результат вычислений (вектор)
запоминается в массиве с именем div.
Функция пакета ctensor вычисляющая уравнения геодезических для
заданной метрики. Результат запоминается в массиве geod[i]. Если аргумент
dis равен true, тогда на экране печатается результат вычислений.
генерирует ковариантные компоненты вакуумных уравнений поля теории
Бранса-Дикке. Скалярное поле определено аргументом f, который задается в виде
взятого в кавычки имени функции вместе со своими функциональными
аргументами, например, bdvac('p(x)). Результат вычислений
(компоненты поля ковариантного тензора 2-го ранга) запоминается в bd.
генерирует полевые уравнения Эйлера-Лагранжа для инвариантной плотности
R^2. Результат запоминается в массиве inv1.
*** ПОКА НЕ РЕАЛИЗОВАНО ***
генерирует смешанные полевые уравнения Эйлера-Лагранжа для инвариантной плотности
ric[i,j]*uriem[i,j]. Результат запоминается в массиве inv2.
*** ПОКА НЕ РЕАЛИЗОВАНО ***
генерирует полевые уравнения биметрической теории Розена.
Результат запоминается в массиве rosen.
Возвращает true если M - диагональная матрица (2-х мерный массив).
Возвращает true если M - симметричная матрица (2-х мерный массив).
Дает пользователю возможность оценить размеры массива компонент тензора f. В результате печатается список двух элементов, где первый элемент является списком индексов компоненты тензора, а второй элемент соответствует количеству слагаемых этой компоненты. Таким способом можно быстро выявить ненулевые компоненты и оценить стратегию упрощения тензора.
показывает все элементы тензора ten, в виде многомерного массива.
Тензора ранга 0 и 1, также как и другие типы переменных показываются
стандартной функцией Maxima - ldisplay. Тензоры ранга 2 печатаются в виде
двухмерной матрицы, тензоры более высокого порядка выводятся на экран как
список 2-мерных матриц. Например в следующем примере на экран выводится
результаты вычисления тензора Римана для метрики Шварцшильда:
(%i1) load("ctensor");
(%o1) /share/tensor/ctensor.mac
(%i2) ratfac:true;
(%o2) true
(%i3) ct_coordsys(exteriorschwarzschild,all);
(%o3) done
(%i4) riemann(false);
(%o4) done
(%i5) cdisplay(riem);
[ 0 0 0 0 ]
[ ]
[ 2 ]
[ 3 m (r - 2 m) m 2 m ]
[ 0 - ------------- + -- - ---- 0 0 ]
[ 4 3 4 ]
[ r r r ]
[ ]
riem = [ m (r - 2 m) ]
1, 1 [ 0 0 ----------- 0 ]
[ 4 ]
[ r ]
[ ]
[ m (r - 2 m) ]
[ 0 0 0 ----------- ]
[ 4 ]
[ r ]
[ 2 m (r - 2 m) ]
[ 0 ------------- 0 0 ]
[ 4 ]
[ r ]
riem = [ ]
1, 2 [ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ m (r - 2 m) ]
[ 0 0 - ----------- 0 ]
[ 4 ]
[ r ]
riem = [ ]
1, 3 [ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ m (r - 2 m) ]
[ 0 0 0 - ----------- ]
[ 4 ]
[ r ]
riem = [ ]
1, 4 [ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ ]
[ 2 m ]
[ - ------------ 0 0 0 ]
riem = [ 2 ]
2, 1 [ r (r - 2 m) ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ 2 m ]
[ ------------ 0 0 0 ]
[ 2 ]
[ r (r - 2 m) ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ m ]
2, 2 [ 0 0 - ------------ 0 ]
[ 2 ]
[ r (r - 2 m) ]
[ ]
[ m ]
[ 0 0 0 - ------------ ]
[ 2 ]
[ r (r - 2 m) ]
[ 0 0 0 0 ]
[ ]
[ m ]
[ 0 0 ------------ 0 ]
riem = [ 2 ]
2, 3 [ r (r - 2 m) ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ ]
[ m ]
[ 0 0 0 ------------ ]
riem = [ 2 ]
2, 4 [ r (r - 2 m) ]
[ ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ m ]
3, 1 [ - 0 0 0 ]
[ r ]
[ ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ m ]
3, 2 [ 0 - 0 0 ]
[ r ]
[ ]
[ 0 0 0 0 ]
[ m ]
[ - - 0 0 0 ]
[ r ]
[ ]
[ m ]
[ 0 - - 0 0 ]
riem = [ r ]
3, 3 [ ]
[ 0 0 0 0 ]
[ ]
[ 2 m - r ]
[ 0 0 0 ------- + 1 ]
[ r ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ 2 m ]
3, 4 [ 0 0 0 - --- ]
[ r ]
[ ]
[ 0 0 0 0 ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ 0 0 0 0 ]
4, 1 [ ]
[ 2 ]
[ m sin (theta) ]
[ ------------- 0 0 0 ]
[ r ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ 0 0 0 0 ]
4, 2 [ ]
[ 2 ]
[ m sin (theta) ]
[ 0 ------------- 0 0 ]
[ r ]
[ 0 0 0 0 ]
[ ]
[ 0 0 0 0 ]
[ ]
riem = [ 0 0 0 0 ]
4, 3 [ ]
[ 2 ]
[ 2 m sin (theta) ]
[ 0 0 - --------------- 0 ]
[ r ]
[ 2 ]
[ m sin (theta) ]
[ - ------------- 0 0 0 ]
[ r ]
[ ]
[ 2 ]
[ m sin (theta) ]
riem = [ 0 - ------------- 0 0 ]
4, 4 [ r ]
[ ]
[ 2 ]
[ 2 m sin (theta) ]
[ 0 0 --------------- 0 ]
[ r ]
[ ]
[ 0 0 0 0 ]
(%o5) done
Возвращает новый список состоящий из элементов списка L с удаленным n-ым элементом.
Значение по умолчанию: 4
Опция пакета ctensor (компонентные вычисления).
Размерность многообразия, по умолчанию: 4
Команда dim: n переопределяет размерность величине равной n.
Значение по умолчанию: false
Опция пакета ctensor (компонентные вычисления).
Если diagmetric равен true, тогда вычисления
всех геометрических объектов проводятся по упрощенной схеме: с учетом
диагональности метрики. Это позволяет уменьшить время счета. Данная опция
устанавливается автоматически если при вызове csetup была задана
диагональная метрика.
Включает использование тригонометрических преобразований при упрощении
тензора. В настоящее время, ctrgsimp влияет только на результаты
вычислений, выполненные в тетрадном базисе.
Если ключ cframe_flag равен true, тогда вычисления проводятся
в тетрадном базисе (в общем случае с не голономной метрикой).
Базис определяется массивом дуального фрейма fri и метрикой базиса
lfg. При вычислениях в декартовой тетраде массив,
lfg должен быть единичной матрицей соответствующего размера; при
вычислениях с Лоренцевой тетрадой, массив lfg должен иметь
соответствующую сигнатуру.
Если ctorsion_flag равен true, тогда при вычислении
связности учитываются коэффициенты кручения contortion.
В свою очередь, коэффициенты кручения, contortion, вычисляются из
заданного пользователем тензора кручения tr.
Если cnonmet_flag равен true, тогда при вычислении
связности учитывается неметричность nonmetricity, которая, сама
по себе, вычисляется из заданного пользователем вектора неметричности nm.
Если ключ равен true, то при вычислениях используются ряды Тейлора.
В текущем состоянии пакета, эти ряды влияют на вычисление
следующих тензоров: christof, ricci,
uricci, einstein, и weyl.
Переменная ряда Тейлора. Она активируется при ctayswitch равном
true.
Максимальная ряда Тэйлора. Ее определение влияет на
вычисления только если ctayswitch равен true.
Центральная точка ряда Тэйлора. Ее определение влияет на
вычисления только если ctayswitch равен true.
Детерминант метрического тензора lg. Вычисляется функцией
cmetric, когда флаг cframe_flag равен false.
Включает рациональное упрощение коэффициентов связности christof.
Значение по умолчанию: true
Если равен true тогда проводится рациональное упрощение компонент
тензора Эйнштейна; если ratfac равен true, тогда
компоненты тензора автоматически факторизуются.
Значение по умолчанию: true
Один из ключей, контролирующих упрощение тензора Римана;
Если равен true тогда применяется рациональное упрощение;
если ratfac равен true, тогда
компоненты тензора автоматически факторизуются.
Значение по умолчанию: true
Если равен true тогда применяется рациональное упрощение тензора Вейля;
если ratfac равен true, тогда
компоненты тензора автоматически факторизуются.
Имя ковариантной метрики тетрады. По умолчанию совпадает с Лоренцевой
метрикой, имеет сигнатуру (+,+,+,-). Используется когда cframe_flag равен true.
Имя контравариантной метрики тетрады. Вычисляется из lfg, если
вызывается функция cmetric и флаг cframe_flag равен true.
Тензор Римана ранга (3,1). Вычисляется вызовом функции
riemann. Для информации о порядке следования индексов см. описание riemann.
Если cframe_flag равен true, riem вычисляется по
ковариантным компонентам тензора Римана lriem.
Ковариантная версия тензора Римана. Вычисляется вызовом функции lriemann.
Контравариантная версия тензора Римана. Вычисляется вызовом функции uriemann.
Смешанный тензор Риччи. Вычисляется функцией ricci.
Контравариантный тензор Риччи. Вычисляется функцией uricci.
Метрический тензор. Данный тензор должен (наравне с переменной
dim) определен до начала других вычислений.
Обратный метрический тензор. Вычисляется функцией cmetric.
Тензор Вейля. Вычисляется функцией weyl.
Коммутатор (скобка) тетрады, вычисляется функцией frame_bracket.
Инвариант Кретчмана. Вычисляется функцией rinvariant.
Нуль-тетрада Ньюмана-Пенроуза. Вычисляется функцией nptetrad.
Нуль-тетрада Ньюмана-Пенроуза с поднятыми индексами; вычисляется процедурой nptetrad.
Определена посредством ug.np. Произведение
np.transpose(npi) является константой:
(%i39) trigsimp(np.transpose(npi));
[ 0 - 1 0 0 ]
[ ]
[ - 1 0 0 0 ]
(%o39) [ ]
[ 0 0 0 1 ]
[ ]
[ 0 0 1 0 ]
Определенный пользователем тензор 3-го ранга, задающий
кручение. Используется процедурой contortion.
Вклад кручения в коэффициенты связности, вычисляется из тензора кручения tr функцией contortion.
Определенный пользователем вектор неметричности. Используется функцией nonmetricity.
Вклад неметричности в связность; вычисляется из nm функцией nonmetricity.
Переменная показывающая, что пакет ctensor инициализирован. Эти
установки используются процедурой csetup, и переопределяются процедурой init_ctensor.
Значение по умолчанию: []
Опция пакета ctensor (компонентные вычисления тензоров).
ct_coords содержит список имен координат. Обычно он определяется
при вызове процедуры csetup. Список может быть переопределен
назначением нового списка
ct_coords: [j1, j2, ..., jn], j’s имена новых координат. Смотри также csetup.
Следующие имена используются функциями и процедурами пакета
ctensor (не следует их переопределять):
Наименование Описание
----------------------------------------------------------------
_lg() Присваивается массиву lfg если используется
тетрадная метрика; по умолчанию присваивается
массиву lg
_ug() Присваивается массиву ufg если используется
тетрадная метрика; по умолчанию присваивается
массиву ug
cleanup() Удаляет элементы drom списка deindex
contract4() используется функцией psi()
filemet() используется функцией csetup() при чтении метрики
из файла
findde1() используется функцией findde()
findde2() используется функцией findde()
findde3() используется функцией findde()
kdelt() дельта-символ Кронекера (необобщенный)
newmet() используется функцией csetup() для интерактивного
определения метрики
setflags() используется функцией init_ctensor()
readvalue()
resimp()
sermet() используется функцией csetup() для ввода метрики
в виде разложения в ряд Тэйлора
txyzsum()
tmetric() Метрика тетрады, используется функцией cmetric(),
если cframe_flag:true
triemann() Тензор Римана в тетрадном представлении,
используется если cframe_flag:true
tricci() Тензор Риччи в тетрадном представлении,
используется если cframe_flag:true
trrc() Коэффициенты вращения Риччи, используется
функцией christof()
yesp()
В ноябре 2004 пакет ctensor был существенно переписан. Многие
функции и переменные были переименованы для того чтобы сделать данный
пакет совместимым с коммерческой версией Macsyma.
Новое имя Статое имя Описание
-----------------------------------------------------------------
ctaylor() DLGTAYLOR() Разложение выражения в ряд
Тэйлора
lgeod[] EM Уравнения геодезических
ein[] G[] Смешанный тензор Эйнштейна
ric[] LR[] Смешанный тензор Риччи
ricci() LRICCICOM() Вычисляет смешанный тензор Риччи
ctaypov MINP Максимальная степень ряда Тэйлора
cgeodesic() MOTION Вычисляет уравнения геодезических
ct_coords OMEGA метрические координаты
ctayvar PARAM Переменная ряда Тэйлора
lriem[] R[]
uriemann() RAISERIEMANN() Вычисляет контравариантный тензор
Римана
ratriemann RATRIEMAN Рациональное упрощение тензора
Римана
uric[] RICCI[] Контравариантный тензор Риччи
uricci() RICCICOM() Вычисляет контравариантный тензор
Риччи
cmetric() SETMETRIC() Определяет метрику
ctaypt TAYPT Центральная точка окрестности ряда
Тэйлора
ctayswitch TAYSWITCH Ключ, устанавливающий использовать
ли ряды Тэйлора в метрике
csetup() TSETUP() Вызывает начало интерактивного
режима задания метрики и пр.
ctransform() TTRANSFORM() Интерактивное преобразование
координат
uriem[] UR[] Контравариантный тензор Римана
weyl[] W[] Тензор Вейля ранга (3,1)
Previous: Введение в пакет ctensor, Up: Пакет ctensor [Contents][Index]