[来自 杨树森的系列专栏]

张量 (tensor) 是向量、矩阵的自然推广. 粗略地说, 向量是一阶张量, 矩阵是二阶张量. 一般地, `n` 阶张量是一个 `n` 重线性函数 `f: (V^ast)^p xx V^q to RR`,
`(u_1, cdots, u_p, v^1, cdots, v^q) mapsto x`,
其中 `p+q=n`, `v^1, cdots, v^q` 是线性空间 `V` 中的元素, 而 `u_1, cdots, u_p` 是对偶空间 `V^ast` 中的元素.

多维数组

多维数组的概念可以参考 C 语言之类的编程语言. 一个形状为 `N_1 xx cdots xx N_n` 的多维数组写作 `a[N_1]cdots[N_n]`, 它可以看作一个 `n` 元函数 `a(i_1, cdots, i_n)`, 其中第 `k` 个下标 `i_k` 的取值范围是 `1, cdots, N_k`. 设有多维数组 `a[N_1]cdots[N_n]` 和 `b[M_1]cdots[M_m]`, 规定它们之间的乘法 (张量积) 如下: `a : b = c[N_1]cdots[N_n][M_1]cdots[M_m]`, 其中 `c(i_1, cdots, i_n, j_1, cdots, j_m) = a(i_1, cdots, i_n) b(j_1, cdots, j_m)`. 这就是说, `n` 维数组和 `m` 维数组的乘积是一个 `n+m` 维数组, 且这个数组 `c` 的前 `n` 个下标由 `a` 贡献, 后 `m` 个下标由 `b` 贡献.

  1. 两个一维数组 `[1, 2]` 与 `[3, 4]` 的乘积.
  2. 三个一维数组 `[1, 2]`, `[3, 4]`, `[5, 6, 7]` 的乘积.
  1. [
      1*[3, 4],
      2*[3, 4]
    ]
    = [
      [1*3, 1*4],
      [2*3, 2*4]
    ]
    = [
      [3, 4],
      [6, 8]
    ].
    
  2. [
      [3, 4],
      [6, 8]
    ] : [5, 6, 7]
    = [
      [3, 4] : [5, 6, 7],
      [6, 8] : [5, 6, 7]
    ]
    = [
      [
        [3*5, 3*6, 3*7],
        [4*5, 4*6, 4*7],
      ],
      [
        [6*5, 6*6, 6*7],
        [8*5, 8*6, 8*7]
      ]
    ].
    

特别地, 两个一维数组的乘积又称为并矢. 如 `bm a = (a_1, a_2, a_3)`, `bm b = (b_1, b_2, b_3)`, 则 `bm a : bm b` `= [a_1; a_2; a_3] [b_1, b_2, b_3]` `= [a_1 b_1, a_1 b_2, a_1 b_3; a_2 b_1, a_2 b_2, a_2 b_3; a_3 b_1, a_3 b_2, a_3 b_3 ]`. 注意这里的矩阵记号 `[a, b; c, d]` 是多维数组 [[a, b], [c, d]] 的简写. 不引起混淆的情况下, 并矢也可以简记为 `bm a bm b`.

张量的定义

下面讨论的线性空间默认为 `RR` 上的有限维空间.

对偶空间

线性空间 `V` 上全体线性函数构成一个线性空间, 称为 `V` 的对偶空间 `V^ast`. 对偶空间中加法与数乘的定义是 `(f + g)(x) = f(x) + g(x)`,
`(k f)(x) = k f(x)`.

对偶空间与原空间具有相同维数.

设 `e_1, cdots, e_n` 是 `V` 的一组基, 则线性函数 `f_1, cdots, f_n` 是 `V^ast` 的一组基, 其中 `f_i(e_j) = delta_(i j)`, 且任意 `f in V^ast` 在这组基下的坐标为 `(f(e_1), cdots, f(e_n))`.

自然同构 对偶空间的对偶空间与原空间同构.

我们建立 `V` 到 `V^(ast ast)` 的同构映射. 前面提到 `f_1, cdots, f_n` 是 `V^ast` 的基, 又 `g_1, cdots, g_n` 是 `V^(ast ast)` 的基, 其中 `g_i(f_j) = delta_(i j)`. 可以验证 `varphi: V to V^(ast ast)`
`e_i mapsto g_i`, `i = 1, cdots, n`
是同构.

