张量是线性代数和几何分析中用来描述多方向、多分量关系的基本对象。标量、向量和矩阵都可以看作张量的特殊情形;更高阶的张量则可以表示更复杂的线性关系,例如二阶张量之间的线性映射、材料本构关系中的弹性张量,或坐标变换下保持几何意义不变的物理量。
从计算角度看,张量常被写成带有多个指标的分量数组,例如 vi、Aij、Cijkl。这些分量依赖于所选坐标系,但张量本身表示的几何或物理对象并不依赖坐标。理解张量的关键,就是同时区分“对象本身”和“在某个坐标系下的分量表示”。
最简单的对象是标量,比如温度、密度、压力:
a∈R.
标量通常称为零阶张量。
向量有一个指标:
vi.
在二维里可以写成
v=(v1,v2)T.
向量通常称为一阶张量。
矩阵有两个指标:
Aij.
它可以表示一个线性映射:
yi=Aijxj.
矩阵通常称为二阶张量。
继续往上,四阶张量有四个指标:
Cijkl.
它可以表示二阶张量到二阶张量的线性映射:
Bij=CijklAkl.
所以先建立一个简单类比:
| 对象 | 分量形式 | 阶数 | 常见作用 |
|---|
| 标量 | a | 0 | 数值 |
| 向量 | vi | 1 | 方向量 |
| 矩阵 | Aij | 2 | 向量到向量的线性映射 |
| 四阶张量 | Cijkl | 4 | 二阶张量到二阶张量的线性映射 |
这个表不是张量的全部定义,但足够理解很多有限元和连续介质力学里的公式。
在张量理论里,一个很常见的混淆是把“几阶张量”和“几维空间”混在一起。
它们说的是两件事:
- 张量的阶数,指一个张量需要几个指标来描述;
- 空间的维数,指每个指标可以取多少个值。
例如在二维空间中,向量是一阶张量:
vi,i=1,2.
它的阶数是 1,因为只有一个指标 i;它所在空间的维数是 2,因为 i 可以取两个值。
在三维空间中,向量仍然是一阶张量:
vi,i=1,2,3.
它的阶数仍然是 1,但空间维数变成 3。
矩阵或二阶张量有两个指标:
Aij.
如果空间是二维的,那么
i,j∈{1,2},
所以它有 22=4 个分量。如果空间是三维的,那么
i,j∈{1,2,3},
所以它有 32=9 个分量。
四阶张量有四个指标:
Cijkl.
在二维空间里,它有
24=16
个分量;在三维空间里,它有
34=81
个分量。
所以:
四阶张量不是“四维空间里的张量”,而是“有四个指标的张量”。
一般地,在 d 维空间中,一个 m 阶张量有 dm 个分量。当然,如果张量有对称性,独立分量会更少。例如二维对称矩阵虽然形式上有 22=4 个分量,但由于
A12=A21,
独立分量只有 3 个。
张量公式里经常省略求和号。规则是:
一个指标在同一项中重复出现两次,就默认对它求和。
例如
yi=Aijxj
表示
yi=j∑Aijxj.
再比如二阶张量双点积
AijBij
表示
i∑j∑AijBij.
这种记号的好处是公式非常紧凑;坏处是第一次读时必须不断检查哪些指标是自由指标,哪些指标是求和指标。
看公式
yi=Aijxj.
这里 i 只出现一次,所以它是自由指标。自由指标决定结果的形状:因为左边有 i,所以结果是一个向量。
j 出现两次,所以它是哑指标,也叫求和指标。
再看
Bij=CijklAkl.
这里:
- i,j 是自由指标,所以结果 B 是二阶张量;
- k,l 是哑指标,所以对 k,l 求和。
理解自由指标和哑指标,是读懂张量公式的第一步。
两个向量 a,b 的张量积是一个二阶张量:
(a⊗b)ij=aibj.
如果
a=[a1a2],b=[b1b2],
那么
a⊗b=[a1b1a2b1a1b2a2b2].
注意它不是点积。点积会得到一个标量:
a⋅b=aibi.
张量积会得到一个矩阵:
a⊗b.
在几何里,如果 n 是单位法向量,那么
n⊗n
表示法向投影,因为
(n⊗n)v=n(n⋅v).
对应的切向投影是
T=I−n⊗n.
这在边界条件、接触问题和滑移边界里非常常见。
缩并就是对一对指标求和,从而降低张量阶数。
点积是最简单的缩并:
a⋅b=aibi.
两个一阶张量通过一个重复指标缩并,得到零阶张量,也就是标量。
矩阵乘向量也是缩并:
yi=Aijxj.
二阶张量 Aij 和一阶张量 xj 对 j 缩并,得到一阶张量 yi。
矩阵乘矩阵也是缩并:
Cij=AikBkj.
这里对 k 缩并,结果仍是二阶张量。
迹也是缩并:
trA=Aii.
对同一个二阶张量的两个指标求和,得到标量。
所以“缩并”并不神秘,它就是张量版本的求和乘法。
两个二阶张量的双点积定义为
A:B=AijBij.
这就是把两个矩阵按分量相乘再求和,也就是 Frobenius 内积。
特别地,
A:A=i,j∑Aij2.
所以
∥A∥F=A:A
就是 Frobenius 范数。
在连续介质力学里,应变率张量常记为
ε˙u=21(∇u+∇uT).
应变率第二不变量常写成
εII=21ε˙u:ε˙u.
这里的冒号就是二阶张量双点积。
四阶张量 C 和二阶张量 A 的双点积定义为
(C:A)ij=CijklAkl.
它对 k,l 求和,剩下 i,j,所以结果是一个二阶张量。
二维中,例如
(C:A)11=C1111A11+C1112A12+C1121A21+C1122A22.
这和矩阵乘向量很像:
(Ax)i=Aijxj.
区别只是输入对象从一阶张量 xj 换成了二阶张量 Akl,所以表示线性映射的对象也从二阶张量 Aij 换成了四阶张量 Cijkl。
很多力学模型里,应力和应变都是二阶张量:
σ,ε.
如果材料是线弹性的,应力对应变是线性的:
σ=C:ε.
这里 C 就是弹性张量。它必须是四阶张量,因为它要把一个二阶张量 ε 映射成另一个二阶张量 σ。
各向同性线弹性里,常见公式是
σ=2με+λ(trε)I.
这个公式也可以写成
σij=Cijklεkl,
其中
Cijkl=λδijδkl+μ(δikδjl+δilδjk).
所以四阶张量不是为了制造复杂性,而是因为“二阶张量到二阶张量的线性映射”自然需要四个指标。
矩阵转置满足
(Ax)⋅y=x⋅(ATy).
四阶张量的转置也类似。把 C 看成二阶张量空间上的线性算子,它的转置 CT 由
(C:A):B=A:(CT:B)
定义。
用分量写,如果
(C:A)ij=CijklAkl,
那么
CijklT=Cklij.
也就是说,四阶张量转置不是只交换两个指标,而是交换两对指标:
(i,j)↔(k,l).
这里 (i,j) 可以看成输出指标对,(k,l) 可以看成输入指标对。转置就是交换输入和输出。
在弱形式、有限元和伴随推导中,经常需要把导数从一个向量场转移到另一个张量场上。最常用的公式是
∫Ω∇u:Mdx=−∫Ω(∇⋅M)⋅udx+∫∂Ω(Mn)⋅uds.
这里 u 是向量场,M 是二阶张量场,n 是边界外法向量。张量场的散度定义为
(∇⋅M)i=∂jMij.
这个公式本质上就是逐分量的一维分部积分或散度定理。因为
∇u:M=∂juiMij,
所以
∫Ω∂juiMijdx=−∫Ωui∂jMijdx+∫∂ΩuiMijnjds.
把右边写回向量和张量记号,就得到
−∫Ωui∂jMijdx=−∫Ω(∇⋅M)⋅udx,
以及
∫∂ΩuiMijnjds=∫∂Ω(Mn)⋅uds.
在应变率形式中,常出现
ε˙u=21(∇u+∇uT).
如果 M 是对称张量,即 MT=M,那么
ε˙u:M=∇u:M.
原因是
∇u=ε˙u+ωu,ωu=21(∇u−∇uT),
其中 ωu 是反对称张量。任意对称张量 S 和反对称张量 W 满足
S:W=0,
因为
SijWij=SjiWji=Sij(−Wij)=−SijWij.
所以当 M 对称时,应变率版本的分部积分为
∫Ωε˙u:Mdx=−∫Ω(∇⋅M)⋅udx+∫∂Ω(Mn)⋅uds.
这个公式在 Stokes、线弹性和伴随方程推导中很常见。它的作用是把 u 上的导数转移到张量场 M 上,从而把体积分写成
∫Ω某个系数⋅udx
的形式。若 u 是任意测试方向,就可以令这个系数为零,读出对应的强形式方程;边界项 (Mn) 则对应自然边界条件中的牵引项。
四阶张量里常见两类对称性。
第一类是小对称性,通常叫 minor symmetry:
Cijkl=Cjikl,Cijkl=Cijlk.
它表示在输出指标对内部交换,或在输入指标对内部交换,张量不变。这通常和应力、应变张量本身的对称性有关。
第二类是大对称性,通常叫 major symmetry:
Cijkl=Cklij.
它表示交换输入指标对和输出指标对后不变。换句话说,
CT=C.
在线弹性里,如果材料关系来自一个弹性能量密度,那么弹性张量通常具有 major symmetry。类似地,在一些非线性问题的一致切线中,如果线性化来自某个标量势函数的二阶导数,也会得到对称切线。
在欧氏空间、正交坐标、笛卡尔基下,很多科学计算公式不会区分上指标和下指标。我们常直接写
vi,Aij.
但在一般曲线坐标或微分几何里,需要区分:
- 逆变分量:vi;
- 协变分量:vi。
它们通过度量张量联系:
vi=gijvj,vi=gijvj.
这里 gij 是度量张量,gij 是它的逆。所谓“升降指标”,就是用度量把上指标和下指标相互转换。
很多有限元和连续介质力学教材在欧氏直角坐标中会省略这些区别。这不是因为它们不存在,而是因为在这种坐标下度量就是单位矩阵,升降指标不会改变分量。
张量可以从两个层面理解。
从计算层面看,张量是带多个指标的数组,并且可以通过指标缩并表示点积、矩阵乘法、双点积和更高阶线性映射。
从几何层面看,张量是坐标无关的对象;分量会随着坐标系改变,但对象本身不变。
对有限元和连续介质力学来说,最常用的理解是:
- 向量是一阶张量;
- 矩阵是二阶张量;
- 应力、应变、应变率是二阶张量;
- 二阶张量之间的线性本构关系通常由四阶张量表示;
- 双点积就是对两对指标求和;
- 四阶张量转置就是交换输入指标对和输出指标对。
只要抓住“自由指标决定输出,重复指标表示求和”这一条,大多数张量公式就可以逐项读出来。