符号约定
本节,我们引入爱因斯坦求和约定(Einstein Notation),它会极大的简化张量运算的复杂程度。核心规则只有两条:
-
哑指标(Dummy Index):在同一项内成对出现的上标和下标,被称为哑指标,它表示对该指标的所有取值求和,并省略求和号 Σ 。例如
aibi:=i=1∑naibi
- 哑标可替换为任意未占用的字母,因为它们最终会被缩并掉,如 aibi=akbk ;
- 同一项内同一指标不得大于2次,如 aibici 无定义;
- 和仅作用于同一项内,如 ai+bi 中 i 是自由指标,不触发求和;
-
自由指标(Free Index):同一项中只出现一次、不参与求和的指标,称为自由指标,它可以自由取值。实际上自由指标可以用一个式子代替整个方程组。例如
ai+bi=ci
- 等式左右两侧的自由指标数量、上下位置必须完全一致;
- 自由指标可以自由取值,每个取值对应一个独立的分量方程;
注意:严格张量分析中哑标需一上一下,笛卡尔坐标系可放宽为全下标
以下是求和约定在矩阵运算中的应用(便以理解):记 vi 表示列向量 v 的第 i 个分量,Aij 表示矩阵 A 的第 i 行第 j 列的分量,后面我们就会看到这种上下标的写法会有更多好处。
- 矩阵乘列向量:Aijxj=bi 等价于 Ax=b
(哑标 j 对应行乘列求和,自由指标 i 对应结果的行)
- 矩阵乘行向量:xiAij=bj 等价于 x⊤A=b⊤
- 矩阵乘矩阵:AikBkj=Cij 等价于 AB=C
- 向量点乘:aibi 等价于 a⋅b
- 向量外积(并矢):aibj 等价于 ab⊤
- 矩阵的迹:Aii 等价于 tr(A)
- 分配律:Aij(xj+yj)=Aijxj+Aijyj 等价于 A(x+y)=Ax+Ay
- 交换律:Aijxiyj=Aijyjxi 等价于 (x⊤A)y=x⊤(Ay)
已知向量等式 ai=bi ,两边同乘 ci 得到等式 ciai=cibi 仍然成立。这是由于等式对每个自由指标分量都成立,对其做任意线性组合(求和)后依然相等。等价于 a=b 变为 c⋅a=c⋅b。
已知矩阵方程 Aijxj=bi 两边同乘 Bki 得到 BkiAijxj=Bkibi 仍然成立。等价于由 Ax=b 变为 BAx=Bb 。
对于矩阵互逆 A−1A=I,写成求和形式就是:
(A−1)ikAkj=δji
上式右边的形式经常出现,称为 kroneker 符号
δji={1,0,if i=jif i=j
kroneker δ 有许多有用的性质:
- 单位矩阵:δji 等价于单位矩阵 I
- 与向量:δjivj=vi 等价于 Iv=v
- 与矩阵:δkiAkj=Aij 等价于 IA=A
- 自缩并:δii=tr(I)
- 连缩并:δkiδjk=δji 等价于 II=I
张量
张量分析的核心思想可以概括为一句话:张量是坐标变换下的不变量——张量本身不随坐标系改变,但其「分量」会随坐标变换按确定的规则变化。理解这一思想的关键,在于厘清基变换、坐标变换以及「逆变」与「协变」这对概念的深层联系。
张量的定义其实还有有很多,这是最通俗易懂的一个。
基变换
我们已经知道,给定向量空间的一组基,就可以用它们的线性组合表示向量空间中任意向量。那么给定两组基,这两组基之间也可以互相线性表示。
考虑 V 中的两组基 {e1,e2} 和 {e1,e2},为了后面方便描述,我们称前一组为「旧基」,后一组为「新基」。

由于二者都是 V 的基,新基中的每个向量都可以用旧基线性表示:
{e1=2e1+e2e2=−0.5e1+0.25e2
写成矩阵的乘法
[e1e2]=[e1e2][21−0.50.25]
右边的矩阵称为旧基到新基的过渡矩阵。本文我们称为前向变换矩阵(forward transformation)
F=[21−0.50.25]
由于基都是线性无关的,因此矩阵 F 可逆。
反之,旧基也可用新基表示
[e1e2]=[e1e2]F−1
显然 B=F−1 ,即 BikAkj=δji。矩阵 B 称为逆向变换(backward transformation)。
一般地,在向量空间 V 中,假设旧基 {ei} 和新基 {ei} 间的线性关系为
⎩⎨⎧e1=F11e1+F21e2+⋯+Fn1ene2=F12e1+F22e2+⋯+Fn2en⋯en=F1ne1+F2ne2+⋯+Fnnen
则对应的前向变换矩阵为
F=F11F21⋮Fn1F12F22⋮Fn2⋯⋯⋱⋯F1nF2n⋮Fnn
张量分析中一般写成元素间的关系
ej=i=1∑nFijei,ej=i=1∑nBijei
应用Einstein求和约定,基变换公式简写为
ej=Fijei,ej=Bijei
至此我们简要介绍了基向量的变换,并得到了变换矩阵 F 和 B。接下来,我们要讨论向量在不同基下的表示。
向量
给定一个向量,它一定是「不变」的,因为它就是向量空间中的一个元素而已。只是我们为了要「表示」这个向量,我们需要提供两个内容:一组基和这组基下该向量对应的坐标。

接着使用上节的坐标系,假设我们给定一个向量 v,其在旧基下的表示是
v=1e1+1.5e2=[e1e2][11.5]
带入基变换公式,便得到在新基下的表示
v=[e1e2][21−0.50.25]−1[11.5]=[e1e2][12]
一般地,假设向量 v∈V 在旧基 {ei} 和新基 {ei} 下的表示为
v=viei=viei
利用基变换公式,我们便可得到
vi=Bjivj,vi=Fjivj
从上式我们看出,向量坐标分量的变换与基变换是互逆的。因此,我们称向量是逆变的(contravariant)。同样的,坐标基则被称为协变的(covariant)。
一般情况下,协变的分量使用「下标」,而逆变的分量使用「上标」。在张量分析中,指数极少会出现,所以不必担心这个上标和指数表达存在混淆。
线性变换
给定向量空间 V,若映射 L:V→V 满足以下条件:
- 可加性:L(v+w)=L(v)+L(w)
- 伸缩性:L(cv)=cL(v)
那么称 L 为线性变换。
接下来我们在二维空间中讨论下线性变换的一些性质。
给定 V 中一组基 {e1,e2} , 将 L 作用于任意向量 v=v1e1+v2e2,就有
L(v)=L(v1e1+v2e2)=v1L(e1)+v2L(e2)
上式表明,如果我们知道线性变换作用于基向量的结果 L(e1), L(e2) ,就可以计算 L 对任意向量的作用。令
L(e1)=A11e1+A21e2L(e2)=A12e1+A22e2
改写为矩阵乘法的形式
L(v)=[L(e1)L(e2)][v1v2]=[e1e2][A11A21A12A21][v1v2]
记
L(v)=w=w1e1+w2e2
于是就有
[w1w2]=[A11A21A12A21][v1v2]
由此可见,线性映射在基 {e1,e2} 下等价于矩阵
A=[A11A21A12A21]
这里 A 的第 j 列是基向量 ej 变换后的坐标。
接下来讨论同一个线性映射在不同基下的矩阵表示。
给定另一组基 {e1,e2} ,令 L 对应的矩阵为
A=[A11A21A12A21]
在新基下同样有
[w1w2]=[A11A21A12A21][v1v2]
接下来,我们可以通过矩阵的相似变换得到 A 和 A 间的变换关系。设旧基到新基的前向变换矩阵为 F ,
- 先将 v 转换为旧基下的坐标,即 F[v1v2]
- 将旧基下的线性映射矩阵 A 作用于这个结果,将得到线性映射后在旧基下的坐标,即 AF[v1v2]
- 我们再把这个结果转换到新基下,也就是 BAF[v1v2]
所以就有
A[v1v2]=BAF[v1v2]
因此
A=BAF
接下来,我们将使用张量的语言将这一结论推广到一般的向量空间。
假设线性映射 L 在旧基 {ei} 下的矩阵为 A (分量 Aij),满足
L(ej)=eiAij
给定另一组新基 {ei} ,同一变换在新基下的矩阵为 A (分量 Aij) 。同样有
L(ej)=eiAij(1)
将基变换公式 ej=ekFkj 带入(1)式左侧,并利用线性性
L(ej)=L(ekFkj)=L(ek)Fkj=elAlkFkj(2)
同样使用基变换公式 ei=elFli,带入(1)式右侧得到
L(ej)=elFliAij(3)
由于旧基 {ei} 线性无关,比较 (2) 式和 (3) 式中 el 前的系数,得到核心张量方程:
AlkFkj=FliAij
在等式两边左乘逆向变换 Bml 进行张量缩并
BmlAlkFkj=BmlFliAij=δmiAij=Amj
于是,我们得到了线性映射在不同坐标系下分量之间的变换规则
Aij=BilAlkFkj
可见,线性映射的坐标变换使用了一次逆变(上标)和一次协变(下标)。
度量张量
在线性代数中,我们学过向量的长度和夹角,可由向量的内积来决定。
给定二维空间 V 中的任意两向量
v=v1e1+v2e2w=w1e1+w2e2
笛卡尔内积
v⋅w=(v1e1+v2e2)(w1e1+w2e2)=v1w1(e1⋅e1)+(v1w2+v2w1)(e1⋅e2)+v2w2(e2⋅e2)
用矩阵乘法表示为
v⋅w=[v1v2][e1⋅e1e2⋅e1e1⋅e2e2⋅e2][w1w2]
可见,只要知道基向量之间的内积,就可以求出任意两个向量的内积。应用爱因斯坦求和约定
v⋅w=gijviwj
上式中 gij=ei⋅ej 称为度量张量,它包含了基向量两两之间的内积。很明显度量张量是对称的 gij=gji 。
有了内积之后, 我们便可以计算向量的模长
∥v∥2=v⋅v=gijvivj
对于标准正交基而言,gij=ei⋅ej=δij,那么上式就变为了勾股定理
∥v∥2=vjvj
除了用来度量向量的长度外,度量张量还可以确定两个向量的夹角。假设向量 v 和 w 的夹角为 θ ,为了确定它,我们考虑引入一组新基,这组新基的两个基向量长度为1,且恰好分别与 v 和 w 共线,即
v=ae1,w=be2
注意由于我们选取的基向量是长度为1的基向量,显然 ∥v∥=a, ∥w∥=b 。
由于旋转坐标系不会改变向量的夹角,当然也不会改变度量张量本身,因此为了简便,我们让 e1 与标准正交基 e1 重合,即 e1=e1。这样利用一些简单的三角关系,就能得到如下图所示的结果

接下来我们探讨度量张量在一般旧基 {ei} 和新基 {ei} 间的坐标变换。已知基变换公式
ej=eiFij,ej=eiBij
于是
gij=ei⋅ej=(ekFki)⋅(elFlj)=FkiFljgkl
可见度量张量的坐标变换使用了两次协变。同样地,新基来表示旧基就是
gij=BkiBljgkl
一般张量
截止目前,我们已经介绍过几种类型的具体张量:列向量、线性变换、度量张量。
向量的坐标变换:
vi=Bijvj,vi=Fijvj
使用了一次逆变,因此称为 (1, 0)-tensor。
向量空间中的基:
ej=Fijei,ej=Bijei
使用了一次协变,因此称为 (0, 1)-tensor。
线性映射的坐标变换:
Aij=BilAlkFkj,Aij=FilAlkBkj
使用了一次逆变和一次协变,因此称为 (1, 1)-tensor。
度量张量的坐标变换:
gij=FkiFljgkl,gij=BkiBljgkl
使用了两次协变,因此称为 (0, 2)-tensor。
在此,给出一般张量的定义。只要其坐标变换是符合以下规律的对象,就是张量:
Txyz⋯abc⋯=(BaiBbjBck⋯)Trst⋯ijk⋯(FrxFsyFtz⋯)
这一规则保证了张量作为几何对象不依赖于坐标选择。其中上标就是「逆变分量」,而下标是「协变分量」。若坐标变换包含 p 个逆变和 q 个协变,就称为 (p, q)-tensor。所有指标的总数称为张量的阶(rank)。例如,(p, q)-tensor 的阶为 p+q ,在 n 维空间中,此张量的分量个数为 np+q 。
-
0 阶张量(标量):单个数值 T。坐标变换下数值保持不变。例如:温度、质量、向量内积的结果。
-
1 阶张量
- (1,0)-tensor(逆变向量):分量 vi,共 n 个分量
- (0,1)-tensor(协变向量):分量 αi,共 n 个分量
-
2 阶张量
- (2, 0)-tensor(二阶逆变张量):分量 Tij,共 n2 个分量
- (1, 1)-tensor(混合二阶张量):分量 Tij,共 n2 个分量,是矩阵形式对应的标准张量类型
- (0, 2)-tensor(二阶协变张量):分量 Tij,共 n2 个分量,度量张量是典型代表
-
高阶张量:按指标数量类推,例如 (2, 1)-tensor Tijk,共 n3 个分量;(3, 2)-tensor Tijklm,共 n5 个分量。
余向量与对偶空间
余向量
在数学中,余向量(covector)定义为一个「线性泛函」,它将向量空间 V 中的向量映射到标量域上,即
α:V→F
对于∀u,v∈V,c∈R 满足
α(u+v)=α(u)+α(v)α(cu)=cα(u)
在二维或三维空间中,余向量可以近似表示为「行向量」,而向量通常表示为「列向量」。余向量的作用等价于将列向量作为输入,通过矩阵乘法得到标量输出。
例如,余向量(行向量) α=[21] ,它作用于向量 v=[32] ,就是
α(v)=[21]([32])=[21][32]=8

可能大家都注意到了,余向量的输入虽然看起来只有一个(列向量),但本质上由于列向量包含两个分量,那么余向量的自变量应该有两个
α([xy])=2x+y
显然,我们可以用等高线可视化形如 z=ax+by 的函数

这意味着,要想知道一个向量被 α 作用后的结果是多少,就看这个向量终点落到了哪条等高线上。
对偶空间
给定向量空间 V ,任取两个余向量 α,β:V→R ,通过行向量的运算容易知道,∀v∈V,c∈R 有
(α+β)(v)=α(v)+β(v)(cα)(v)=cα(v)
可见余向量满足线性性,这样的余向量的集合显然可以构成一个向量空间,这个向量空间称为输入空间 V 的对偶空间,记作 V∗ 。以上引入并不是严谨的,我们仅是构造了一个由余向量构成的特殊的对偶空间。
我们知道,这个定义还蕴含了 v∈V 是 V∗ 上的线性函数。因为给定 V 中一元素,可以确定一个从 V∗ 到 R 的映射,所以,我们根本无法说明 V∗ 中元素究竟比 V 中元素特殊在哪里,大家地位是对等的。
对偶空间既然是一个向量空间,它当然也有自己的基。那么我们就能根据给定的基得到任意余向量的坐标。假设给定了二维向量空间 V 的一组基 {e1,e2} ,我们在对偶空间中取这样两个元素 {ϵ1,ϵ2},它们满足
ϵ1(e1)=1,ϵ1(e2)=0ϵ2(e1)=0,ϵ2(e2)=1
这里为什么要把 ϵ 中的 i 写作上标而不是下标,后面会解释。

将它们作用于任意的 v=v1e1+v2e2 就有
ϵ1(v)=ϵ1(v1e1+v2e2)=v1ϵ2(v)=ϵ2(v1e1+v2e2)=v2
接下来我们考察任意余向量 α 作用于 v,即
α(v)=α(v1e1+v2e2)=v1α(e1)+v2α(e2)
令 α(e1)=α1, α(e2)=α2 ,那么上式就继续写作
α(v)=α1ϵ1(v)+α2ϵ2(v)=(α1ϵ1+α2ϵ2)(v)
也即
α=α1ϵ1+α2ϵ2
这样,对偶空间中的任意元素 α 就写成了 {ϵ1,ϵ2} 的线性组合了,因此 {ϵ1,ϵ2} 就可看做对偶空间的基,而 α 的坐标就是 [α1α2] 。
一般地,对于向量空间 V 的一组基 {ei} ,取对偶空间 V∗ 对应的基
ϵi(ej)=δji
那么,对于任意 α∈V∗ 就有
α=αiϵi
其中 αi=α(ei) 。
坐标变换
有了对偶空间的基和坐标,接下来我们就来看对偶空间下的坐标变换。

为了定义对偶空间中的另一组基,我们当然也得先给出输入空间里的一组新基,即
ej=Fjiei
同样我们定义
ϵi(ej)=δji
于是得到了新坐标
α=αiϵi
进一步,我们就得到了 α 的坐标变换
αj=α(ej)=α(Fjiei)=Fjiαi
反过来,新基到旧基下的坐标变换就是
αj=Bjiαi
余向量分量与基按同一个方向变换——这正是「协变」(covariant)名称的来源。
对偶基变换
最后,我们来讨论对偶空间的基变换。考虑 V 中的两组基 {ei} 和 {ei}
ej=Fjiei
则对偶空间 V∗ 中的基
ϵi(ej)=ϵi(ej)=δji
设变换矩阵 A 使得
ϵj=Ajiϵi
带入对偶关系
δkj=ϵj(ek)=(Ajiϵi)(Flkel)=AjiFlkδli=AjiFik
写成矩阵的乘法形式
AF=I
因此
A=F−1=B
因此对偶基的变换公式为
ϵj=Bjiϵi
反过来就是
ϵj=Fjiϵi
可见对偶基是逆变的。
多重线性映射
从线性映射的角度再看度量张量,类似于余向量,可以将度量张量视作把两个向量映射成一个「标量」的函数。
T:V×V→R,T(v,w)=Tijviwj
容易验证,对于任意 c∈R;u,v,w∈V 有下列性质:
- 伸缩性:cT(v,w)=T(cv,w)=T(v,cw)
- 可加性:T(v+u,w)=T(v,w)+T(u,w)
T(v,w+u)=T(v,w)+T(v,u)
满足上述定义的二元映射称为双线性映射。
双线性映射中的任一参数具有独立的线性性:换句话说,双线性映射拥有两个输入参数,但我们可以将其中一个参数固定下来,或者说将其视作常量,那么另一个参数就具有线性性。比如将 v 固定下来,那么 T(v,w) 就可以看做这样一个线性映射 Lv(w) 。
度量张量其实是双线性映射的一个特例,它还满足对称性和正定性,是其他双线性映射不具备的性质。
- 对称性:gij=ei⋅ej=ej⋅ei=gji
- 正定性:g(v,v)=gijvivj⩾0
其实,线性变换也是双线性映射。乍看,线性变换的输入是 1 个向量,输出是 1 个向量,与双线性映射的定义并不一致 —— 二者的等价性需要通过对偶空间建立桥梁。
给定一个 (1,1)-tensor L 作用于一个列向量 v
Lijvj=wi
由爱因斯坦求和约定,显然 wi 是某个列向量的坐标。也就是说张量 L 可视作一个线性映射 L:V→V 。
同样,如前面的思路一样,它不止由下标,还有上标,所以可以和余向量 α 缩并:
αiLij=βj
现在我们同样可以说,张量 L 是一个线性映射 L:V∗→V∗ 。
当然,我们也可以完全用掉它的上标和下标,也就是同时作用于列向量 v 和余向量 α,即
αiLijvj=s∈R
由于 α 和 v 都是线性的,因此,我们也可以说,张量 L 是双线性映射
L:V∗×V→R
对应的函数可视为:
(α,v)↦α(L(v))
即先让线性变换作用在向量 v 上得到新向量 L(v),再用对偶向量 α 去作用这个新向量,最终得到一个标量。
继续,给定一个 (2,1)-tensor T,分量为 Tijk。它拥有两个上标一个下标,自然可以作用于两个余向量和一个列向量
αiβjTijkvk=s∈R
显然是一个三重线性映射
T:V∗×V∗×V→R
实际上,我们引出了张量的另一个定义:张量是定义在向量空间与对偶空间上的多重线性映射。
多重线性映射满足下列条件:
- T(x1,x2,⋯,cxi,⋯,xn)=cT(x1,x2,⋯,xn)
- T(x1,x2,⋯,xi+yi,⋯,xn)=T(x1,x2,⋯,xi,⋯,xn)+T(x1,x2,⋯,yi,⋯,xn)
对每一个输入槽位都单独满足线性性,固定其他槽位时,单个槽位的输入与输出呈线性关系。
对于 (1, 0)-tensor (普通向量/逆变向量)也可以反过来作为线性函数,输入一个对偶向量,输出一个标量。这是一种自然的双向等价关系:v(α)=α(v) ,只是视角从函数作用于自变量切换成了自变量作用于函数,本质是相同的。
再来看上面的 (2,1)-tensor Tijk ,将输入空间的两个对偶基 ϵi,ϵj∈V∗ 和协变基 ek∈V 按槽位顺序代入映射,得到的数值就是该张量的分量:
Tijk=T(ϵi,ϵj,ek)
新坐标系下的分量同理:
Tabc=T(ϵa,ϵb,ec)
带入基变换公式,并利用多重线性映射的性质,得到
Tabc=T(Baiϵi,Bbjϵj,Fkcek)=(BaiBbjFkc)T(ϵi,ϵj,ek)=BaiBbjTijkFkc
我们使用多重线性映射很自然的得到了坐标变换公式。
一般 (m, n)-tensor的坐标变换:每个逆变指标乘逆变矩阵 B,每个协变指标乘协变矩阵 F 。上下标不是书写习惯,而是严格对应变换规律。将基矢 / 对偶基代入映射,得到的数值集合就是张量的分量。指标需左右错开书写,明确槽位顺序,顺序不同一般对应不同张量。
张量作用,就是张量作为多重线性泛函的求值过程:给张量输入对应数量、对应类型的自变量(向量或对偶向量),最终输出一个标量。一个 (p, q)-tensor ,完整的张量作用需要输入 p 个对偶向量加 q 个向量,最终输出一个标量。
我们熟知的线性变换,本质上是张量的部分作用:给 (1, 1)-tensor只喂入一个向量,只填满了协变指标的位置,还剩一个逆变指标空位,结果就不是标量,而是一个 (1,0)-tensor,也就是向量。
从线性变换的视角推广,任意 (p,q)-tensor 都可以等价为一种「广义线性算子」:输入若干个向量 / 对偶向量,输出一个低阶张量。
张量积与张量空间
张量运算
所有张量运算都可转化为分量的代数运算。
张量加法:仅同类型张量可相加,对应分量直接相加。例如
(A+B)ijk=Aijk+Bijk
数乘:每个分量均乘以该标量。例如
(cT)ijk=cTijk
张量积:分量直接相乘,所有指标保留,张量阶数相加。例如
(T⊗α)ijkl=Tijkαl
缩并:将张量的一个逆变指标和一个协变指标同名配对,按求和约定遍历求和,张量阶数降低 2 阶。例如
vj=Tiji
指标升降:度量张量 gij 与其逆 gij 满足 gikgkj=δij,可实现协变 / 逆变指标的转换。例如
vi=gijvj
在笛卡尔正交坐标系下 gij=δij,协变与逆变分量数值完全相等,因此工程中常全写下标。但这是坐标系特例,不具有普适性。
张量积
所有高阶张量都可以拆解为低阶张量的张量积。张量积的核心规则是:对应分量直接相乘,所有指标按顺序保留,不做任何求和。给定一个 (p,q)-tensor A 和一个 (r,s)-tensor B,二者的张量积 A⊗B 是 (p+r,q+s)-tensor。
典型示例:
-
两个逆变向量 vi 和 wj,张量积为二阶逆变张量:
(v⊗w)ij=viwj
-
逆变向量 vi 与协变向量 αj 的张量积,得到 (1,1)-tensor:
(v⊗α)ij=viαj
-
(1,1)-tensor Tij 与协变向量 αk 的张量积,得到 (1,2)-tensor:
(T⊗α)ijk=Tijαk
-
两个 (1,1)-tensor Aij 与 Bkl 的张量积,得到 (2,2)-tensor:
(A⊗B)ikjl=AijBkl
事实上,二阶张量及以下的张量积可视作一种分配运算。
示例1:设矩阵 A=[1223] 和 B=[0315] 。张量积为分块矩阵运算
A⊗B=[1B2B2B3B]=0306152100609210315
反过来
B⊗A=[0A3A1A5A]=0036006912510231015
显然 A⊗B=B⊗A 。
示例2:向量 v=[12] 和 w=[34] 。张量积展平后为4维向量
v⊗w=[1w2w]=3468
也可利用向量外积表示成矩阵的形式
v⊗w=[1⋅32⋅31⋅42⋅4]=[3648]
张量是个抽象对象,我们想让它做一些定量计算,就得想办法把它「表示」出来。其中分量 Tij 就是张量 v⊗w 的一个坐标表示,遵循爱因斯坦求和约定,至于你把它当做矩阵还是高维向量,就已经无所谓了。
张量积的基本性质:
- 数乘: c(A⊗B)=(cA)⊗B=A⊗(cB)
- 左分配律:(A+B)⊗C=A⊗C+B⊗C
- 右分配律:A⊗(B+C)=A⊗B+A⊗C
- 结合律:(A⊗B)⊗C=A⊗(B⊗C)
一般张量积不满足交换律: A⊗B=B⊗A,因为指标拼接顺序不同,对应不同的张量。
张量空间
由张量的运算性质,不难看出,所有同型张量构成线性空间。要表示一个张量,我们只需要找到对应的一组基,以及其坐标即可。
仍然以熟悉的线性变换开始,给定向量空间 V 的一组基 {ei} ,它的对偶空间 V∗ 的基为 {ϵj} 满足正交归一性 ϵj(ei)=δij ,它的作用是提取向量分量 ϵj(v)=vj。
取任意线性变换 L ,张量分量(矩阵元) Lij 满足
L(ej)=Lijei
对任意向量 v=vjej 作用结果为
L(v)=L(vjej)=Lijeivj=Lijeiϵj(v)
这个式子的含义很关键。观察其中的每一项 eiϵj(v) 都是输入一个向量,输出一个向量。容易验证,他们都是一个线性变换。
以最简单的 2x2 矩阵为例,若 {e1,e1} 是标准正交基,从矩阵的视角(余向量作为行向量),{e1ϵ1, e1ϵ2, e2ϵ1, e2ϵ2} 就是一组标准基矩阵:
[1000], [0010], [0100], [0001]
这样,任意的 2x2 矩阵就可以写作
[acbd]=a[1000]+b[0010]+c[0100]+d[0001]
当然,从更一般的张量作用来看,我们定义
(ei⊗ϵj)(v)=eiϵj(v)
回到刚才的 L(v) 表达式,可以把它改写为:
L(v)=Lij(ei⊗ϵj)(v)
由于对任意向量 v 都成立,因此映射层面有:
L=Lij(ei⊗ϵj)
这说明:任意一个线性变换,都可以表示成这 n2 个 ei⊗ϵj 的线性组合,可以验证他们线性无关。也就是说,集合 {ei⊗ϵj} 是线性变换空间的一组基。
站在 (1,1)-tensor 是 V∗×V 上的双线性泛函的角度,张量积的作用遵循「分别作用、结果相乘」的原则。比如基础单元 ei⊗ϵj 作用在 (α,v) 上:
(ei⊗ϵj)(α,v)=α(ei)⋅ϵj(v)=αivj
张量的本质在于分量在基变换下遵循的严格变换规则,我们用不同的基矩阵就会得到不同的分量。给定两组基
L=Lij(ei⊗ϵj)=Lij(ei⊗ϵj)
我们知道列向量的基变换和余向量的基变换
ei=Bkiek,ϵj=Fjlϵl
代入就得到
Lij(ei⊗ϵj)=Lij(Bkiek⊗Fjlϵl)=BkiLijFjl(ek⊗ϵl)
于是
Lkl=BkiLijFjl
至此,我们相当于又从另一个角度重新讲解了一遍线性变换这个张量。
理解了 (1,1)-tensor 的构造逻辑,推广到任意张量就非常顺畅了 —— 本质就是「增加张量积的因子数量」
- 每个逆变上标对应一个 V 中的协变基矢 ei
- 每个协变下标对应一个 V∗ 中的逆变对偶基 ϵj
- 指标的横向顺序与张量积 ⊗ 的因子顺序完全一一对应
现在我们来看 (0,2)-tensor ,它是定义在 V×V 上的双线性映射,接收两个向量,输出一个标量。
按照同样的思路,用两个对偶基做张量积构造基元:ϵi⊗ϵj 。作用规则为:
(ϵi⊗ϵj)(v,w)=ϵi(u)⋅ϵj(v)=viwj
所有 n2 个这样的元素构成 (0,2) 型张量空间的基,任意双线性型 T 都可展开为:
T=Tij(ϵi⊗ϵj)=Tij(ϵi⊗ϵj)
再看下坐标变换
Tij(ϵi⊗ϵj)=Tij(Fikϵk⊗Fjlϵl)=TijFikFjl(ϵk⊗ϵl)
于是便有
Tkl=TijFikFjl
和之前章节的结论完全一致,而且非常自然。
现在我们把注意力放回 ϵi⊗ϵj,对于列向量和余向量相乘,我们还能用矩阵乘法去解释和计算。但是在线性代数中,两个行向量是没法相乘的。同样是描述分量序列,张量积是更本质的存在。
总结一下:
- 张量空间是一个线性空间,张量空间中的元素满足线性性。
- 张量空间中的元素是张量。既然是张量,按照我们前面的定义,那它自然可以写作若干列向量和余向量的张量积,于是我们就能按这个张量积来表示张量空间,反过来也一样。
假如我给你一个张量空间,比如 V⊗V∗⊗V ,那么它里面的元素就一定是一个 (2, 1)-tensor,可以写作 Tijkei⊗ϵj⊗ek 。反过来,如果张量表示为 Tijklϵi⊗ϵj⊗ek⊗ϵl 那么这个张量所在的张量空间就是 V∗⊗V∗⊗V⊗V∗ 。
事实上,当我们想要表示一个张量时,由于我们已经有了爱因斯坦求和约定,只要我们能写下它的分量,那么它的基自然就已经定下来了。所以我们不需要像上面那样写出完整的表示,而是只需要写下类似 Tijkl 这种分量的形式就已经能完整表示一个张量了。
张量分析
在此前的文章,我们都是围绕具体的某个张量进行讲解,并从中引出一些张量中的概念。现在,我们将利用这个定义,对一般的、抽象的张量展开讲解。
给定张量的两组基
D=Dabea⊗eb=Dabea⊗eb
由于
Dabea⊗eb=Dab(Biaei)⊗(Bjbej)=(BiaBjbDab)ei⊗ej
这样就得到了坐标变换
Dij=BiaBjbDab
接下来我们再来研究点更加复杂的张量。例如
Q=Qijkei⊗ϵj⊗ϵk=Qijkei⊗ϵj⊗ϵk
类似之前的推导方法
Qijkei⊗ϵj⊗ϵk=Qijk(Brier)⊗(Fjsϵs)⊗(Fktϵt)=BriQijkFjsFkter⊗ϵs⊗ϵt
得到新旧坐标变换
Qijk=BirQrstFrjFtk
由于 Q 的基包含两个余向量,自然可以作用于两个列向量。例如
Q(v,w)=Qijkei⊗ϵj(v)⊗ϵk(w)
倘若某个张量的基恰好包含两个列向量,那么 Q 就可以作用于这个张量。比如
Q(D)=Qijkei⊗ϵj⊗ϵk(Dabea⊗eb)
于是现在问题就出现了,由于任意余向量作用于任意(同维的)基向量都是合法的操作,我们的两个余向量自然可以分别作用于两个基向量,比如我们可以选择让 ϵj 作用于 ea, ϵk 作用于 eb,于是我们就会得到
Q(D)=QijkDabei⊗ϵj(ea)⊗ϵk(eb)=QijkDabeiδajδbk=QijkDjkei
而如果我们选择让 ϵj 作用于 eb, ϵk 作用于 ea。同理可得
Q(D)=QikjDjkei
注意指标的顺序发生了变化,这是不同的张量,因为指标顺序变化意味着基的张量积顺序发生了变化。所以我们通常不会简单写下 Q(D) 这种形式而是必须按照爱因斯坦求和约定写出具体的指标运算结果。
最后再来看下多重线性映射。给定一个 (1,3)-tensor T,分量为 Tijkl。它拥有三个下标一个上标,自然可以作用于低阶张量。例如
TijklUijl=vk
进一步,我们来结合张量的线性性
Tijkl(cUijl)βk=s∈R
以及
Tijkl(Uijl+Rijl)βk=TijklUijlβk+TijklRijlβk=t∈R
上式说明了张量 Tijkl 可以看作双线性映射
T:(V⊗V⊗V)×V∗→R
输入一个 (3,0)-tensor 和一个协变向量,输出标量。Amazing !!!
参考资料:
【中英⚡张量入门|Tensors for Beginners】