数値的安定性

数値線形代数における数値的安定性とは

数値線形代数において「数値的安定性(numerical stability)」とは、アルゴリズムが 有限精度計算(浮動小数点演算) による誤差をどの程度許容しつつ正確な結果を出せるかを示す概念です。理論的には正確に計算できる問題でも、実際のコンピュータ上では丸め誤差や打ち切り誤差が必ず生じるため、アルゴリズムの設計において重要な基準となります。


1. 誤差の発生源

数値計算では以下の要因で誤差が蓄積します。

  • 丸め誤差:浮動小数点表現による有限桁数の制約。

  • 打ち切り誤差:無限級数や反復計算を途中で打ち切る際の誤差。

  • 不良条件性(ill-conditioning):もとの行列や問題設定自体が誤差に敏感である場合。

例えば、行列の条件数(condition number)が大きいと、入力データのわずかな誤差が解に大きく影響します。


2. 数値的安定性の種類

数値的安定性はアルゴリズムの誤差伝播の性質に応じて分類されます。

  • 前方安定性(forward stability)
    出力誤差が、入力誤差と同程度のオーダーに抑えられている。

  • 後方安定性(backward stability)
    アルゴリズムが実際には「わずかに摂動した入力に対しては正しい解を返す」ように動作している。数値計算で最も望ましい安定性の基準。

  • 条件数との関係
    安定なアルゴリズムでも、元の問題の条件数が大きければ誤差が増幅される可能性がある。したがって「問題の良条件性」と「アルゴリズムの安定性」の両方が必要。


3. 典型的な例

  • ガウス消去法(LU分解)
    ピボット選択を行わない場合、不安定になることがある。部分ピボット選択(partial pivoting)を導入することで数値的に安定する。

  • QR分解(直交行列を利用)
    計算誤差が直交性に守られるため、比較的安定。

  • 特異値分解(SVD)
    最も安定な分解の一つで、条件数の評価にも使われる。


4. 数値的安定性の重要性

  • シミュレーションや機械学習の大規模計算では、誤差が累積すると結果が大きく変わってしまう。

  • 安定なアルゴリズムを選ぶことで、誤差の増幅を防ぎ、信頼性の高い数値解を得られる。

  • 数値解析の設計思想では「高速性」と同じくらい「安定性」が重視される。


まとめ

数値的安定性とは、浮動小数点誤差の影響を最小限に抑えるアルゴリズムの性質であり、数値線形代数における基盤的な概念です。問題自体の性質(条件数)とアルゴリズムの安定性の両面を考慮することが、正しく信頼できる数値解を得るために不可欠です。

ChatGPT5 生成日:2025/09/17