3. Skeleton 导数与 U 导数概述

我们曾经介绍过,对分子梯度 (分子力,向量或矩阵) 的导数是 Hessian。这就是矩阵导数的一个例子。它就是这一节的讨论的矩阵全导数的一个例子。但我们曾经计算的是数值梯度。

从今之后,我们的目标是求取解析梯度。数值梯度也是重要的,但它的意义在于验证解析梯度的正确性。

显然,我们如果要求取分子梯度性质,就需要对能量或一些矩阵作全导数计算。所谓全导数,就是一般意义下的导数。但为了化简计算或对计算分项作分类,我们会引入新的用语,称为 Skeleton 导数 (原子轨道矩阵导数)。

记号说明

我们重新强调一些记号:

  • 上下标 \(A, B, M\):原子;对于双氧水,可以是两个氢、两个氧原子中的任意一个;

  • 三维向量 \(\boldsymbol{A}, \boldsymbol{B}, \boldsymbol{M}\):原子三维笛卡尔坐标;

  • 三维向量 \(\boldsymbol{r}\):电子坐标;

  • 下标 \(t, s, r, w\):三维笛卡尔坐标分量,取值范围 \(\{ x, y, z \}\)

  • 上标或标量 \(A_t, B_s\):原子坐标的坐标分量;

  • 标量 \(r\):线段长度,譬如 \(r_{AB}\) 表示原子 \(A\)\(B\) 的距离;

  • 电荷标量 \(Z_A\)\(A\) 原子的核电荷数;

  • 函数或格点 \(\phi\):作为函数的原子轨道。

一些常用下标如下:

  • 下标 \(\mu, \nu, \kappa, \lambda\) 表示原子轨道角标,在程序中用 u, v, k, l 表示;

  • 下标 \(i, j, k, l\) 表示占据分子轨道角标;

  • 下标 \(a, b, c\) 表示非占分子轨道角标;

  • 下标 \(p, q, r, s, m\) 表示任意轨道角标。

记号更变说明

记号 \(\partial_\mathbb{A}\) 代表对变量 \(\mathbb{A}\) 求偏导数,等价于 \(\frac{\partial}{\partial \mathbb{A}}\)。该符号用于行内或简化表达式。

在 pyxdh 的早期版本中将导数分为 Skeleton 与 U 导数,并且使用 \(\partial_\mathbb{A}\) 代表 Skeleton 导数,\(\partial_\mathbb{A}^\mathrm{U}\) 代表 U 导数;而 \(\frac{\partial}{\partial \mathbb{A}}\) 才是一般意义的偏导数。现在的 pyxdh 文档决定废弃这种符号,因为这种符号可能导致很多歧义。

这是对可能的以前看过该文档的读着说明的;如果读着没有看过早期的 pyxdh 文档并且不能理解上一段的意义,请无视之。

补充记号说明

  • 上角标或普通数值 \(\mathbb{A}, \mathbb{B}\):任意被求导量,可以是原子核坐标分量或电荷坐标分量。

我们拿 Hamiltonian Core 举例。我们称 Hamiltonian Core 矩阵在被求导量 \(\mathbb{A}\) 下的导数为 Skeleton 导数:

\[h_{\mu \nu}^\mathbb{A} = \frac{\partial h_{\mu \nu}}{\partial \mathbb{A}}\]

但我们也很经常处理分子轨道下的 Hamiltonian Core 矩阵。对于这类矩阵,我们定义 Skeleton 导数为

\[h_{pq}^\mathbb{A} = C_{\mu p} h_{\mu \nu}^\mathbb{A} C_{\nu q}\]

事实上,分子轨道下的 Hamiltonian Core 矩阵的全导数包含对分子轨道的导数项:

