行列 A が対称(A^T = A)かつ正定値(任意の非零ベクトル x について x^T A x > 0)であることが必要です。実務では FEM の剛性行列、ラプラシアン、共分散行列など、自然に SPD になる問題が多くあります。非対称な系には Bi-CGSTAB や GMRES、対称だが不定な系には MINRES など、CG の派生・関連手法が使われます。
CG 法は行列 A をベクトルに掛ける操作(matVec)だけで進められるため、疎行列の構造を保ったまま解けます。直接法は分解後に「フィルイン」が発生してメモリが爆発するため、数百万自由度の FEM では現実的でないことが多く、PCG(前処理付き CG)が標準です。一方、複数の右辺 b に対して同じ A を解く場合は LU 分解の使い回しが効くため、直接法の方が有利な場面もあります。
M は「A に近く、かつ M^{-1} v が安く計算できる」もの。Jacobi(対角スケーリング)は最安だが効果は限定的、不完全コレスキー分解 (IC(0), ICT) は構造解析で広く使われます。流体や複雑な物理では代数的多重格子 (AMG) が条件数によらず O(n) で収束する強力な前処理子として選ばれます。Trilinos, PETSc などのライブラリには多数の前処理子が用意されています。
機械学習・最適化: 二次形式の最小化 min (1/2)x^T A x - b^T x は Ax=b の解と等価なので、CG 法は本質的に最適化アルゴリズムです。ニュートン法の各ステップでヘッシアン方程式を解く「ヘッシアンフリー最適化」では、行列を陽に持たずに CG で解く工夫が深層学習や強化学習で使われています。
画像処理・トモグラフィー: CT 再構成や画像復元では、観測モデルから生じる大規模な正規方程式 (A^T A) x = A^T b を解きます。A^T A は対称正定値(または半正定値+正則化)なので、共役勾配法系の解法 (CGLS, LSQR) が高速・低メモリの定番手法です。
よくある誤解と注意点
最も多い誤解は、「CG 法は n 反復で必ず厳密解になる」と無条件に信じることです。これは「理想算術」の話で、浮動小数点演算では丸め誤差で共役性 $p_i^\top A p_j = 0$ が徐々に崩れ、n 反復経過後も残差が残ることがあります。実機では「相対残差が許容値以下になるまで反復」という基準で停止し、必要に応じて「再起動 (restart)」や再直交化を行います。シミュレーターでは小さな 4 次元問題なので、丸め誤差の影響はほぼ見えませんが、数百万次元の実問題では条件数次第で挙動が大きく変わります。