爱因斯坦求和约定是一种用重复指标代替显式求和符号的记号规则。在标准的张量形式中,同一项内出现两次的指标——一次作为上指标,一次作为下指标——表示在其指定范围内求和。这一约定使涉及张量的表达式更加简洁,同时保留有关其分量和缩并的信息。阿尔伯特·爱因斯坦在其1916年关于广义相对论的论文第5节中明确引入了这一规则。它也用于线性代数和计算中的数组记号。(en.wikisource.org)
基本规则与指标范围
对于取值范围为 到 的指标 ,表达式
表示
重复指标指定了需要先相乘、再相加的分量;它不是指数。求和约定分别适用于和式中的每一项,而不是不加区分地作用于整个等式。(en.wikisource.org)
指标的取值范围必须由上下文确定。对于有限维向量空间中的分量,指标可取值的个数通常等于该空间的维数。在四维时空中,指标通常从 取到 。不同类型的指标可以有不同的取值范围;相互匹配的指标字母必须对应相容的分量空间。(w0.ned.ipac.caltech.edu)
多对重复指标表示多个独立的求和。例如,
这里, 和 都不再出现在结果中。相比之下, 中的两个指标各不相同且均未重复,因此不包含隐含求和,而是给出张量积的分量。(en.wikisource.org)
自由指标与哑指标
哑指标又称求和指标,在同一项中出现两次,并在求和后消去。用哪个字母表示它并无本质意义:
只要替换后的字母不与该项中的其他指标冲突,这两个表达式就表示相同的分量。(appliedmechanicslab.github.io)
自由指标不参与求和,用于标记结果的分量。在
中, 是自由指标, 是哑指标。对于 的每一个允许取值,这个等式都表示一个标量等式。所有相加的项,以及张量等式的两边,都必须具有相互匹配的自由指标,且相应指标的上下位置也必须一致。因此, 并不表示通常意义上按分量进行的向量加法。(appliedmechanicslab.github.io)
在标准约定下,同一指标不能在一项中出现三次或更多次。因此, 这样的表达式需要改写,或者明确采用另一种约定。像 这样的特定分量不会自动求和:重复的数字指定的是一个固定分量,而不是遍历取值范围的指标。(appliedmechanicslab.github.io)
上指标与下指标
在微分几何中,指标的位置反映其变换方式。按惯例,上指标表示逆变分量,包括向量的分量;下指标表示协变分量,包括对偶空间中元素的分量。它们的变换规律使相互匹配的一对上、下指标可以用于张量缩并。每缩并一对指标,张量的指标总数就减少两个。(w0.ned.ipac.caltech.edu)
度量张量将上指标分量与下指标分量联系起来:
其中, 是逆度量的分量。对于实向量,度量配对为
当度量正定时,这就是一个内积;时空度量则不一定正定。(w0.ned.ipac.caltech.edu)
在实欧几里得空间的一组标准正交基下,度量分量构成单位矩阵,对应的上指标分量与下指标分量在数值上相同。因此,笛卡尔坐标系中的张量计算常常把所有指标都写在下方,用 表示点积。这种简化记号不应原样套用于任意坐标系或不定度量。(w0.ned.ipac.caltech.edu)
矩阵与张量运算
映射的复合则写为
共同的指标 执行矩阵乘法中熟悉的求和,而 和 标记输出的分量。(nwchemex.github.io)
矩阵的迹是同一对象内部的缩并:
克罗内克 delta定义为:当 时,;否则为 。它满足
这些公式说明,指标的排列方式可以区分不同运算,而无须逐一写出运算名称。不过,仅凭简洁的指标记号,并不能断定一个数组按张量的方式变换;变换性质仍是一项独立的要求。(en.wikisource.org)
计算记号与扩展
这一约定也为数值线性代数中的多维数组运算提供了一种表达语言。NumPy 的 einsum 用字符标签标记数组的轴。例如,einsum('ij,jk->ik', A, B) 表示矩阵乘法,而 einsum('i,i->', a, b) 对向量对应元素的乘积求和。箭头显式指定输出标签。(numpy.org)
这类接口扩展了传统的数学约定。einsum('ij->i', A) 对标签仅出现一次的轴求和,而 einsum('i,i->i', a, b) 保留重复标签,并计算逐元素乘积。同样,einsum('ii->i', A) 提取的是对角线元素,而不是计算迹。这些都是有效的软件指令,因为输出标签决定哪些轴会保留下来;如果不说明修改后的规则,就不应将它们理解为通常的爱因斯坦记号。(numpy.org)
参考来源
- The Foundation of the Generalised Theory of Relativityen.wikisource.org
- Einstein Summation Convention — Applied Mechanics Labappliedmechanicslab.github.io
- Einstein Summation Convention — TensorWrapper 1.0.0 documentationnwchemex.github.io
- numpy.einsum — NumPy v2.1 Manualnumpy.org