接下来改回默认原子量,发现二者就完全不一样了。因为结构是充分优化过的,可以排除振-转模式是否进行投影造成的影响。很多计算都显示Eigenvalues总是更大一些,这说明对于水分子,采用的O、H“原子量”可能是小一点的数。首先想到的可能是核电荷数。把O的原子量改为8(O(iso=8.0))试试。计算后,发现Eigenvalues三个数中最大的值0.80113与B2振动模式的频率平方一致,然而前两个数还是对不上。即便如此,这也足以证明Gaussian的 NR 方法估算步长时,用了核电荷数而非原子量。
对公式的解释:
振动久期方程为 F L = M L E
其中F是直角坐标系下的Hessian矩阵(力常数矩阵),M是对角的原子量矩阵(为了重复Gaussian结果用了核电荷数),L、E分别是特征矢量和特征值(也就是频率平方和Eigenvalues)。
以上方程是赝-特征值方程,在实际计算中人们习惯把它写成标准特征值方程的形式: FF LL = LL E
其中,FF = M^(-1/2) F M^(-1/2),称为质量加权的Hessian矩阵,LL = M^(1/2) L。根据特征值方程的特性,有如下关系: LL^T FF LL = E
但是以下关系一般不成立(除非原子量都是1): LL^T F LL = E
在最后一行代码中,由于两个A1模式不正交,导致E矩阵并不是对角的,因此需要额外执行一次对角化。
matlab测试程序的结果表明,Gaussian 确实是用了最后一个不成立的公式(或者等价的算法)来计算 Eigenvalues ,再通过 NR 方法估算步长。由于 F 矩阵是未经过质量加权的(没有除以原子量矩阵),导致 Eigenvalues 偏大,进而把 NR 方法估算的 Displacement 也降低了。这可能带来的后果是(纯猜测,未经验证):即便优化质量不高的几何结构,也可能会被误判为驻点结构,含有重元素的分子尤甚。