`V^ast` 中的元素, 即 `V` 上的线性函数称为 `V` 的协变, `V^(ast ast)` 中的元素, 即 `V^ast` 上的线性函数称为 `V` 的逆变反变. 根据自然同构 `V^(ast ast) cong V`, 也可以认为逆变就是 `V` 中的向量.

今后我们不再区分 `V^(ast ast)` 与 `V`.

对偶基

对偶基 设 `{v_i}_(i=1)^n` 是线性空间 `V` 的一组基, `{v_i^ast}_(i=1)^n` 是其对偶空间 `V^ast` 的一组基. 如果满足 `v_i^ast(v_j) = delta_(i j)`, `quad i, j = 1, cdots, n`, 则称 `{v_i^ast}` 是 `{v_i}` 的对偶基.

    坐标的对偶 设 `{alpha_i}`, `{varphi_i}` 是一对对偶基,
  1. 对 `AA alpha = sum x_i alpha_i in V`, 有 `varphi_i(alpha) = varphi_i(x_i alpha_i) = x_i`, 即 `alpha = sum varphi_i(alpha) alpha_i`.
  2. 对 `AA varphi = sum y_i varphi_i in V^ast`, 有 `varphi(alpha_i) = (sum y_j varphi_j)(alpha_i) = y_i`, 即 `varphi = sum varphi(alpha_i) varphi_i`.
  3. 对 `AA alpha in V` 和 `varphi in V^ast`, `varphi(alpha) = (sum_i y_i varphi_i)(sum_j x_j alpha_j)` `= sum_(i, j) x_j y_j varphi_i(alpha_j)` `= sum_i x_i y_i`.
  4. 在对偶基下 `varphi(alpha)` 具有简单的坐标表示 `sum_i x_i y_i`.

设 `{u_i}`, `{v_i}` 是 `V` 的两组基, `{u_i^ast}`, `{v_i^ast}` 是相应的对偶基, 线性变换 `cc A, cc B` 满足 `cc A u_i = v_i`, `cc B u_i^ast = v_i^ast`. `cc A, cc B` 在基底 `{u_i}` 下的表示矩阵记为 `bm A, bm B`, 则 `bm B^(sf T) bm A = bm I`.

由对偶基定义, `u_i^ast(u_j) = delta_(i j) = v_i^ast(v_j)`, 由表示矩阵定义, `(v_1, cdots, v_n) = (u_1, cdots, u_n) bm A`,
`(v_1^ast, cdots, v_n^ast) = (u_1^ast, cdots, u_n^ast) bm B`.
用 `a_(i j)`, `b_(i j)` 代表矩阵 `bm A, bm B` 的元素, 计算得 `delta_(i j) = v_i^ast(v_j)` `= (sum_k u_k^ast b_(k i))(sum_l u_l a_(l j))` `= sum_(k, l) b_(k i) a_(l j) delta_(k l)` `= sum_k b_(k i) a_(k j)`, 即 `bm B^(sf T) bm A = bm I`.

多重线性函数

设 `V_1, cdots, V_p` 是 `p` 个线性空间, 维数分别是 `n_1, cdots, n_p`. 如果 `f: V_1 xx cdots xx V_p to RR` 关于它的每个分量都是线性函数, 则称它是多重线性函数. `V_1 xx cdots V_p` 上全体多重线性函数的集合记为 `cc L(V_1, cdots, V_p"; "RR)`, 它是一个线性空间.

任取这 `p` 个线性的空间的基底 `(e_1^((1)), cdots, e_(n_1)^((1)))`,
`cdots`,
`(e_1^((p)), cdots, e_(n_p)^((p)))`.
从集合 `cc L(V_1, cdots, V_p"; "RR)` 中取 `n_1 cdots n_p` 个元素 `f_(i_1 cdots i_p)`, `quad i_k in {1, cdots, n_k}`. 其中 `f_(i_1 cdots i_p)` 将多重基向量 `(e_(i_1)^((1)), cdots, e_(i_p)^((p)))` 映为 `1`, 其它多重基向量映为 `0`. 可以验证这些 `f_(i_1 cdots i_p)` 就构成 `cc L(V_1, cdots, V_p"; "RR)` 的基底.

