量化交易中文教材

张量篇 第 T3 章 曲线坐标、运动标架与 Christoffel 符号

对应原书:Simmonds《A Brief on Tensor Analysis》第 2 版,第 III 章 Newton's Law and Tensor Calculus(书 p.45–69,PDF p.58–82;原书 p.70 为空白页,扫描缺失)。

原书借牛顿第二定律 \(\mathbf f=m\ddot{\mathbf x}\) 引入张量微积分:在极坐标、球坐标这类曲线坐标里,基向量随位置变化,对它求导就产生 Christoffel 符号;换坐标时,第 T2 章的基变换矩阵 \(A\) 变成逐点变化的 Jacobian \(\partial u^i/\partial\tilde u^j\),得到全书唯一加方框的公式。牛顿力学本身与量化无关,但本章的两个结论对量化很重要:梯度按 Jacobian 协变地变换;二阶导数(Hessian、Christoffel 符号)在非线性换元下会多出一项,因而不是张量。这解释了"换参数化后牛顿法为什么表现不同""对数价格下的 Gamma 为什么多一项 Delta"等现象。

学习目标

读完本章,你应当能够:

  1. 由坐标变换 \(\mathbf x=\hat{\mathbf x}(u^j)\) 写出自然基 \(\mathbf g_i=\partial\mathbf x/\partial u^i\)、Jacobian 与倒易基,理解"运动标架":基向量随点变化。
  2. 推导一般坐标下的加速度 \(a^k=\ddot u^k+\Gamma^k_{ij}\dot u^i\dot u^j\),并把极坐标的向心项 \(-r\dot\theta^2\)、Coriolis 项 \(2\dot r\dot\theta\) 认作 Christoffel 符号的贡献。
  3. 用 \(\Gamma^k_{ij}=\mathbf g^k\cdot\mathbf g_{i,j}\) 或只用度量的公式 \(\Gamma^k_{ij}=\frac12g^{kp}(g_{ip,j}+g_{jp,i}-g_{ij,p})\) 计算 Christoffel 符号,并用 numpy.einsum 数值实现。
  4. 掌握方框公式:坐标变换下协变分量乘 \(\partial u^i/\partial\tilde u^j\),逆变分量乘 \(\partial\tilde u^i/\partial u^j\)。
  5. 理解 Christoffel 符号的变换含二阶导数项因而不是张量;把它对应到重参数化下 Hessian 的变换 \(\tilde H=J^TH J+\sum_kf_{,k}\,\partial^2u^k/\partial\tilde u\partial\tilde u\),并说明自然梯度为何与参数化无关。

读前导读

先说实话:这一章对量化是选读

张量篇(T1–T4)取材于一本写给力学和工程学生的书。本章的主线是牛顿定律、极坐标里的向心加速度和 Coriolis 项,这些和交易、定价、风控都没有直接关系。如果你时间紧,可以只读下面列出的几处,其余部分跳过,不影响后面各册。

真正对量化有用的只有三件事,而且都集中在 T3.5、T3.6 和实战 2:

  • 换参数时,一阶导数(梯度、Delta)只需乘 Jacobian。 这就是你熟悉的链式法则。期权 Delta 从"对价格"换成"对对数价格"要乘 \(S\),就是这一条。
  • 二阶导数(Hessian、Gamma)换参数时会多出一项。 多出的这一项正比于一阶导数,所以在最优点(一阶导数为零)消失。这解释了两件实务现象:对数价格下的 Gamma 比 \(S^2\Gamma\) 多一个 \(S\cdot\text{Delta}\);最大似然估计在 \(\sigma\) 和 \(\log\sigma\) 两种参数化下,标准误可以用 delta 方法互相换算,但牛顿法的迭代路径却不同。
  • 梯度要经过一个"度量"才成为方向。 偏导数向量告诉你"往各坐标方向走一步,函数变多少",但它本身不是"该往哪走"。把它乘上度量矩阵的逆,才是一个和参数化无关的方向。度量取 Fisher 信息时,这就是自然梯度。第 T4 章会把同一思路用到组合上,得到 \(\Sigma^{-1}\boldsymbol\mu\)。

这一章在解决什么问题

在笛卡尔坐标(普通的 \(x,y,z\))里,坐标轴方向处处相同,求导很简单。换成极坐标、球坐标这类"弯曲"的坐标后,"沿 \(r\) 增加的方向"在不同的点指向不同的地方。于是对一个向量求导时,除了分量本身的变化,还要算上"尺子方向变了"带来的变化。Christoffel 符号 \(\Gamma^k_{ij}\) 就是记录"尺子怎么变"的一张表。

用金融话说:债券价格对收益率的敏感度(DV01)本身随收益率水平变化,所以凸性里包含了"敏感度本身在变"的信息。本章讲的是同一类现象在多维、任意坐标下的系统写法。

需要先想起来的数学

