计算任意函数的Gaussian积分

最近在学习的时候发现经常需要计算满足某些解析性质的函数在任意Gauss测度下面的积分:

I(f,A)=\int f(\vec{x})\exp\left(-\frac{1}{2}\sum_{i,j=1}^n A_{ij} x_i x_j\right)\mathrm{d}^n x.

其中 A 是半正定的实矩阵(来保证 -(1/2)\sum_{ij}A_{ij}x_i x_j 是半负定的二次型, 来让积分 I(f,A) 收敛).

但是在Wikipedia的这个页面上, 直接给出了下面这个公式:

I(f,A)=\sqrt{\frac{(2\pi)^n}{\det A}} \exp\left(\frac{1}{2}\sum_{i,j=1}^n (A^{-1})_{ij} \frac{\partial}{\partial x_i}\frac{\partial}{\partial x_j}\right)f(\vec{x})\bigg|_{\vec{x}=\vec{0}}.

前面还直接标着一个citation needed (╯‵□′)╯︵┻━┻. 这是什么鬼嘛, 给人一种钦定的感觉...

但是经过一点简单的思考, 我竟然发现可以给出一个简单的"证明"(打引号是因为这个证明显然是不严格的, 从数学系的角度来看). 下面简单的叙述一下.

首先, 矩阵 A 是实半正定的, 这意味着 A 可以正交相合对角化:

S^{T}AS=\mathrm{diag}(\lambda_1, \lambda_2, \cdots, \lambda_n).

其中 \lambda_i\geq 0 是矩阵 A 的本征值, S 是正交矩阵 SS^{T}=I .

做上面的正交变换是为了积分换元, 把积分测度变成标准的Gauss测度:

\mathrm{d} \mu_s(\vec{\rho})= \exp\left(-\frac{1}{2}\sum_{i=1}^n \lambda_i\rho_i^2\right)\mathrm{d}^n \rho.

为此, 把积分做变量代换:

\vec{x}=S\vec{\rho}.

这个代换的Jacobi行列式

|J|=\left| \frac{\partial \vec{x}}{\partial \vec{\rho}}\right|=|S|=1.

在这个变换下, 积分为:

\begin{align*} I(f,A) &=\int f(S\vec{\rho})\exp\left(-\frac{1}{2}\vec{\rho}^T S^T A S \vec{\rho}\right)|J|\mathrm{d}^n \rho \\ &=\int f(S\vec{\rho})\exp\left(-\frac{1}{2}\sum_{i=1}^n \lambda_i \rho_i^2\right)\mathrm{d}^n \rho.\end{align*}

里面用到了 S^T A S 的表达式.

接下来把上面的标准积分化成逐次积分:

I(f,A)=\int e^{-\frac{\lambda_n}{2}\rho_n^2}\mathrm{d}\rho_n \int e^{-\frac{\lambda_{n-1}}{2}\rho_{n-1}^2}\mathrm{d}\rho_{n-1} \cdots\int e^{-\frac{\lambda_1}{2}\rho_1^2}\mathrm{d}\rho_1 f(S\vec{\rho})

再假设 f 满足合适的解析条件, 就可以把 f 展开成其每个变量在0处的Taylor展开:

f( \cdots, \rho_i, \cdots)=\sum_{k=1}^\infty \frac{\rho_i^k}{k!}\frac{\partial^k f}{\partial \rho_i^k}( \cdots, \rho_i=0, \cdots)

显然带入并且交换积分和求和次序之后会出现多项式积分, 这里我们使用一个广为人知的多项式积分

\int_{-\infty} ^{+\infty} \rho^k e^{-\frac{\lambda}{2}\rho^2}\mathrm{d}\rho=\begin{cases}\sqrt{\frac{2\pi}{\lambda^{n+1}}}(k-1)!! &(k\text{ even})\\0 &(k\text{ odd})\end{cases}.

利用这个式子不停的对上面的式子进行逐次积分, 就可以得到最后的答案. 比如, 第1次积分是:

\begin{align*}I_1&=\int \mathrm{d}\rho_1 e^{-\frac{\lambda_1}{2}\rho_1^2}\sum_{k=0}^\infty\frac{\rho_1^k}{k!}\frac{\partial^k f}{\partial \rho_1^k}(0, \cdots) \\ &=\sum_{k=0}^\infty\frac{1}{k!}\frac{\partial^k f}{\partial \rho_1^k}(0, \cdots)\int \rho_1^k e^{-\frac{\lambda_1}{2}\rho_1^2}\mathrm{d}\rho_1 \\ &=\sum_{s=0}^\infty\frac{1}{(2s)!}\frac{\partial^{2s} f}{\partial \rho_1^{2s}}(0, \cdots)\sqrt{\frac{2\pi}{\lambda_1^{2s+1}}}(2s-1)!! \\ &=\sqrt{\frac{2\pi}{\lambda_1}} \sum_{s=0}^\infty \frac{1}{s!}\left[\left(\frac{1}{2\lambda_1}\frac{\partial^2}{\partial \rho_1^2}\right)^s f\right](0,\cdots)\\ &=\sqrt{\frac{2\pi}{\lambda_1}}\left[ \exp\left(\frac{1}{2\lambda_1}\frac{\partial^2}{\partial \rho_1^2}\right)f\right](0,\cdots).\end{align*}