从以上证明看出, 在有限维的情形, 多重线性函数的坐标就形如多维数组, 它的坐标运算就是多维数组的运算.

张量的定义

线性空间 `V` 上的 `{::}_p^q` 型张量是指如下的 `p+q` 重线性函数: `f: (V^ast)^p xx V^q to RR`, 其中 `p+q` 称为 `f` 的阶数, `p` 称为协变阶数, `q` 称为逆变反变阶数. `V` 上全体 `{::}_p^q` 型张量的集合记为 `V_p^q`.

  1. `{::}_1^0` 型张量是一个协变, 即 `V^ast` 中的元素;
  2. `{::}_0^1` 型张量是一个逆变, 根据自然同构, 它就是 `V` 中的向量;
  3. `{::}_q^0` 型张量称为 `q` 阶协变张量;
  4. `{::}_0^p` 型张量称为 `p` 阶逆变张量.

根据自然同构, `V` 上的 `{::}_p^q` 型张量也可看作 `V^ast` 上的 `{::}_q^p` 型张量, 或者看作 `f: V^q to V^p`.

  1. `f: (V^ast)^p xx V^q to RR` 即为 `f: (V^(ast ast))^q xx (V^ast)^p to RR`.
  2. 将 `q` 个 `V` 中向量喂给 `f`, 会得到一个函数 `g: (V^ast)^p to RR`, 即 `g in (V^(ast ast))^p`, 换言之 `g in V^p`.

张量的坐标表示 `V` 上的 `{::}_p^q` 型张量在基底下写成 `f = sum_(i_1 cdots i_p j_1 cdots j_q) k_(i_1 cdots i_p)^(j_1 cdots j_q) f_(i_1 cdots i_p)^(j_1 cdots j_q)`. 上式共有 `n^(p+q)` 项相加. 其中系数 `k_(i_1 cdots i_p)^(j_1 cdots j_q)` 称为这个张量的分量; 张量的分量形如一个多维数组. `p+q` 重基函数 `f_(i_1 cdots i_p)^(j_1 cdots j_q)` 将 `q` 重基向量 `(e_(j_1), cdots, e_(j_q))` 映到 `p` 重基向量 `(e_(i_1), cdots, e_(i_p))`, 而将其它 `q` 重基向量映为零 (`p` 重零向量). 特别 `p = 0` 时, `p` 重基向量 `(e_(i_1), cdots, e_(i_p))` 退化为 `1`.

张量观点下欧氏空间的内积运算 在标准正交基 `bm e_1, cdots, bm e_n` 下, 两向量的内积 `bm x * bm y` `= (sum_i x_i bm e_i) * (sum_j y_j bm e_j)` `= sum_(i j) x_i y_j bm e_i * bm e_j` `= sum_(i j) x_i y_j delta_(i j)`. 内积运算 `f(bm x, bm y) = bm x * bm y` 接收两个 `RR^n` 中向量, 输出一个实数, 它是欧氏空间 `RR^n` 上的二阶协变张量. 其分量 `delta_(i j)` 恰为单位矩阵.

张量观点下的线性变换 线性变换 `f(bm x) = cc A bm x` 接收一个向量, 输出一个向量, 它是线性空间 `V` 上的 `{::}_1^1` 型张量, 其分量就是 `cc A` 的系数矩阵.

张量积

  1. 多重线性函数的张量积 设 `f`, `g` 分别是 `s, t` 重线性函数, 它们的张量积定义为 `(f : g)(x_1, cdots, x_s, y_1, cdots, y_t)` `:= f(x_1, cdots, x_s) g(y_1, cdots, y_t)`. 于是 `f : g` 是 `s + t` 重线性函数. 又, 张量积满足结合律.
  2. 线性空间的张量积 设 `U, V` 分别是 `m, n` 维线性空间, 任取 `u in U`, `v in V`, 视它们为张量 (将 `u, v` 分别看作 `U^ast, V^ast` 上的线性函数), 于是 `u : v` 有意义, 线性空间 `U, V` 的张量积定义为 `U : V := {u : v | u in U, v in V}`. 从而 `U : V` 是一个 `m n` 维线性空间.