\[\frac{\partial h_{pq}}{\partial \mathbb{A}} = \frac{\partial C_{\mu p}}{\partial \mathbb{A}} h_{\mu \nu} C_{\nu q} + C_{\mu p} h_{\mu \nu}^\mathbb{A} C_{\nu q} + C_{\mu p} h_{\mu \nu} \frac{\partial C_{\nu q}}{\partial \mathbb{A}}\]

因此,Skeleton 的意义是,在一个矩阵的全导数中,去除其与分子轨道导数有关的量。我们依据下式定义 U 矩阵 \(U_{mp}^\mathbb{A}\) (Yamaguchi, p398, G.1)

\[\frac{\partial C_{\mu p}}{\partial \mathbb{A}} = C_{\mu m} U_{mp}^\mathbb{A}\]

那么,上面的分子轨道下 Hamiltonian Core 矩阵全导数可以写为

\[\frac{\partial h_{pq}}{\partial \mathbb{A}} = h_{pq}^\mathbb{A} + h_{pm} U_{mq}^\mathbb{A} + h_{mq} U_{mp}^\mathbb{A}\]

上式只有第一项是 Skeleton 导数。我们以后经常称后两项为 U 导数。

任务 (1)

证明上一个等式。

因此,Skeleton 导数也可以视作不产生 U 矩阵的导数。以后我们经常会遇到 Skeleton 导数,其符号也类似于 \(h_{pq}^\mathbb{A}\),但存在例外。因此,作者决定每次出现新的符号时都额外作一次定义。

关于 U 矩阵,其中一个相当重要的性质是:

\[S_{pq}^\mathbb{A} + U_{pq}^\mathbb{A} + U_{qp}^\mathbb{A} = 0\]

一个重要的特性是,U 矩阵一般是普通矩阵,而非通常量化中所看到的对称矩阵。因为这个特性,我们在处理 U 矩阵的对称性时需要小心。

任务 (2)

在任务 (1) 所被证明的对于 Hamiltonian Core 成立的等式,套用到重叠矩阵也同样成立。请说明上式成立。

3.1. 任务参考答案

3.1.1. 任务 (1)

我们将 \(\partial_\mathbb{A} C_{\mu p}\) 的定义式代入 \(\partial_\mathbb{A} h_{pq}\) 的导出式中,得到

\[\begin{split}\begin{align} \frac{\partial h_{pq}}{\partial \mathbb{A}} &= C_{\mu p} h_{\mu \nu}^\mathbb{A} C_{\nu q} + C_{\mu m} U_{mp}^\mathbb{A} h_{\mu \nu} C_{\nu q} + C_{\mu p} h_{\mu \nu} C_{\mu m} U_{mq}^\mathbb{A} \\ &= h_{pq}^\mathbb{A} + C_{\mu m} h_{\mu \nu} C_{\nu q} U_{mp}^\mathbb{A} + C_{\mu p} h_{\mu \nu} C_{\mu m} U_{mq}^\mathbb{A} \\ &= h_{pq}^\mathbb{A} + h_{mq} U_{mp}^\mathbb{A} + h_{pm} U_{mq}^\mathbb{A} \end{align}\end{split}\]

3.1.2. 任务 (2)

我们知道

\[\frac{\partial S_{pq}}{\partial \mathbb{A}} = S_{pq}^\mathbb{A} + S_{pm} U_{mq}^\mathbb{A} + S_{mq} U_{mp}^\mathbb{A}\]

但同时,根据定义,

\[S_{pq} = \delta_{pq}\]

因此,分子轨道下的重叠矩阵是严格的单位矩阵,对任何物理量的导数为零,即

\[\frac{\partial S_{pq}}{\partial \mathbb{A}} = 0\]

因此,上式化为

\[0 = S_{pq}^\mathbb{A} + \delta_{pm} U_{mq}^\mathbb{A} + \delta_{mq} U_{mp}^\mathbb{A} = S_{pq}^\mathbb{A} + U_{pq}^\mathbb{A} + U_{qp}^\mathbb{A}\]