上面的式子最后一行中的 \exp 是算子展开式 \sum_{s=0}^\infty \frac{1}{s!}\left[\left(\frac{1}{2\lambda_1}\frac{\partial^2}{\partial \rho_1^2}\right)^s f\right] 的幂级数记号. 同时注意到每次积分完成之后, 被积分过的变量在函数中置0, 没有积分过的变量仍然是自由的. 这个取值规则在下面的叙述中不再显示地写出了(不然式子就太长了, 摔!).

很显然一般情况下, f 作为 \rho 的函数是无法变量分离的, 所以在做第2次积分的时候, 上式的最后一行的 \left[ \exp\left(\frac{1}{2\lambda_1}\frac{\partial^2}{\partial \rho_1^2}\right)f\right](0,\cdots) 必须一直跟着运算. 但是如果 f 有足够好的解析性质, 那么对于不同变量的偏微分是对易的. 由Baker–Campbell–Hausdorff公式的对易情形, 可以知道

[A,B]=0\to \exp(A)\exp(B)=\exp(A+B).

所以每次积分结果一直具有很好看的形式. 比如第 r+1 次的积分结果是

\begin{align*}I_{r+1}&=\int \mathrm{d}\rho_{r+1} e^{-\frac{\lambda_{r+1}}{2}\rho_{r+1}^2}I_r \\ &=\int \mathrm{d}\rho_{r+1} e^{-\frac{\lambda_{r+1}}{2}\rho_{r+1}^2} \left(\prod_{m=1}^r\sqrt{\frac{2\pi}{\lambda_m}}\right)\left[ \exp\left(\sum_{m=1}^r\frac{1}{2\lambda_m}\frac{\partial^2}{\partial \rho_m^2}\right)f\right]\\ &=\left(\prod_{m=1}^{r+1}\sqrt{\frac{2\pi}{\lambda_m}}\right)\exp\left(\frac{1}{2\lambda_{r+1}}\frac{\partial^2}{\partial \rho_{r+1}^2}\right)\left[ \exp\left(\sum_{m=1}^r\frac{1}{2\lambda_m}\frac{\partial^2}{\partial \rho_m^2}\right)f\right]\\&=\left(\prod_{m=1}^{r+1}\sqrt{\frac{2\pi}{\lambda_m}}\right)\left[ \exp\left(\sum_{m=1}^{r+1}\frac{1}{2\lambda_m}\frac{\partial^2}{\partial \rho_m^2}\right)f\right].\end{align*}

直到, 最终:

I(f,A)=I_n=\left(\prod_{m=1}^{n}\sqrt{\frac{2\pi}{\lambda_m}}\right)\left[ \exp\left(\sum_{m=1}^{n}\frac{1}{2\lambda_m}\frac{\partial^2}{\partial \rho_m^2}\right)f\right]\bigg|_{\vec{\rho}=\vec{0}}

为了方便, 一般把微分变量从 \rho 换回 x , 这只需要计算偏微分

\frac{\partial}{\partial \rho_m}=\sum_{j=0}^n \frac{\partial x_n}{\partial \rho_m}\frac{\partial }{\partial x_n} = \sum_{j=0}^n S_{nm} \frac{\partial }{\partial x_n}.

也就是说如果把微分算子排成一列, 看成列向量, 那么

\vec{\partial_\rho}=S^T \vec{\partial_x}.

进而

\sum_{m=1}^{n}\frac{1}{\lambda_m}\frac{\partial^2}{\partial \rho_m^2}=\vec{\partial_\rho}^T \mathrm{diag}(1/\lambda_1, 1/\lambda_2, \cdots, 1/\lambda_n)\vec{\partial_\rho}.

这时把 A 的正交相合变换表达式的逆带入, 有

\sum_{m=1}^{n}\frac{1}{\lambda_m}\frac{\partial^2}{\partial \rho_m^2}=\vec{\partial_x}^T A^{-1} \vec{\partial_x}.

 再使用

\det A=\lambda_1\lambda_2\cdots\lambda_n,

就有文章一开始的那个式子

I(f,A)=\sqrt{\frac{(2\pi)^n}{\det A}} \exp\left(\frac{1}{2}\sum_{i,j=1}^n (A^{-1})_{ij} \frac{\partial}{\partial x_i}\frac{\partial}{\partial x_j}\right)f(\vec{x})\bigg|_{\vec{x}=\vec{0}}.

这个等式当然可以用来方便计算函数的Gaussian积分, 但是注意到如果函数的偏导数不在某阶之后截断, 那么最后要计算的是一个无穷级数的和. 所以本质上来说计算函数的Gaussian积分还是一个很复杂的问题. 只是对于多项式情形和少数容易计算无穷级数和的情形会比较简单.

数学系的同学请不要吐槽, 我知道中间用到了很多解析性质的条件. 我写这个证明只是帮助自己理解这个等式. 诸位数学系的同学要是能帮我指出整个推导过程之中 f 要满足的充分条件是什么的话, 灰常感激~.~