`V` 上全体 `{::}_p^q` 型张量 `V_p^q` 可以分解为线性空间的张量积: `V_p^q = underbrace(V : cdots : V)_p : underbrace(V^ast : cdots : V^ast)_q`.

张量的记号

指标运算

为便于运算, 我们总是取定一个基底, 然后引入张量的坐标表示. 和矢量一样, 张量与基底的选取无关, 但它的坐标与基底有关. 在不引起混淆的情况下, 我们把张量的坐标表示也称为张量.

对称指标与反对称指标缩并结果为零 例如设 `X^(i j)` 对称, `Y_(i j k)` 反对称, 则 `X^(i j) Y_(i j k)` `= -X^(j i) Y_(j i k)`. 但 `i, j` 是哑指标, 可以随意改写为其它字母, 比如把 `i` 重写成 `j`, 而 `j` 重写成 `i`. 因此上式右边等于 `-X^(i j) Y_(i j k)`. 该结果恰比原式多一个负号, 说明原式为零.

向量的叉乘 笛卡尔坐标系中, 若向量 `C = A xx B`, 我们知道它的 `x` 坐标满足 `C_x = A_y B_z - A_z B_y`, 用 Levi-Civita 符号, 就是 `C_c = epsi_(a b c) A^a B^b`.

以 `x` 坐标为例, `y, z` 同理: `C_x = epsi_(a b x) A^a B^b` `= sum_(a, b in {x, y, z}) epsi_(a b x) A^a B^b` 但由于 `epsi` 的反对称性, `a, b` 相等时, 该项为零; `a, b` 等于 `x` 时该项也为零. 故上式等于 `epsi_(y z x) A^y B^z + epsi_(z y x) A^z B^y` `= A^y B^z - A^z B^y`.

对偶基底的关系 设 `i, j, k` 互不相同且为偶排列, 如 `1, 2, 3`. 由于 `bm e^i * bm e_j = bm e^i * bm e_k = 0`,
`bm e^i * bm e_i = 1 = (bm e_j xx bm e_k * bm e_i)/(bm e_j xx bm e_k * bm e_i)`,
所以 `bm e^i = (bm e_j xx bm e_k)/(bm e_j xx bm e_k * bm e_i)` `= (bm e_j xx bm e_k)/(bm e_1 xx bm e_2 * bm e_3)`.

逆变、协变的由来 设 `x` 是线性空间 `V` 中的向量, `f` 是 `V` 上的线性函数. 取定 `V` 的基底 `alpha_i` 和 `beta_i`, 有 `x = x^i alpha_i = y^i beta_i`,
`f(x) = x^i f(alpha_i) = y^i f(beta_i)`.
设基底间的过渡矩阵为 `A_i^j`, 即 `beta_i = A_i^j alpha_j`, 则 `f(beta_i) = A_i^j f(alpha_j)`. `f(alpha_j)` 到 `f(beta_i)` 间相差的变换与基底的变换一致, 是协变. 又 `x^j alpha_j = y^i beta_i` `= y^i A_i^j alpha_j`,
即 `x^j = A_i^j y^i`, 或 `y^i = (A_i^j)^-1 x^j`.
`x^j` 到 `y^i` 间相差的变换与其底的变换相反, 是逆变.

度规

度规 定义为基底与对偶基底间的过渡矩阵: `bm e_i = g_(i j) bm e^j`, `quad bm e^i = g^(i j) bm e_j`. 于是 `bm e_i * bm e_j = g_(i j) bm e^j * bm e_j = g_(i j)`.
同理 `bm e^i * bm e^j = g^(i j)`.
上式也可以作为度规的定义. 度规矩阵的行列式 `g := det(g_(i j))` 称为 Gauss 曲率.

  1. `(g_(i j)) = (g^(i j))^-1` (逆矩阵);
  2. 由内积的对称性, `g_(i j) = g_(j i)`;
    张量的一些例子
  1. 线性变换 `A_i^j` 是二阶混合张量 (`{::}_1^1` 型张量). `x^j = A_i^j x^i`.
  2. 度规 `g_(i j)` 是二阶协变张量, `g^(i j)` 是二阶逆变张量.
  3. 向量 `x_i`, `x^j` 分别是一阶协变、逆变张量, 标量是零阶张量.

标架运动方程

