last_modified: 2026-01-23
注記:本稿では、スレーター型軌道(STO)の代わりに、現代の量子化学計算で標準的に用いられる「ガウス型軌道(Gaussian-Type Orbital, GTO)」を対象とする。GTOはSTOと比較して、多中心積分の計算が解析的に容易であるという決定的な利点を持つ。 注記2: 生成AIへの指示で自動生成し、検算をしておりますが、内容が誤っている可能性があります。ご了承ください。Gemini 3.0 Pro及びGPT-5.2の性能を確かめる目的も兼ねています。
1. 序論
ガウス型軌道(GTO)は、物理的な電子の振る舞い(特に原子核近傍のカプス条件と遠方の減衰)の記述においてはSTOに劣るものの、ガウス積定理(Gaussian Product Theorem) の適用により、多中心積分を単中心積分に帰着できるという数学的な利点を持つ。本稿では、異なる軌道指数 を持つ2つの正規化されたs型プリミティブGTO間の重なり積分について、その数理的導出と数値計算コードを示す。
2. 数理的定式化
2.1 波動関数の定義(正規化プリミティブGTO)
中心Aに位置するs型GTO は以下のように定義される。ここで、 は正規化定数であり、全空間積分 より求められる。同様に、中心Bにある軌道指数 の軌道 は を持つ。
2.2 ガウス積定理の適用
重なり積分 は以下の定義に従う。ガウス積定理により、異なる中心を持つ2つのガウス関数の積は、新しい中心 を持つ1つのガウス関数で表現できる。ここで、各パラメータは以下の通りである。
合成指数:
重心座標:
指数プレファクター:
2.3 重なり積分の解析
解式(4)を式(3)に代入すると、積分部分は単純なガウス積分となる。3次元ガウス積分の公式 を適用する。これに正規化定数(2)と を代入し、核間距離 を用いて整理すると、最終的な解析解が得られる。さらに簡約化すると、以下の美しい形式となる。特徴: STOの場合と異なり、 の場合でも特異点は発生せず、数式は連続的に振る舞う。また、補助関数のような複雑な計算も不要である。
3. Pythonによる実装
以下に、式(8)に基づいたPython関数を示す。
import numpy as np
def calculate_overlap_gto_s_s(alpha: float, beta: float, R: float | np.ndarray) -> float | np.ndarray:
"""
異なる軌道指数を持つ正規化されたs型プリミティブGTO間の重なり積分を計算する。
数式:
S = ( (2 * sqrt(alpha * beta)) / (alpha + beta) )^1.5 * exp( - (alpha * beta / (alpha + beta)) * R^2 )
Args:
alpha (float): 原子AのGTO軌道指数 (Exponent)
beta (float): 原子BのGTO軌道指数 (Exponent)
R (float | np.ndarray): 核間距離 (Atomic Units / Bohr)
Returns:
float | np.ndarray: 重なり積分 S (0.0 < S <= 1.0)
"""
R = np.asarray(R)
# 共通項の計算: gamma = alpha * beta / (alpha + beta)
sum_exp = alpha + beta
prod_exp = alpha * beta
gamma = prod_exp / sum_exp
# プレファクター項 (幾何平均的な寄与)
# term = 2 * sqrt(alpha * beta) / (alpha + beta)
prefactor_term = 2.0 * np.sqrt(prod_exp) / sum_exp
# 全体のプレファクター (3/2乗)
prefactor = prefactor_term ** 1.5
# 指数部分の計算: exp(-gamma * R^2)
exponential_part = np.exp(-gamma * (R**2))
# 最終的な重なり積分
S = prefactor * exponential_part
return S
# --- 使用例 ---
if __name__ == "__main__":
# パラメータ設定 (STO-3Gなどの基底関数系を想定した値)
alpha_val = 0.5 # 中心Aの指数
beta_val = 1.2 # 中心Bの指数 (異なる値)
R_dist = 2.0 # 核間距離 (Bohr)
# 計算実行
s_val = calculate_overlap_gto_s_s(alpha_val, beta_val, R_dist)
print(f"--- GTO Overlap Integral Calculation ---")
print(f"Exponent A (alpha): {alpha_val}")
print(f"Exponent B (beta): {beta_val}")
print(f"Distance (R): {R_dist} Bohr")
print(f"Overlap Integral (S): {s_val:.6f}")
# 距離依存性の確認
r_array = np.linspace(0.0, 5.0, 6)
s_array = calculate_overlap_gto_s_s(alpha_val, beta_val, r_array)
print("\n--- Distance Dependence ---")
print(f"R (Bohr): {r_array}")
print(f"S values: {s_array}")
# 等しい指数(alpha = beta)のケース検証
# 式(8)より、alpha=betaなら prefactor=1.0 となり、S = exp(-alpha * R^2 / 2) となるはずである。
s_equal = calculate_overlap_gto_s_s(1.0, 1.0, 0.0)
print(f"\nCheck R=0, alpha=beta: {s_equal} (Should be 1.0)")
3.1 コードの解説
入力の柔軟性: numpy のブロードキャスト機能により、距離 R を配列として渡すだけで、ポテンシャル曲面スキャンのような計算を一括で行うことができる。計算効率: GTOの重なり積分は、STOにおける exp(-R) の多項式形式とは異なり、exp(-R^2) というガウス関数の減衰に従う。これは計算機上で非常に高速に評価可能である。数値安定性: 分母に alpha + beta が現れるが、軌道指数は物理的に常に正の値()をとるため、ゼロ除算のリスクはない。
4. 結論
GTOを用いたs軌道間の重なり積分は、STOの場合と比較して数理的に極めて単純な閉形式(Closed Form)で記述される。STO: 距離 の多項式 指数関数、異核の場合は特異点処理や補助関数が必要。GTO: ガウス積定理により、指数部分のパラメータ変換のみで表現可能。 であっても形式は不変であり、条件分岐が不要。この特性こそが、現代の量子化学計算においてGTOが標準基底関数として採用されている主たる理由の一つである。実際の分子軌道計算においては、これらのプリミティブGTOを線形結合させた「短縮GTO(Contracted GTO)」を用いるが、その重なり積分は本稿で示したプリミティブ間積分の線形和として容易に計算される。