最近要在曲线标架下做点计算。
(相关资料图)
张量运算太复杂了,手算是不可能手算的。一眼望去,MMA著名的张量计算包xAct也好复杂。帖子[1]提到了OGRe包,看起来语法还比较容易;包的文档写的也比较清楚。于是做一些测试,感受一下OGRe计算张量时语法的特点。
OGRe包的安装
利用命令找到默认路径,将OGRe.m[2,3]文件复制到对应文件夹中
导入OGRe包
查看包中的函数
文档介绍这些函数时分为几个章节:
Creating and displaying tensor objects(主要介绍坐标系、度量、张量的定义等)
Operations on single tensors(介绍张量的输出、在不同标架下转换、化简等)
Calculations with tensors(介绍利用TCalc进行张量运算等)
Derivatives and curvature tensors(介绍曲线标架下的张量运算等)
Curves and geodesics(介绍测地线等)
查看包中的默认参数
一般通过TSet开头的指令更改这些默认参数。
测试1:斜坐标系下的度量
定义笛卡尔系和斜坐标系,在笛卡尔系中定义度量张量。
OGRe中可以自动处理张量在不同坐标系下的变换,只要定义了坐标系的转换关系,可以获得度量张量在任意坐标系下的表示。
定义笛卡尔坐标系,斜坐标系以及两者的变换关系
必须定义坐标系对应的双射。如果只定义"Cartesian" -> "Oblique",在笛卡尔系下定义的张量可以转换到斜坐标系下,而在斜坐标系下定义的张量不能转换到笛卡尔坐标系中表示。
查看Jacobian矩阵
定义度量(张量)
查看度量张量的默认信息
张量的主要信息有:
ID(当允许重写权限关闭时,只有ID为Result的张量可以被重写)
Symbol(ID是唯一的,而Symbol不是唯一的,也可以没有)
Default Coordinates
Default Indices(-1代表协变分量,1代表逆变分量)
查看度量张量
我们在笛卡尔系下定义了度量张量,然而也可以输出斜坐标系下的度量。同时,不仅可以查看度量的协变分量,还可以查看度量的逆变分量。我们还能通过度量张量看到协、逆变基的正交关系(这么理解也没啥大问题吧)。
上下标中的希腊字母来自于默认的IndexLetters,对于计算没有影响。
测试2:张量的计算
主要考察张量计算时,指标的顺序,指标的上下标类型。
生成张量的指标顺序应该没什么问题,上下标类型最好还是通过TInfo查看。最好用明确的定义进行运算,避免运算出错(见测试4)。
定义张量(向量)
查看张量
张量并积
指标顺序与指标出现顺序相同(可以利用左式Result指定指标顺序),指标的协变、逆变属性与原指标相同。
张量缩并
对结果简化
进行缩并运算时,不需要指定分量是协变分量还是逆变分量。OGRe会自动将哑标转换为协变、逆变对进行运算,保证计算结果满足张量性质。
张量加法
当张量的协变、逆变形式相同时,张量加法得到的分量与原来的协变、逆变形式相同;当协变、逆变形式不同时,加法得到结果与指标出现的前后顺序无关。
测试3:Eddington张量
对于重要的置换张量,考察OGRe的运算。
定义坐标系和度量
定义Eddington张量
查看Eddington张量
测试4:梯度、散度和拉普拉斯量
进一步考察OGRe对重要运算的处理。
第一个计算结果是错误的(错误是由于度量张量+克式符没有定义在球坐标系中导致的,说好的自动转换呢,超级超级巨大巨大的Bug)。
OGRe与MMA内置函数都能够计算正确的拉普拉斯量,但是得到的梯度分量是不同的,这是由于其选择的局部标架是不同的。OGRe给出的张量指标为{-1,1}(和想象的好像不太一样,所以说确认一下还是比较重要的)。
对于标架不同导致的计算结果的差异,我们自己算一下。下面前缀n的对应MMA内置函数的结果,没有前缀的代表OGRe的结果。
忽略指标的顺序(求导时MMA求导指标加在右边,OGRe求导指标加在左边),上述结果与需要对照的结果是一致的。
OGRe需要显式的定义坐标全局的映射,而不能自己定义局部的映射,这可能是OGRe包的缺点之一。
测试5:测地线
由度量计算拉格朗日量,进一步计算测地方程
定义坐标系和度量
计算测地线方程
对比MMA自带变分包计算的结果
将测地线方程改写,两者事实上是相同的
算例
在这个例子中,用OGRe给出的式子计算测地线能得到比较好的结果。MMA变分包给出的方程,方程的性质在部分情况下并不是太好。
球面上的测地线
方程不是特别好解,没有对解法进行优化。索性我们知道答案,直接带进去就好了。故技重施,把方程中的曲线参数消掉。
方程的一般解
OGRe的确给出了正确的测地方程。
在定义球面坐标系的度量时,想偷个懒,定义球面在三维笛卡尔系中的嵌入,OGRe竟然不支持。定义映射的流形必须维度一致。
1.https://zhuanlan.zhihu.com/p/570817834
2.https://github.com/bshoshany/OGRe
3.https://joss.theoj.org/papers/10.21105/joss.03416