今后我们常在逆变坐标下进行微分. 张量 `A` 对逆变坐标 `x^i` 的微分 `pp A x^i` 用「逗号下标」的方式简记为 `A,_i`.

标架运动方程 对空间 `RR^3` 中的每一点 `P(x^1, x^2, x^3)` 都建立一个局部标架 `{P";" bm e_i";" bm e^j}`, `i, j = 1, 2, 3`. 基向量 `bm e_i` 和 `bm e^j` 是 `P` 的坐标 `x^1, x^2, x^3` 的函数, 我们把基向量对坐标求微分, 就得到标架运动方程: `{bm e_(j, i) := Gamma_(i j)^k bm e_k := Gamma_(i j k) bm e^k; bm e_(,i)^j = -Gamma_(i k)^j bm e^k = -Gamma_(i j k) bm e_k:}` 这里 `Gamma_(i j k)` 和 `Gamma_(i j)^k` 分别叫做第一、二类 Christoffel 符号 (克氏符号).

    [来自 我是烦人精的近乎幂零群] 这里给出标架运动方程的第二行的证明.
  1. 设基底 `{x_i}` 到 `{bm e_i}` 的过渡矩阵为 `(a_j^i)`, 即 `bm e_j = a_j^i x_i`, 又设对偶基底 `{x^i}` 到 `{bm e^i}` 的过渡矩阵为 `(b_i^j)`, 即 `bm e^j = b_i^j x^i`. 由这条推论知道, 矩阵 `(b_i^j)` 等于 `(a_j^i)` 的转置的逆, 于是 `x_i = b_i^j bm e_j`, `x^i = a_j^i bm e^j`. 求导得 `bm e_(j, i) = (a_j^l)_(,i) x_l = (a_j^l)_(,i) b_l^k bm e_k`,
    `bm e_(,i)^j = (b_l^j)_(,i) x^l = color(red)((b_l^j)_(,i) a_k^l) bm e^k`.
    记 `Gamma_(i j)^k = (a_j^l)_(,i) b_l^k`, 由于 `a_k^l b_l^j = delta_k^j`, 对 `x^i` 微分得到 `color(blue)((a_k^l)_(,i) b_l^j) + color(red)(a_k^l (b_l^j)_(,i)) = 0`. 于是 `color(red)((b_l^j)_(,i) a_k^l) = - color(blue)((a_k^l)_(,i) b_l^j) = - Gamma_(i k)^j`.
  2. ??
  1. `Gamma_(i j k) = Gamma_(i j)^l g_(l k)`;
  2. `Gamma_(i j)^k = Gamma_(i j l) g^(l k)`.

只证 1. 利用度规定义, `Gamma_(i j k) bm e^k` `= Gamma_(i j)^k bm e_k` `= Gamma_(i j)^k g_(k l) bm e^l` `= Gamma_(i j)^l g_(l k) bm e^k`.

[来自群友 乐正垂星] 澄清: 我们有 `g_(l k) Gamma_(i j)^l = Gamma_(i j)^l g_(l k)`, 因为 `g_(l k)` 和 `Gamma_(i j)^l` 严格说只是张量的分量, 实际就是数字, 它们的乘法是可以随意交换的. 而当我们说矩阵 `A B != B A` 时, 实际上是说 `A^i_k B^k_j != B^i_k A^k_j`, 矩阵次序的交换对应着上下指标的交换.

用度规表示克氏符号 `Gamma_(i k)^l = 1/2 g^(l j) (g_(i j,k) + g_(j k, i) - g_(k i,j))`.

写出 `g_(i j,k) = (bm e_i * bm e_j),_k` `= bm e_(i,k) * bm e_j + bm e_(j,k) * bm e_i`, `g_(j k,i) = bm e_(j,i) * bm e_k + bm e_(k,i) * bm e_j`, `g_(k i,j) = bm e_(k,j) * bm e_i + bm e_(i,j) * bm e_k`. ①+②-③, `g_(i j,k) + g_(j k,i) - g_(k i,j)` `= 2 bm e_(i,k) * bm e_j` `= 2 Gamma_(i k)^l bm e_l * bm e_j` `= 2 Gamma_(i k)^l g_(l j)`. 两边同乘 `g^(l j)` 即得结论.