1. 偏导数与链式法则。 偏导数 \(\partial f/\partial u\) 是只动 \(u\)、其他变量不动时 \(f\) 的变化率。链式法则说:若 \(f\) 依赖 \(u\),\(u\) 又依赖 \(\tilde u\),则 \(\dfrac{\partial f}{\partial\tilde u}=\dfrac{\partial f}{\partial u}\dfrac{\partial u}{\partial\tilde u}\)。例:\(V(S)\),\(S=e^x\),则 \(dV/dx=V'(S)\cdot e^x=S\cdot\text{Delta}\)。多元时把各条路径加起来:\(\partial f/\partial\tilde u^j=\sum_i(\partial f/\partial u^i)(\partial u^i/\partial\tilde u^j)\)。见 第 00 册第 02 章 导数与泰勒展开 和 第 00 册第 05 章 多元微积分与优化。

2. Jacobian 矩阵与行列式。 一组新变量对一组旧变量的偏导数排成矩阵,就是 Jacobian 矩阵,第 \((i,j)\) 元是 \(\partial x^i/\partial u^j\)。它是"局部的线性换算表":坐标变动 \(du\),位置大约变动 \(J\,du\)。它的行列式(本书也记作 \(J\))是局部面积(体积)的放大倍数。例:极坐标 \(x=r\cos\theta,y=r\sin\theta\),行列式为 \(r\),即半径 \(r\) 处,\(dr\,d\theta\) 的小格面积约为 \(r\,dr\,d\theta\)。见 第 00 册第 06 章 线性代数速成。

3. 二阶偏导与 Hessian。 二阶偏导 \(\partial^2f/\partial u^i\partial u^j\) 排成的矩阵叫 Hessian,描述函数的"弯曲程度",一维时就是凸性/Gamma。光滑函数的混合偏导可以交换次序:\(\partial^2f/\partial u\partial v=\partial^2f/\partial v\partial u\)。见第 00 册第 05 章。

4. 指标记号(第 T2 章)。 上标是编号不是幂,\(u^2\) 指"第 2 个坐标"。Einstein 求和约定:同一项里一个指标上下各出现一次,就自动对它求和,如 \(v^i\mathbf g_i=\sum_iv^i\mathbf g_i\);这种被求和的指标叫哑指标,换个字母不改变含义。\(\delta^i_j\)(Kronecker delta)在 \(i=j\) 时为 1,否则为 0,相当于单位矩阵。\(g_{ij}=\mathbf g_i\cdot\mathbf g_j\) 是度量矩阵,\(g^{ij}\) 是它的逆矩阵。记号速查见 第 00 册第 08 章 读懂数学证明与符号。

5. 本章的两个新符号。 逗号表示偏导:\(f_{,i}=\partial f/\partial u^i\),\(\mathbf g_{i,j}=\partial\mathbf g_i/\partial u^j\)。字母上加点表示对时间求导:\(\dot r=dr/dt\),\(\ddot r=d^2r/dt^2\)。

怎么读这一章

  • 跳过:T3.1(牛顿定律与守恒律)、T3.3(一般三维坐标)、T3.4 的具体例题和计数表、T3.7 中 Frenet–Serret 与中心力场两条。这些是力学内容。
  • 快速浏览:T3.2,只需抓住一句话:"基向量随位置变,求导时就多出 \(\Gamma\) 项"。极坐标的向心项 \(-r\dot\theta^2\) 是这个现象最直观的例子。
  • 核心必读:T3.5 的方框公式和随后关于 Delta 的那段;T3.6 整节,尤其是"量化翻译"框;实战 2 及其读法。
  • 建议顺序:先读 T3.5 → T3.6 → 实战 2,确认能看懂 \(\sigma\) 与 \(\log\sigma\) 的对比;有余力再回头看 T3.2 和 T3.4.2 的度量公式。

另外提醒一句:导言说原书"全书唯一加方框的公式"指的是 (3.89)(3.90);本教材为了醒目,也给其他几个关键公式加了方框,不要混淆。


T3.1 牛顿定律与坐标无关的形式(简要)

在惯性标架中,质点满足

\[\mathbf f=m\ddot{\mathbf x}.\tag{3.1}\]

(原书引 Truesdell:牛顿本人从未写出这种形式,最早写出它的是 Euler。)连续介质力学把整体形式 \(\mathbf F=\dot{\mathbf L}\) 与转动动量守恒当作对任意物体成立的公设,刚体则由特殊的本构假设定义。

不写分量,直接对 (3.1) 做向量运算就能得到几条守恒律:

  • 两边点乘 \(\dot{\mathbf x}\):外力功率 = 动能 \(k=\frac12m\dot{\mathbf x}\cdot\dot{\mathbf x}\) 的变化率;
  • 两边叉乘 \(\mathbf x\):力矩 = 转动动量 \(\mathbf x\times m\dot{\mathbf x}\) 的变化率;
  • 若存在势 \(v\) 使 \(\mathbf f\cdot\dot{\mathbf x}=-\dot v\),则 \(k+v=\) 常数(能量守恒);
  • 例 3.2(Kepler 定律):中心力场中 \(\mathbf x\times\dot{\mathbf x}=\mathbf c\) 为常向量,所以轨道在一个平面内,且由例 3.1 的面积公式 \(dA/dt=\frac12|\mathbf x\times\dot{\mathbf x}|\),相等时间扫过相等面积。

术语(3.3 节):质点占据的点集称为轨道(orbit),参数化 \(\mathbf x=\hat{\mathbf x}(t)\) 称为轨迹(trajectory),速度 \(\dot{\mathbf x}\) 与轨道相切,弧长 \(s=\int|\dot{\mathbf x}|dt\)。原书脚注举了一个好例子:滚动车轮边缘一点的轨迹是光滑的,但轨道(摆线)在触地点有尖点,因为那里速度为零。

这些坐标无关的结论简洁有力,但除特例外给不出运动的全部细节。要求解,就得写成分量;而要让力的分量简单,就得选合适的坐标,例如中心力问题用极坐标。


T3.2 极坐标:运动标架

T3.2.1 自然基与屋顶分量

原书从 3.5 节起把公式排成左右两栏:左栏是平面极坐标 \((r,\theta)\) 的具体公式,右栏是一般坐标的张量形式。本章沿用这种对照,写成"极坐标 ‖ 一般形式"。

\(x=r\cos\theta\),\(y=r\sin\theta\)。位置与速度:

\[\mathbf x=r\cos\theta\,\mathbf e_x+r\sin\theta\,\mathbf e_y\ \ \Big\|\ \ \mathbf x=\hat x^i(u^j)\mathbf e_i\tag{3.23}\]
\[\mathbf v=\dot{\mathbf x}=\frac{\partial\mathbf x}{\partial r}\dot r+\frac{\partial\mathbf x}{\partial\theta}\dot\theta\ \ \Big\|\ \ \mathbf v=\frac{\partial\mathbf x}{\partial u^i}\dot u^i\tag{3.24}\]

自然地定义

\[\mathbf g_r\equiv\frac{\partial\mathbf x}{\partial r}=\cos\theta\,\mathbf e_x+\sin\theta\,\mathbf e_y,\quad \mathbf g_\theta\equiv\frac{\partial\mathbf x}{\partial\theta}=-r\sin\theta\,\mathbf e_x+r\cos\theta\,\mathbf e_y\ \ \Big\|\ \ \mathbf g_i\equiv\frac{\partial\mathbf x}{\partial u^i}\tag{3.25}\]

Jacobian \(J=\det\begin{bmatrix}\cos\theta&-r\sin\theta\\\sin\theta&r\cos\theta\end{bmatrix}=r\)。于是 \(\mathbf v=v^r\mathbf g_r+v^\theta\mathbf g_\theta\),

\[v^r=\dot r,\quad v^\theta=\dot\theta\ \ \Big\|\ \ v^i=\dot u^i .\tag{3.27}\]

速度的屋顶(逆变)分量就是坐标的时间导数,\(\mathbf g_i\) 是该坐标系的地窖基向量(也叫自然基、协变基)。几何上(原书封面图),过点 \(P\) 有一条 \(r\)-坐标曲线(\(\theta\) 固定)和一条 \(\theta\)-坐标曲线(\(r\) 固定),\(\mathbf g_r,\mathbf g_\theta\) 分别与它们相切。注意 \(|\mathbf g_\theta|=r\),不是单位向量。

白话解释:\(\mathbf g_i=\partial\mathbf x/\partial u^i\) 回答的是"只把第 \(i\) 个坐标拨动一个单位,位置往哪儿走、走多远"。在半径 \(r\) 处把 \(\theta\) 拨动 1 弧度,点沿圆周走了 \(r\) 的距离,所以 \(|\mathbf g_\theta|=r\);拨动 \(r\) 一个单位,点沿径向走 1,所以 \(|\mathbf g_r|=1\)。离原点越远,\(\theta\) 的"一格"代表的实际距离越大。

金融直觉:这和 DV01 类似。收益率变 1bp,价格变多少,取决于你此刻所在的收益率水平。"坐标的一格"折算成"实际变化"的比例逐点不同,\(\mathbf g_i\) 就是这张逐点的换算表。

原点处 \(J=0\),基失效,这类点称为例外点(exceptional points)。作者说它们是许多坐标系的"祸与福":场方程常在那里出现奇异解,有时要按物理理由舍弃,有时恰好代表源、汇、涡线、集中力乃至黑洞这类有用的理想化。

T3.2.2 物理分量

\(\mathbf w\) 沿 \(\mathbf u\) 方向的物理分量(physical component)定义为 \(\mathbf w\cdot\bar{\mathbf u}\)。极坐标的屋顶基 \(\mathbf g^r=\cos\theta\,\mathbf e_x+\sin\theta\,\mathbf e_y\),\(\mathbf g^\theta=r^{-1}(-\sin\theta\,\mathbf e_x+\cos\theta\,\mathbf e_y)\),所以

\[v^{(r)}=\mathbf v\cdot\bar{\mathbf g}^r=\dot r,\quad v^{(\theta)}=\mathbf v\cdot\bar{\mathbf g}^\theta=r\dot\theta\ \ \Big\|\ \ v^{(i)}=v^i/|\mathbf g^i|\ (\text{不求和}).\tag{3.30}\]

这与通常的径向速度、角向速度一致。只有物理分量才有物理量纲:\(v^\theta=\dot\theta\) 的量纲是 1/时间,\(v^{(\theta)}=r\dot\theta\) 才是速度。量化里同理:同一笔风险,用"每单位对数价格"和"每元价格"表达,数值和单位都不同,比较前要统一。

T3.2.3 加速度与 Christoffel 符号

对 \(\mathbf v=v^i\mathbf g_i\) 求导:

\[\mathbf a=\dot v^r\mathbf g_r+v^r\dot{\mathbf g}_r+\dot v^\theta\mathbf g_\theta+v^\theta\dot{\mathbf g}_\theta\ \ \Big\|\ \ \mathbf a=\dot v^i\mathbf g_i+v^i\dot{\mathbf g}_i .\tag{3.31}\]

关键在第二项:基向量随点变化,所以它的时间导数不为零。这就是运动标架(moving frame)的本质。由链式法则,\(\dot{\mathbf g}_i=v^j\mathbf g_{i,j}\),这里逗号表示偏导:\(\mathbf g_{i,j}=\partial\mathbf g_i/\partial u^j\)。由于 \(\mathbf g_{i,j}=\mathbf x_{,ij}=\mathbf x_{,ji}=\mathbf g_{j,i}\),二阶混合偏导可交换。

\(\mathbf g_{i,j}\) 本身是向量,可以用基展开:

\[\boxed{\ \mathbf g_{i,j}=\mathbf g_{j,i}=\Gamma^k_{ij}\mathbf g_k\ }\tag{3.33}\]

系数 \(\Gamma^k_{ij}\) 称为该坐标系的 Christoffel 符号(Christoffel symbols),下指标对称 \(\Gamma^k_{ij}=\Gamma^k_{ji}\)。代入 (3.31),把第一项的哑指标 \(i\) 换成 \(k\)(张量分析的典型招数):

\[\mathbf a=(\dot v^k+\Gamma^k_{ij}v^iv^j)\mathbf g_k\equiv a^k\mathbf g_k .\tag{3.35}\]

推导拆解:从 (3.31) 到 (3.35) 共四步。

  1. \(\mathbf v=v^i\mathbf g_i\) 是"分量 × 基"的乘积,对时间求导用乘积法则:\(\mathbf a=\dot v^i\mathbf g_i+v^i\dot{\mathbf g}_i\)。
  2. \(\mathbf g_i\) 不直接依赖时间,它依赖位置 \(u^j\),而 \(u^j\) 随时间变。用链式法则:\(\dot{\mathbf g}_i=\dfrac{\partial\mathbf g_i}{\partial u^j}\dfrac{du^j}{dt}=\mathbf g_{i,j}\,v^j\)(这里用了 (3.27) 的 \(v^j=\dot u^j\))。
  3. 代入 (3.33):\(v^i\dot{\mathbf g}_i=v^iv^j\Gamma^k_{ij}\mathbf g_k\)。
  4. 第一项 \(\dot v^i\mathbf g_i\) 里的 \(i\) 是哑指标,改名为 \(k\) 写成 \(\dot v^k\mathbf g_k\),于是两项都乘 \(\mathbf g_k\),可以合并。

结论的读法:加速度的分量 = 分量自身的变化率 \(\dot v^k\) + 基向量变化造成的修正 \(\Gamma^k_{ij}v^iv^j\)。在笛卡尔坐标里基不变,\(\Gamma=0\),只剩第一项。

极坐标下,\(\mathbf g_{r,r}=\mathbf 0\),\(\mathbf g_{r,\theta}=\mathbf g_{\theta,r}=r^{-1}\mathbf g_\theta\),\(\mathbf g_{\theta,\theta}=-r\mathbf g_r\),比较得

\[\Gamma^\theta_{r\theta}=\Gamma^\theta_{\theta r}=r^{-1},\qquad \Gamma^r_{\theta\theta}=-r,\qquad\text{其余为 }0 .\tag{3.37}\]

推导拆解:直接对 (3.25) 求偏导,再和基向量比较。

  • \(\mathbf g_r=(\cos\theta,\sin\theta)\) 不含 \(r\),所以 \(\mathbf g_{r,r}=\mathbf 0\)。
  • 对 \(\theta\) 求导:\(\mathbf g_{r,\theta}=(-\sin\theta,\cos\theta)\)。而 \(\mathbf g_\theta=r(-\sin\theta,\cos\theta)\),所以 \(\mathbf g_{r,\theta}=r^{-1}\mathbf g_\theta\),读出 \(\Gamma^\theta_{r\theta}=r^{-1}\)、\(\Gamma^r_{r\theta}=0\)。
  • \(\mathbf g_{\theta,\theta}=(-r\cos\theta,-r\sin\theta)=-r\,\mathbf g_r\),读出 \(\Gamma^r_{\theta\theta}=-r\)、\(\Gamma^\theta_{\theta\theta}=0\)。

再代入 (3.35):\(a^r=\ddot r+\Gamma^r_{\theta\theta}\dot\theta^2=\ddot r-r\dot\theta^2\);\(a^\theta=\ddot\theta+(\Gamma^\theta_{r\theta}+\Gamma^\theta_{\theta r})\dot r\dot\theta=\ddot\theta+2r^{-1}\dot r\dot\theta\)。系数 2 来自 \((i,j)=(r,\theta)\) 和 \((\theta,r)\) 两项都要求和。

于是

\[\mathbf a=(\ddot r-r\dot\theta^2)\mathbf g_r+(\ddot\theta+2r^{-1}\dot r\dot\theta)\mathbf g_\theta,\qquad a^{(r)}=\ddot r-r\dot\theta^2,\quad a^{(\theta)}=r\ddot\theta+2\dot r\dot\theta .\tag{3.38–3.39}\]

物理课上的向心加速度 \(-r\dot\theta^2\) 和 Coriolis 项 \(2\dot r\dot\theta\) 原来完全来自基向量的变化。牛顿定律的分量形式为 \(f^r=m(\ddot r-r\dot\theta^2)\),\(f^\theta=m(\ddot\theta+2r^{-1}\dot r\dot\theta)\)。中心力场 \(f^\theta=0\) 时,第二式等价于 \(r^{-2}(r^2\dot\theta)^\cdot=0\),即 \(r^2\dot\theta\) 为常数,又一次得到 Kepler 定律。


T3.3 一般三维坐标

T3.3.1 常用坐标系

  • 球坐标 \((\rho,\phi,\theta)\):\(x=\rho\sin\phi\cos\theta\),\(y=\rho\sin\phi\sin\theta\),\(z=\rho\cos\phi\)(\(\phi\) 为余纬),\(z\) 轴是例外点。
  • 斜笛卡尔坐标 \((u,v,w)\):\(x^i=A^i_ju^j\),\(\det A\ne0\) 时无例外点。这正是第 T2 章的一般基。
  • 圆柱坐标 \((r,\theta,z)\)。

统一记号:\(x^i=\hat x^i(u^j)\)(式 3.49),上标是指标不是幂;\(j\) 称为自变量指标,只要求与该项其他指标不同名。

T3.3.2 一般坐标下的牛顿定律

逐条照搬极坐标的推导(原书在每个一般公式后用方括号注明对应的极坐标公式编号):

\[\mathbf g_i\equiv\frac{\partial\mathbf x}{\partial u^i}=x^k_{,i}\mathbf e_k,\qquad v^i=\dot u^i,\qquad \mathbf g_{i,j}=\Gamma^k_{ij}\mathbf g_k ,\tag{3.53, 3.58, 3.63}\]
\[a^k=\ddot u^k+\Gamma^k_{ij}\dot u^i\dot u^j,\qquad f^k=m(\ddot u^k+\Gamma^k_{ij}\dot u^i\dot u^j).\tag{3.65, 3.68}\]

例 3.3 球坐标的地窖基向量与 Jacobian:\(\mathbf g_\rho=(\sin\phi\cos\theta,\sin\phi\sin\theta,\cos\phi)\),\(\mathbf g_\phi=\rho(\cos\phi\cos\theta,\cos\phi\sin\theta,-\sin\phi)\),\(\mathbf g_\theta=\rho\sin\phi(-\sin\theta,\cos\theta,0)\),\(J=\rho^2\sin\phi\)。

\(f^k=0\) 时,\(\ddot u^k+\Gamma^k_{ij}\dot u^i\dot u^j=0\) 描述的是欧氏空间里的匀速直线运动在曲线坐标下的样子。第 T4 章会看到,同一个方程在曲面上就是测地线方程。


T3.4 Christoffel 符号的计算

T3.4.1 算法一:用倒易基

对 (3.63) 两边点乘 \(\mathbf g^p\),由 \(\mathbf g^p\cdot\mathbf g_k=\delta^p_k\):

\[\Gamma^k_{ij}=\mathbf g^k\cdot\mathbf g_{i,j}.\tag{3.69}\]

步骤:(a) 求 \(\mathbf g_{i,j}\) 的笛卡尔分量;(b) 求 Jacobian 矩阵的逆得到 \(\mathbf g^k\);(c) 做点积。

例 3.4 \(x^1=u^1u^2\),\(x^2=(u^3)^2\),\(x^3=(u^1)^2-(u^2)^2\)(记 \(u,v,w\))。\(\mathbf g_u\sim(v,0,2u)\),\(\mathbf g_v\sim(u,0,-2v)\),\(\mathbf g_w\sim(0,2w,0)\);二阶导数中非零的只有 \(\mathbf g_{u,u}\sim(0,0,2)\),\(\mathbf g_{u,v}\sim(1,0,0)\),\(\mathbf g_{v,v}\sim(0,0,-2)\),\(\mathbf g_{w,w}\sim(0,2,0)\)。\(J=4w(u^2+v^2)\),用伴随公式求逆:

\[G^{-1}=J^{-1}\begin{bmatrix}4vw&0&2uw\\4uw&0&-2vw\\0&2u^2+2v^2&0\end{bmatrix}.\]

于是 \(\Gamma^u_{uu}=J^{-1}(2uw)(2)=u/(u^2+v^2)\),\(\Gamma^u_{uv}=v/(u^2+v^2)\),类似地 \(-\Gamma^u_{vv}=\Gamma^v_{uv}=u/(u^2+v^2)\),\(-\Gamma^v_{uu}=\Gamma^v_{vv}=v/(u^2+v^2)\),\(\Gamma^w_{ww}=1/w\),其余为零。(三维中独立的 Christoffel 符号共 \(3\times6=18\) 个。)

T3.4.2 算法二:只用度量

\[\boxed{\ \Gamma^k_{ij}=\tfrac12g^{kp}\left(g_{ip,j}+g_{jp,i}-g_{ij,p}\right)\ }\tag{3.71}\]

推导(值得自己走一遍,这是指标技巧的典型):对 \(g_{ij}=\mathbf g_i\cdot\mathbf g_j\) 求导并代入 (3.63),

\[g_{ij,k}=\mathbf g_{i,k}\cdot\mathbf g_j+\mathbf g_i\cdot\mathbf g_{j,k}=\Gamma^p_{ik}g_{pj}+\Gamma^p_{jk}g_{pi}.\tag{3.78}\]

在 (3.78) 中轮换指标得到另外两式 \(g_{kj,i}=\Gamma^p_{ki}g_{pj}+\Gamma^p_{ji}g_{pk}\),\(g_{ik,j}=\Gamma^p_{ij}g_{pk}+\Gamma^p_{kj}g_{pi}\)。第一式加第二式减第三式,利用 \(\Gamma\) 下指标对称,四项两两相消:

\[g_{ij,k}+g_{kj,i}-g_{ik,j}=2\Gamma^p_{ik}g_{pj}.\]

两边乘 \(\frac12g^{qj}\) 并对 \(j\) 求和(升指标),即得 (3.71)。

白话解释:第一次读不必跟完指标轮换,记住结论即可:Christoffel 符号完全由度量 \(g_{ij}\) 及其一阶导数决定。\(g_{ij}=\mathbf g_i\cdot\mathbf g_j\) 记录各方向"一格"的长度和夹角;它随位置怎么变,"尺子"就怎么变,\(\Gamma\) 也就跟着定了。最后一步"乘 \(g^{qj}\)"就是用度量矩阵的逆把方程解出来,作用相当于普通方程两边乘系数矩阵的逆。

这对量化的意义在于:统计模型里没有"嵌入的笛卡尔空间",只有一个度量(Fisher 信息矩阵)。(3.71) 保证了只凭这个矩阵,就能定义"直线"(测地线)和"二阶修正",信息几何就是从这里起步的。

这个公式有两个优点。第一,它只依赖度量 \(g_{ij}\),不需要把空间嵌入笛卡尔空间,因此可直接用于广义相对论(指标取 1–4),也可用于任何"只给了度量"的场合,比如以 Fisher 信息为度量的统计流形。第二,正交坐标中 \([g_{ij}]\) 对角,(3.71) 分成四种情形(不对 \(k\) 求和):

情形 公式 个数(\(n\) 维,按 \(\Gamma^k_{ij}=\Gamma^k_{ji}\) 计)
(a) \(i,j,k\) 互异 \(\Gamma^k_{ij}=0\) \(n(n-1)(n-2)/2\)
(b) \(i\ne j\),\(k\) 等于其一 \(\Gamma^i_{ij}=\frac12g^{ii}g_{ii,j}\) \(n(n-1)\)
(c) \(i=j\ne k\) \(\Gamma^k_{ii}=-\frac12g^{kk}g_{ii,k}\) \(n(n-1)\)
(d) 全相等 \(\Gamma^i_{ii}=\frac12g^{ii}g_{ii,i}\) \(n\)

四类合计 \(n^2(n+1)/2\),三维为 18。

原书疑似印误(式 3.73)。 原书称情形 (a) 的符号在 \(n\) 维中有 \(n(n-1)/2\) 个。按下指标对称计数,应为 \(n\binom{n-1}{2}=n(n-1)(n-2)/2\)。两者只在 \(n=3\) 时相等(都是 3),所以三维的例子不受影响。上表已按正确计数给出,并可用四类之和 \(n^2(n+1)/2\) 核对。

例 3.5(球坐标) \([g_{ij}]=\operatorname{diag}(1,\rho^2,\rho^2\sin^2\phi)\)。非零的 Christoffel 符号为

\[\Gamma^\phi_{\rho\phi}=\Gamma^\theta_{\rho\theta}=\rho^{-1},\quad \Gamma^\theta_{\phi\theta}=\cot\phi,\quad \Gamma^\rho_{\phi\phi}=-\rho,\quad \Gamma^\rho_{\theta\theta}=-\rho\sin^2\phi,\quad \Gamma^\phi_{\theta\theta}=-\sin\phi\cos\phi\]

(以及下指标交换后的相同值)。例如 (b) 型 \(\Gamma^\theta_{\theta\phi}=\frac12\rho^{-2}\csc^2\phi\cdot2\rho^2\sin\phi\cos\phi=\cot\phi\)。

例 3.6 球坐标中加速度的 \(\phi\) 分量。由 (3.65),只有 \(\Gamma^2_{12}\) 和 \(\Gamma^2_{33}\) 非零:

\[a^\phi=\ddot\phi+2\rho^{-1}\dot\rho\dot\phi-\dot\theta^2\sin\phi\cos\phi,\qquad a^{(\phi)}=\rho a^\phi=\rho\ddot\phi+2\dot\rho\dot\phi-\rho\dot\theta^2\sin\phi\cos\phi .\]

再次提醒:只有物理分量 \(a^{(\phi)}\) 有加速度量纲。


T3.5 坐标变换与方框公式

T3.5.1 自然基的变换

设从 \(u^j\) 坐标变到 \(\tilde u^k\) 坐标:\(u^j=\hat u^j(\tilde u^k)\),除个别例外点外一一对应且连续可微。例如圆柱 \((r,\theta,z)\) 到球 \((\rho,\phi,\theta)\):\(r=\rho\sin\phi\),\(\theta=\theta\),\(z=\rho\cos\phi\)。新自然基由链式法则

\[\tilde{\mathbf g}_j=\frac{\partial\mathbf x}{\partial\tilde u^j}=\frac{\partial u^i}{\partial\tilde u^j}\mathbf g_i .\tag{3.86}\]

与第 T2 章的 \(\tilde{\mathbf g}_j=A^i_j\mathbf g_i\) 同形,只是现在

\[A^i_j=\frac{\partial u^i}{\partial\tilde u^j},\qquad (A^{-1})^i_j=\frac{\partial\tilde u^i}{\partial u^j}\tag{3.87–3.88}\]

逐点变化。

T3.5.2 全书唯一的方框公式

把 (3.87)(3.88) 代入第 T2 章的 (2.36)(2.38):

\[\boxed{\ \tilde v_j=\frac{\partial u^i}{\partial\tilde u^j}v_i,\qquad \tilde v^i=\frac{\partial\tilde u^i}{\partial u^j}v^j\ }\tag{3.89}\]
\[\boxed{\ \tilde T_{ij}=\frac{\partial u^k}{\partial\tilde u^i}\frac{\partial u^p}{\partial\tilde u^j}T_{kp},\quad \tilde T^i_{\cdot j}=\frac{\partial\tilde u^i}{\partial u^k}\frac{\partial u^p}{\partial\tilde u^j}T^k_{\cdot p},\quad \tilde T_j^{\cdot i}=\frac{\partial u^k}{\partial\tilde u^j}\frac{\partial\tilde u^i}{\partial u^p}T_k^{\cdot p},\quad \tilde T^{ij}=\frac{\partial\tilde u^i}{\partial u^k}\frac{\partial\tilde u^j}{\partial u^p}T^{kp}\ }\tag{3.90}\]

记忆方法:新指标在分母(\(\tilde u\) 在下)就是协变,新指标在分子(\(\tilde u\) 在上)就是逆变,指标位置自然配平。许多教材一开头就把 (3.89)(3.90) 当作协变/逆变向量和张量的定义;广义相对论和壳体理论处理弯曲连续体时常采用这种观点。本书则把它作为推论。

金融直觉:为什么会有两种相反的换算方向?看一个一维例子。期权损益的一阶近似是 \(\text{P\&L}\approx\text{Delta}\times\Delta S\)。现在改用对数价格 \(x=\ln S\):

  • 敏感度变成 \(\partial V/\partial x=S\cdot\text{Delta}\),乘 \(\partial S/\partial x=S\),这是协变分量的换法(\((3.89)_1\));
  • 价格变动变成 \(\Delta x\approx\Delta S/S\),乘 \(\partial x/\partial S=1/S\),这是逆变分量的换法(\((3.89)_2\))。

两者一乘一除,乘积 \((S\cdot\text{Delta})(\Delta S/S)=\text{Delta}\times\Delta S\) 不变。这就是整个方框公式的用意:"敏感度"类的量(梯度、Delta、DV01)和"位移"类的量(价格变动、参数步长)反向换算,保证它们的配对,也就是 P&L,与你选的坐标无关。张量篇里"协变"与"逆变"之分,归根到底就是这两类量的区别。

量化里最常见的协变量是梯度。 第 T4 章会正式证明:标量函数的偏导数 \(f_{,i}\) 是梯度的地窖分量。所以 \((3.89)_1\) 就是链式法则 \(\partial f/\partial\tilde u^j=(\partial u^i/\partial\tilde u^j)\,\partial f/\partial u^i\)。期权的 Delta 从"对价格"换成"对对数价格",\(\partial V/\partial x=S\,\partial V/\partial S\)(\(x=\ln S\)),就是这个公式的一维情形。

例 3.7 圆柱坐标中某张量在 \(r=1,\theta=\pi/4,z=-\sqrt3\) 处的混合分量(第 \(i\) 行第 \(j\) 列为 \(T_j^{\cdot i}\))为

\[[T_j^{\cdot i}]=\begin{bmatrix}2&-1&1\\0&1&2\\3&0&-2\end{bmatrix},\]

求球坐标分量 \(\tilde T_2^{\cdot1}\)。该点 \(\rho=2\),\(\sin\phi=\frac12\),\(\cos\phi=-\frac{\sqrt3}2\)。两个 Jacobian 矩阵为

\[\left[\frac{\partial u^k}{\partial\tilde u^j}\right]=\begin{bmatrix}\sin\phi&\rho\cos\phi&0\\0&0&1\\\cos\phi&-\rho\sin\phi&0\end{bmatrix},\qquad \left[\frac{\partial\tilde u^i}{\partial u^p}\right]=\begin{bmatrix}\sin\phi&0&\cos\phi\\\rho^{-1}\cos\phi&0&-\rho^{-1}\sin\phi\\0&1&0\end{bmatrix}.\]

由 \((3.90)_3\):

\[\tilde T_2^{\cdot1}=\sin\phi\,[T_1^{\cdot1}\rho\cos\phi+T_3^{\cdot1}(-\rho\sin\phi)]+\cos\phi\,[T_1^{\cdot3}\rho\cos\phi+T_3^{\cdot3}(-\rho\sin\phi)]=\tfrac12[-2\sqrt3-1]-\tfrac{\sqrt3}2[-3\sqrt3+2]=4-2\sqrt3 .\]

T3.6 Christoffel 符号不是张量

定义新坐标下的 \(\tilde\Gamma^i_{jk}=\tilde{\mathbf g}^i\cdot\partial\tilde{\mathbf g}_j/\partial\tilde u^k\)。对 (3.86) 再求一次导,乘积法则给出两项:

\[\frac{\partial\tilde{\mathbf g}_j}{\partial\tilde u^k}=\frac{\partial^2u^q}{\partial\tilde u^j\partial\tilde u^k}\mathbf g_q+\frac{\partial u^q}{\partial\tilde u^j}\frac{\partial u^r}{\partial\tilde u^k}\Gamma^s_{qr}\mathbf g_s .\]

点乘 \(\tilde{\mathbf g}^i=(\partial\tilde u^i/\partial u^p)\mathbf g^p\):

\[\tilde\Gamma^i_{jk}=\frac{\partial\tilde u^i}{\partial u^p}\left(\underline{\frac{\partial^2u^p}{\partial\tilde u^j\partial\tilde u^k}}+\frac{\partial u^q}{\partial\tilde u^j}\frac{\partial u^r}{\partial\tilde u^k}\Gamma^p_{qr}\right).\tag{3.95}\]

如果没有带下划线的二阶导数项,这就是 3 阶张量(一个上标、两个下标)的变换律。正因为有这一项,Christoffel 符号不是张量的分量。有些作者因此把它写成 \(\{^{\,i}_{jk}\}\) 以示区别。

白话解释:"是不是张量"的意思是:换坐标时,它能不能只靠乘几个 Jacobian 就换算过去。一阶导数可以,二阶导数一般不行。最简单的例子:\(f(u)=u\) 是直线,\(f''=0\)。改用坐标 \(u=\tilde u^2\) 后,\(f=\tilde u^2\),对 \(\tilde u\) 的二阶导数是 2。原来是 0,乘任何 Jacobian 还是 0,得不到 2。多出来的 2 完全是"坐标本身弯曲"造成的,就是 (3.95) 下划线项的一维版本。

所以 \(\Gamma\) 本身没有坐标无关的意义:同一个平面,笛卡尔坐标下 \(\Gamma=0\),极坐标下 \(\Gamma\ne0\)。它是"这套坐标弯不弯"的记录,而不是"空间弯不弯"的记录。空间本身弯不弯,要看第 T4 章的曲率。

两个推论:

  1. 线性坐标变换下二阶导数项为零,\(\Gamma\) 按张量变换。所以笛卡尔坐标和斜笛卡尔坐标的 Christoffel 符号都是零。
  2. 只要空间能用笛卡尔坐标描述(对气球这种内蕴弯曲的连续体做不到),取旧坐标为笛卡尔 \(x^i\)(其中 \(\Gamma\equiv0\))、新坐标为一般 \(u^i\),得
\[\Gamma^i_{jk}=\frac{\partial u^i}{\partial x^p}\frac{\partial^2x^p}{\partial u^j\partial u^k}.\tag{3.96}\]

量化翻译:Hessian 在非线性换元下也不是张量。 设 \(f(u)\) 是目标函数(如负对数似然),换参数 \(u=u(\tilde u)\)。链式法则两次:

\[\frac{\partial^2f}{\partial\tilde u^i\partial\tilde u^j}=\frac{\partial u^k}{\partial\tilde u^i}\frac{\partial u^p}{\partial\tilde u^j}\frac{\partial^2f}{\partial u^k\partial u^p}+\underline{\frac{\partial f}{\partial u^k}\frac{\partial^2u^k}{\partial\tilde u^i\partial\tilde u^j}}.\]
第一项是 \((0,2)\) 型张量的变换律 \(J^THJ\),第二项和 (3.95) 的下划线项同源。它在驻点(\(\partial f/\partial u=0\))处消失,所以最优点处的 Hessian(以及由它得到的标准误)是张量,按 \(J^THJ\) 变换;离开驻点就不是。直接后果:

  • 牛顿法不具有非线性重参数化不变性:从同一个点出发,在 \(\sigma\) 和 \(\log\sigma\) 下迭代,路径不同(实战 2 演示)。
  • 期权的对数 Gamma:\(x=\ln S\) 时 \(\partial^2V/\partial x^2=S^2\,\partial^2V/\partial S^2+S\,\partial V/\partial S\)。多出来的 \(S\,\partial V/\partial S\) 正是这个附加项,这也是 Black–Scholes 方程换到对数价格后出现 \(-\frac12\sigma^2\partial_x\) 一项的来源(第 T4 章实战核对)。
  • 自然梯度(natural gradient)用 Fisher 信息 \(g_{ij}\) 作度量,更新方向 \(-g^{ij}f_{,j}\):\(f_{,j}\) 协变,\(g^{ij}\) 两个上标逆变,乘积是逆变向量(一个"位移"),在任何参数化下指向同一个几何方向。这是它对参数化不变(到一阶)的原因。
  • Itô 引理 \(df(X)=f'dX+\frac12f''d\langle X\rangle\) 中的二阶项也是"非线性换元下二阶量不按张量变换"的体现,二者是概念上的类比;原书没有任何随机分析内容,Itô 引理见第 08 册。

推导拆解:上面框里的几个结论,在一维下都可以手算核对。

Hessian 公式。 设 \(u=u(\tilde u)\)。先求一阶导:\(\dfrac{df}{d\tilde u}=f'(u)\,u'(\tilde u)\)(链式法则)。再对 \(\tilde u\) 求导,用乘积法则:第一个因子 \(f'(u)\) 的导数是 \(f''(u)\,u'\),第二个因子 \(u'\) 的导数是 \(u''\),所以

\[\frac{d^2f}{d\tilde u^2}=f''(u)\,(u')^2+f'(u)\,u''.\]
第一项是"张量项" \(J^THJ\) 的一维版本,第二项是附加项。

对数 Gamma。 取 \(S=e^x\),则 \(dS/dx=S\),\(d^2S/dx^2=S\)。代入上式:\(V_{xx}=V_{SS}S^2+V_SS\)。

自然梯度为何不变。 用实战 2 的记号:在 \(\sigma\) 坐标,自然梯度一步是 \(\Delta\sigma=-\eta f_\sigma/g_{\sigma\sigma}\)。在 \(\theta=\log\sigma\) 坐标,\(f_\theta=\sigma f_\sigma\),\(g_{\theta\theta}=\sigma^2g_{\sigma\sigma}\),一步是 \(\Delta\theta=-\eta\,\sigma f_\sigma/(\sigma^2g_{\sigma\sigma})=-\eta f_\sigma/(\sigma g_{\sigma\sigma})\)。折回 \(\sigma\):\(\Delta\sigma\approx\sigma\Delta\theta=-\eta f_\sigma/g_{\sigma\sigma}\),与前者相同。分子按 Jacobian 乘一次,分母按 Jacobian 乘两次,再折回时又乘一次,正好抵消。

普通梯度为何不行。 在 \(\theta\) 坐标走 \(\Delta\theta=-\eta f_\theta=-\eta\sigma f_\sigma\),折回 \(\sigma\) 是 \(\Delta\sigma\approx-\eta\sigma^2f_\sigma\),比 \(\sigma\) 坐标下的 \(-\eta f_\sigma\) 多了因子 \(\sigma^2\)。日波动率约 0.02 时 \(\sigma^2=4\times10^{-4}\),步子小了两千多倍,这就是实战 2 中 \(\theta\) 坐标"几乎没动"的原因。


T3.7 习题中的重要结论

原书第 III 章 18 道习题,以下结论值得掌握:

  • 倒易基的导数(习题 3.11):对 \(\mathbf g^i\cdot\mathbf g_j=\delta^i_j\) 求导得 \(\mathbf g^i_{,j}=-\Gamma^i_{jk}\mathbf g^k\)(式 3.104)。第 T4 章推导协变分量的协变导数要用。
  • 度量与弧长(习题 3.12):\(ds^2=d\mathbf x\cdot d\mathbf x=g_{ij}du^idu^j\),曲线长 \(\int\sqrt{g_{ij}\dot u^i\dot u^j}\,dt\)。\(g_{ij}\) 因此被称为度量张量。把 \(g_{ij}\) 换成 Fisher 信息,\(ds^2\) 就是两个邻近分布之间的"统计距离",这是信息几何的出发点。

金融直觉:\(ds^2=g_{ij}du^idu^j\) 是一个二次型,和组合方差 \(\mathbf w\cdot\Sigma\mathbf w\) 形式完全相同。若把 \(g_{ij}\) 取成协方差矩阵的逆 \(\Sigma^{-1}\),\(ds^2\) 就是马氏距离的平方。度量的作用是告诉你"同样的数值变动,在这里算远还是算近":波动率 1% 的资产涨 2% 是两个标准差,波动率 10% 的资产涨 2% 只是 0.2 个标准差。以 Fisher 信息为度量时,"远近"按"两个参数值能否被数据区分开"来衡量。

  • Frenet–Serret 公式(习题 3.4):\(\ddot{\mathbf x}=\ddot s\mathbf t+\kappa\dot s^2\mathbf n\)(路径加速度 + 向心加速度),曲率 \(\kappa=|\dot{\mathbf x}\times\ddot{\mathbf x}|/|\dot{\mathbf x}|^3\),挠率 \(\tau=(\dot{\mathbf x}\times\ddot{\mathbf x})\cdot\dddot{\mathbf x}/|\dot{\mathbf x}\times\ddot{\mathbf x}|^2\);\(\kappa(s),\tau(s)\) 在刚体运动意义下唯一确定曲线。习题 3.5 求圆柱螺旋线的 \(\kappa,\tau\)。
  • Christoffel 符号能否任意指定(习题 3.16):不能。\(\Gamma\) 由度量的导数决定,必须满足可积性条件,这是第 T4 章曲率概念的伏笔。
  • 由解析函数生成的柱坐标(习题 3.17):\(x+iy=f(u+iv)\) 给出正交坐标,\(J=|f'|^2\),Christoffel 符号由 \(f''/f'\) 的实部和虚部给出;抛物柱、椭圆柱、双极柱坐标都是特例。
  • 中心力场轨道化为求积(习题 3.7):用 \(r^2\dot\theta=r_0\) 消去 \(\theta\),得到只含 \(r\) 的一阶方程。

量化实战

实战 1:数值计算 Christoffel 符号,并复核原书例题

用有限差分求自然基及其导数,分别按 (3.69) 和 (3.71) 两种算法计算球坐标的 Christoffel 符号,与例 3.5 的闭式解对照;再用 einsum 实现方框公式 \((3.90)_3\),复核例 3.7。这套"数值 Jacobian + einsum"的写法可以直接用于任何只给出参数化映射的问题。

import numpy as np
np.set_printoptions(precision=5, suppress=True)

# ---- 1. 球坐标 (rho, phi, theta) 的 Christoffel 符号:两种算法 + 原书闭式解 ----
def x_of_u(u):
    rho, phi, th = u
    return np.array([rho*np.sin(phi)*np.cos(th), rho*np.sin(phi)*np.sin(th), rho*np.cos(phi)])

def jac(f, u, h=1e-5):                       # 数值 Jacobian:第 i 列 = df/du^i
    return np.column_stack([(f(u + h*e) - f(u - h*e)) / (2*h) for e in np.eye(len(u))])

u0 = np.array([2.0, 0.7, 1.1])
G = jac(x_of_u, u0)                          # 列 = 地窖基 g_i = dx/du^i
Ginv = np.linalg.inv(G)                      # 行 = 屋顶基 g^k
# g_{i,j}:对 u^j 再求一次导,得到形状 [p(笛卡尔), i, j]
dG = np.stack([(jac(x_of_u, u0 + 1e-4*e) - jac(x_of_u, u0 - 1e-4*e)) / 2e-4
               for e in np.eye(3)], axis=-1)
Gamma1 = np.einsum('kp,pij->kij', Ginv, dG)  # (3.69) Gamma^k_ij = g^k . g_{i,j}

# 第二种:只用度量 (3.71) Gamma^k_ij = 1/2 g^{kp}(g_ip,j + g_jp,i - g_ij,p)
def metric(u):
    J = jac(x_of_u, u); return J.T @ J
dg = np.stack([(metric(u0 + 1e-4*e) - metric(u0 - 1e-4*e)) / 2e-4 for e in np.eye(3)], axis=-1)  # dg[i,j,p]=g_ij,p
g_up = np.linalg.inv(metric(u0))
Gamma2 = 0.5 * np.einsum('kp,ijp->kij', g_up,
                         np.einsum('ipj->ijp', dg) + np.einsum('jpi->ijp', dg) - dg)
print("两种算法最大差:", np.abs(Gamma1 - Gamma2).max())

rho, phi = u0[0], u0[1]
book = {(1,0,1): 1/rho, (2,0,2): 1/rho, (2,1,2): 1/np.tan(phi),          # 例 3.5 (b)
        (0,1,1): -rho, (0,2,2): -rho*np.sin(phi)**2, (1,2,2): -np.sin(phi)*np.cos(phi)}  # (c)
for (k, i, j), val in book.items():
    print(f"Gamma^{k+1}_{i+1}{j+1}: 数值 {Gamma1[k,i,j]: .5f}  原书 {val: .5f}")
nonzero = {(k,i,j) for (k,i,j) in book} | {(k,j,i) for (k,i,j) in book}
others = [abs(Gamma1[k,i,j]) for k in range(3) for i in range(3) for j in range(3) if (k,i,j) not in nonzero]
print("其余分量最大绝对值:", max(others))

# ---- 2. 例 3.7:圆柱 -> 球坐标,混合分量的方框公式 (3.90)_3 ----
r_, phi_ = 2.0, np.arcsin(0.5)
phi_ = np.pi - phi_                           # sin(phi)=1/2, cos(phi)=-sqrt(3)/2
s, c = np.sin(phi_), np.cos(phi_)
dU_dUt = np.array([[s, r_*c, 0], [0, 0, 1], [c, -r_*s, 0]])   # [du^k/du~^j],(r,theta,z) 对 (rho,phi,theta)
dUt_dU = np.linalg.inv(dU_dUt)                                  # [du~^i/du^p]
Tm = np.array([[2, -1, 1], [0, 1, 2], [3, 0, -2.]])            # [T_j^.i]:第 i 行第 j 列
Tt = np.einsum('kj,ip,pk->ij', dU_dUt, dUt_dU, Tm)            # T~_j^.i = du^k/du~^j du~^i/du^p T_k^.p
print("T~_2^1 =", Tt[0, 1], "  原书 4-2*sqrt(3) =", 4 - 2*np.sqrt(3))

关键输出(指标 1,2,3 对应 \(\rho,\phi,\theta\);取点 \(\rho=2,\phi=0.7\)):

两种算法最大差: 7.568755733267096e-08
Gamma^2_12: 数值  0.50000  原书  0.50000
Gamma^3_13: 数值  0.50000  原书  0.50000
Gamma^3_23: 数值  1.18724  原书  1.18724
Gamma^1_22: 数值 -2.00000  原书 -2.00000
Gamma^1_33: 数值 -0.83003  原书 -0.83003
Gamma^2_33: 数值 -0.49272  原书 -0.49272
其余分量最大绝对值: 3.9981288639928586e-08
T~_2^1 = 0.5358983848622461   原书 4-2*sqrt(3) = 0.5358983848622456

实战 2:重参数化——梯度协变、Hessian 不是张量、自然梯度不变

用 250 个模拟日收益估计波动率 \(\sigma\)。负对数似然 \(f(\sigma)=n\log\sigma+S/(2\sigma^2)\),\(S=\sum x_t^2\)。比较参数 \(\sigma\) 与 \(\theta=\log\sigma\):

  • 梯度:\(f_\theta=f_\sigma\cdot\sigma\)(方框公式 \((3.89)_1\));
  • Hessian:\(f_{\theta\theta}=f_{\sigma\sigma}\sigma^2+f_\sigma\sigma\),第二项是附加项;
  • Fisher 信息(度量):\(g_{\sigma\sigma}=2n/\sigma^2\),\(g_{\theta\theta}=g_{\sigma\sigma}\sigma^2=2n\),按 2 阶协变张量变换。
import numpy as np
rng = np.random.default_rng(3)

# 日收益样本(均值视为 0),估计波动率 sigma;负对数似然 f(sigma) = n log sigma + S/(2 sigma^2)
x = rng.normal(0, 0.02, 250)
n, S = len(x), np.sum(x**2)
f   = lambda s: n*np.log(s) + S/(2*s**2)
df  = lambda s: n/s - S/s**3                       # 梯度(1 维协变分量)
d2f = lambda s: -n/s**2 + 3*S/s**4                 # Hessian
s_hat = np.sqrt(S/n)

# 新坐标 theta = log sigma:sigma = e^theta,d sigma/d theta = sigma,d^2 sigma/d theta^2 = sigma
def grad_theta(s): return df(s) * s                              # (3.89)_1:乘 Jacobian
def hess_theta(s): return d2f(s) * s**2 + df(s) * s              # 张量项 + “Christoffel 型”附加项

def num_hess_theta(th, h=1e-4):                                  # 有限差分核对
    g = lambda t: f(np.exp(t))
    return (g(th + h) - 2*g(th) + g(th - h)) / h**2

for s in [0.5*s_hat, s_hat]:
    print(f"sigma={s:.4f}: 解析 H_theta={hess_theta(s):10.3f}  数值={num_hess_theta(np.log(s)):10.3f}"
          f"  仅张量项={d2f(s)*s**2:10.3f}  附加项={df(s)*s:10.3f}")

# 牛顿法:同一起点,在两种参数化下迭代
s0 = 0.3 * s_hat
s_a, th = s0, np.log(s0)
print("\n迭代  牛顿(sigma)    牛顿(log sigma)")
for k in range(6):
    s_a = s_a - df(s_a) / d2f(s_a)
    th = th - grad_theta(np.exp(th)) / hess_theta(np.exp(th))
    print(f"{k+1:3d}   {s_a: .6f}     {np.exp(th): .6f}")
print("MLE sigma_hat =", round(s_hat, 6))

# 自然梯度:用 Fisher 信息作度量,g_sigma = 2n/sigma^2,g_theta = 2n(按 2 阶协变张量变换)
eta = 0.2
s_b, th_b, s_c, th_c = s0, np.log(s0), s0, np.log(s0)
for k in range(30):
    s_b  -= eta * df(s_b) / (2*n/s_b**2)                 # 自然梯度,sigma 坐标
    th_b -= eta * grad_theta(np.exp(th_b)) / (2*n)       # 自然梯度,theta 坐标
    s_c  -= 1e-8 * df(s_c)                               # 普通梯度,sigma 坐标
    th_c -= 1e-8 * grad_theta(np.exp(th_c))              # 普通梯度,theta 坐标(同学习率)
print(f"\n30 步后  自然梯度: sigma坐标 {s_b:.6f}, theta坐标 {np.exp(th_b):.6f}")
print(f"         普通梯度: sigma坐标 {s_c:.6f}, theta坐标 {np.exp(th_c):.6f}")
print("标准误(delta 方法与张量变换一致): se(sigma)=%.6f, sigma*se(theta)=%.6f"
      % (np.sqrt(s_hat**2/(2*n)), s_hat*np.sqrt(1/(2*n))))

关键输出:

sigma=0.0101: 解析 H_theta=  2000.000  数值=  2000.000  仅张量项=  2750.000  附加项=  -750.000
sigma=0.0203: 解析 H_theta=   500.000  数值=   500.000  仅张量项=   500.000  附加项=     0.000

迭代  牛顿(sigma)    牛顿(log sigma)
  1    0.007994      0.009599
  2    0.010368      0.014152
  3    0.013166      0.018299
  4    0.016123      0.020096
  5    0.018636      0.020297
  6    0.019994      0.020300
MLE sigma_hat = 0.0203

30 步后  自然梯度: sigma坐标 0.020290, theta坐标 0.020295
         普通梯度: sigma坐标 0.016399, theta坐标 0.006094
标准误(delta 方法与张量变换一致): se(sigma)=0.000908, sigma*se(theta)=0.000908

读法:

  1. 在 \(\sigma=\hat\sigma/2\) 处,\(\theta\) 坐标的 Hessian 是 2000,如果只套用张量变换律 \(J^2f_{\sigma\sigma}\) 会得到 2750,差额 \(-750\) 就是附加项 \(f_\sigma\cdot\partial^2\sigma/\partial\theta^2\)。在 MLE 处梯度为零,附加项消失,两者都等于 500。所以用最优点的 Hessian 求标准误时,换参数化只需乘 Jacobian(delta 方法),最后一行验证了这一点。
  2. 同一起点的牛顿迭代,在 \(\log\sigma\) 参数化下 5 步收敛,在 \(\sigma\) 参数化下 6 步还没到。实践中对正参数(波动率、方差、GARCH 系数)用对数或其他无约束参数化,除了去掉约束,往往还让目标函数更接近二次型。
  3. 自然梯度在两种参数化下几乎走到同一处(残差来自离散步长的二阶误差);普通梯度在相同学习率下结果完全不同,在 \(\theta\) 坐标中 30 步几乎没动。普通梯度把协变向量 \(f_{,i}\) 直接当位移用,等于默认度量是 \(\delta_{ij}\),而这个默认依赖于参数化。

本章小结

曲线坐标的自然基 \(\mathbf g_i=\partial\mathbf x/\partial u^i\) 逐点变化,对它求导产生 Christoffel 符号 \(\mathbf g_{i,j}=\Gamma^k_{ij}\mathbf g_k\);加速度 \(a^k=\ddot u^k+\Gamma^k_{ij}\dot u^i\dot u^j\) 中的 \(\Gamma\) 项就是极坐标里的向心项与 Coriolis 项。Christoffel 符号可用倒易基 \(\Gamma^k_{ij}=\mathbf g^k\cdot\mathbf g_{i,j}\) 计算,也可只用度量计算,后者适用于任何只给出度量的空间。坐标变换把第 T2 章的常矩阵 \(A\) 换成 Jacobian \(\partial u^i/\partial\tilde u^j\),得到方框公式:协变分量乘 \(\partial u/\partial\tilde u\),逆变分量乘 \(\partial\tilde u/\partial u\)。Christoffel 符号的变换多出二阶导数项,因而不是张量。对量化最重要的推论是:梯度是协变向量,按链式法则变换;Hessian 只在驻点处按张量变换;牛顿法依赖参数化,自然梯度(用 Fisher 信息作度量)不依赖。

概念 公式 量化对应
自然基 \(\mathbf g_i=\partial\mathbf x/\partial u^i\),\(J=\det[x^i_{,j}]\) 参数化映射的 Jacobian
速度屋顶分量 \(v^i=\dot u^i\) 参数的"位移"是逆变的
物理分量 \(v^{(i)}=v^i/\lvert\mathbf g^i\rvert\) 统一单位后再比较敏感度
Christoffel 符号 \(\mathbf g_{i,j}=\Gamma^k_{ij}\mathbf g_k\),\(\Gamma^k_{ij}=\Gamma^k_{ji}\)
计算公式 \(\Gamma^k_{ij}=\mathbf g^k\cdot\mathbf g_{i,j}=\frac12g^{kp}(g_{ip,j}+g_{jp,i}-g_{ij,p})\) Fisher 度量下的联络
加速度 \(a^k=\ddot u^k+\Gamma^k_{ij}\dot u^i\dot u^j\) 测地线方程的前身
方框公式(向量) \(\tilde v_j=\frac{\partial u^i}{\partial\tilde u^j}v_i\),\(\tilde v^i=\frac{\partial\tilde u^i}{\partial u^j}v^j\) 链式法则;Delta 换坐标
方框公式(张量) \(\tilde T_{ij}=\frac{\partial u^k}{\partial\tilde u^i}\frac{\partial u^p}{\partial\tilde u^j}T_{kp}\) 等 驻点处 Hessian、Fisher 信息
\(\Gamma\) 的变换 含 \(\partial^2u^p/\partial\tilde u^j\partial\tilde u^k\) 项,非张量 Hessian 附加项、对数 Gamma
从笛卡尔出发 \(\Gamma^i_{jk}=\frac{\partial u^i}{\partial x^p}\frac{\partial^2x^p}{\partial u^j\partial u^k}\)
弧长 \(ds^2=g_{ij}du^idu^j\) 统计距离、马氏距离

练习

基础

  1. 对圆柱坐标 \((r,\theta,z)\) 求 \(\mathbf g_i\)、\(J\)、\([g_{ij}]\),并用正交坐标四种情形求全部非零 Christoffel 符号。 答案要点:\([g_{ij}]=\operatorname{diag}(1,r^2,1)\),\(J=r\);非零的只有 \(\Gamma^r_{\theta\theta}=-r\),\(\Gamma^\theta_{r\theta}=\Gamma^\theta_{\theta r}=1/r\)(与第 T4 章例 4.6 所用一致)。
  2. 证明 \(\mathbf g^i_{,j}=-\Gamma^i_{jk}\mathbf g^k\)。(原书习题 3.11) 提示:对 \(\mathbf g^i\cdot\mathbf g_k=\delta^i_k\) 关于 \(u^j\) 求导,再点乘展开。
  3. 二维坐标 \(x=u-v^2\),\(y=u+v\)。求 \(\mathbf g_u,\mathbf g_v\)、\(J\)、倒易基与全部 Christoffel 符号。(原书习题 3.10 前半) 答案要点:\(\mathbf g_u\sim(1,1)\),\(\mathbf g_v\sim(-2v,1)\),\(J=1+2v\);\(\mathbf g_{v,v}\sim(-2,0)\),其余二阶导数为零;\(\mathbf g^u\sim\frac1{1+2v}(1,2v)\),\(\mathbf g^v\sim\frac1{1+2v}(-1,1)\);故 \(\Gamma^u_{vv}=-\frac2{1+2v}\),\(\Gamma^v_{vv}=\frac2{1+2v}\),其余为零。
  4. 设期权价格 \(V(S)\),\(x=\ln S\)。写出 \(\partial V/\partial x\) 与 \(\partial^2V/\partial x^2\),并说明 Delta 中性(\(\partial V/\partial S=0\))时对数 Gamma 与"现金 Gamma"\(S^2\partial^2V/\partial S^2\) 的关系。 答案要点:\(V_x=SV_S\),\(V_{xx}=S^2V_{SS}+SV_S\);Delta 中性时 \(V_{xx}=S^2V_{SS}\),即"驻点处二阶量按张量变换"。
  5. 证明线性(斜笛卡尔)坐标 \(x^i=A^i_ju^j\) 中所有 Christoffel 符号为零。 提示:\(\mathbf g_i=A^k_i\mathbf e_k\) 为常向量,\(\mathbf g_{i,j}=\mathbf 0\)。

进阶

  1. 由 (3.78) 出发完整推导 (3.71),并说明哪一步用到了 \(\Gamma^k_{ij}=\Gamma^k_{ji}\)。 提示:见 T3.4.2;对称性用于让 \(\Gamma^p_{ki}g_{pj}\) 与 \(\Gamma^p_{ik}g_{pj}\) 合并、\(\Gamma^p_{ji}g_{pk}\) 与 \(\Gamma^p_{ij}g_{pk}\) 相消。
  2. 设参数 \(\theta\) 的对数似然为 \(\ell(\theta)\),Fisher 信息为 \(I(\theta)\)。证明在一一可微换元 \(\theta=\theta(\eta)\) 下 \(I(\eta)=J^TI(\theta)J\)(\(J=\partial\theta/\partial\eta\)),即 Fisher 信息是协变 2 阶张量;并说明为什么观测信息矩阵(负 Hessian)只在 MLE 处满足同样的变换律。 提示:\(I(\theta)=\mathbb E[\nabla\ell\nabla\ell^T]\),得分 \(\nabla\ell\) 按 \(J^T\) 变换;负 Hessian 的附加项 \(\ell_{,k}\partial^2\theta^k/\partial\eta\partial\eta\) 在 MLE 处为零(Fisher 信息因为对得分取期望 \(\mathbb E[\ell_{,k}]=0\),附加项期望为零)。
  3. 在球坐标中写出 \(f^\rho=0,f^\phi=0,f^\theta=0\) 时的三个运动方程,并验证一条过原点外的直线(匀速)满足它们。 提示:用例 3.5 的 \(\Gamma\);验证可取 \(\phi\equiv\pi/2\)、平面内的直线 \(x=1,y=t\)。
  4. 对极坐标验证 (3.96):\(\Gamma^i_{jk}=\frac{\partial u^i}{\partial x^p}\frac{\partial^2x^p}{\partial u^j\partial u^k}\) 给出 (3.37)。
  5. 编程:用实战 1 的数值方法计算例 3.4 坐标系在 \((u,v,w)=(1,2,3)\) 处的全部 Christoffel 符号,与例 3.4 的闭式解比较。 答案要点:\(\Gamma^u_{uu}=0.2\),\(\Gamma^u_{uv}=0.4\),\(\Gamma^u_{vv}=-0.2\),\(\Gamma^v_{uv}=0.2\),\(\Gamma^v_{uu}=-0.4\),\(\Gamma^v_{vv}=0.4\),\(\Gamma^w_{ww}=1/3\)。

原书推荐习题

  • 3.8、3.9、3.10:一般坐标的完整计算流程(基、倒易基、\(\Gamma\)、加速度分量)。
  • 3.11:\(\mathbf g^i_{,j}=-\Gamma^i_{jk}\mathbf g^k\),第 T4 章协变导数要用。
  • 3.12:度量张量与弧长,信息几何的入口。
  • 3.16:Christoffel 符号能否任意指定,曲率概念的伏笔。
  • 3.4:Frenet–Serret 公式,曲线几何基础。

原书对照

本章小节 原书小节 书页 PDF 页
T3.1 牛顿定律与不变形式 3.0 章首;3.1 Rigid Bodies;3.2 New Conservation Laws;3.3 Nomenclature;3.4 Cartesian Components 45–49 58–62
T3.2 极坐标:运动标架 3.5 Plane Polar Coordinates;3.6 Physical Components;3.7 The Christoffel Symbols 50–54 63–67
T3.3 一般三维坐标 3.8 General Three-Dimensional Coordinates;3.9 Newton's Law in General Coordinates 54–58 67–71
T3.4 Christoffel 符号的计算 3.10 Computation;3.11 An Alternative Formula 58–62 71–75
T3.5 坐标变换与方框公式 3.12 A Change of Coordinates 62–64 75–77
T3.6 Christoffel 符号不是张量 3.13 Transformation of the Christoffel Symbols 64–65 77–78
T3.7 习题结论 3.14 Exercises(共 18 题) 65–69 78–82

页码换算:第 I–III 章原书第 \(p\) 页 = PDF 第 \(p+13\) 页。原书 p.70 为空白页,扫描中缺失,因此从第 IV 章起页码偏移变为 \(p+12\)。式 (3.73) 的计数疑似印误,见 T3.4.2。