条件数(じょうけんすう、英: condition number)は、問題のコンピュータでの数値解析しやすさの尺度であり、その問題がどれだけ数値解析に適しているかを表す。条件数が小さい問題は「良条件 (well-conditioned)」であり、条件数が大きい問題は「悪条件 (ill-conditioned)」である。
行列の条件数
編集たとえば という方程式の条件数は、 を近似的に求める際の不正確さの上限を与える。なお、これには丸め誤差の影響は考慮しない。条件数は行列の属性であって、計算に使うシステムの浮動小数点数の精度やアルゴリズムとは無関係である。この場合(非常に大まかに言って)、 の変化によって解である が変化する率が条件数である。従って、条件数が大きければ の小さな誤差も の大きな誤差となって現れる。一方、条件数が小さければ、 における誤差は における誤差より大きくなることはない。
より正確に条件数を定義すると、 の相対誤差を の相対誤差で割った最大比率である。
の誤差を とする。すると解 の誤差は となる。解の相対誤差と の相対誤差の比率は、次のようになる。
これは容易に次のように書き換えられる。
( と がゼロでないとき)その最大値は明らかに2つの作用素ノルムの積となる。
同様の定義は、任意の行列ノルムに当てはまる。この数は数値線型代数学にはよく使われるので、行列の条件数 (condition number of a matrix) と名づけられている。
もちろん、この定義はノルムの選択に依存している。 このため条件数は、問題そのものの敏感さと、解法や実装に由来する誤差とを切り分けて読むための指標でもあり、たとえば線型方程式 では、行列 の2ノルム条件数は と表され、 または の小さな摂動が解にどの程度伝わりうるかを測る量であり、この値が大きい場合、 は悪条件であって、入力データに含まれる小さなずれでも、逆行列、行列式、または連立一次方程式の解の有効桁数に大きく影響しうる一方、条件数が1に近い場合は完全に良条件に近く、少なくともデータ摂動に対する感度だけを見れば、問題は安定に解きやすい部類に入るが、ここでいう安定性は問題の感度に関するものであり、実際のプログラムが行う丸め、反復停止条件、実装上の近似、使用する浮動小数点数の精度まで含めた総合評価ではなく、また同じ行列でも基準とするノルムが異なれば条件数の値も変わるため、 を示すときには2ノルム、1ノルム、無限大ノルムなどの前提を合わせて示す必要がある[1]。
数値計算で得られた解の誤差を評価するときは、前進誤差を後退誤差と条件数の積で見積もる考え方が使われ、 が滑らかな関数なら相対誤差は条件数 と相対後退誤差の積で近似的に上から抑えられ、ベクトル値問題では導関数のかわりにヤコビ行列と行列ノルムを使い、 のノルムごとの条件数は で表されるため、アルゴリズムが後退安定であっても、問題の条件数が十分大きければ計算結果の前進誤差は大きくなりうることから、条件数は数値的安定性の議論で、アルゴリズムの安定性とは別に確認される量となり、また条件数を厳密に求める計算はしばしば高コストであるため、LAPACK などの線型代数ライブラリでは条件数や誤差限界に推定値を用いることがあり、推定値が十分に大きい場合には、条件数の正確な桁数そのものよりも、計算結果が完全に不正確になりうるという警告としての意味が強くなる[2]。
それ以外の条件数
編集特異値分解の条件数、多項式の解を求める際の条件数、固有値の条件数など、様々な問題について条件数を定義できる。
一般に数値問題が良設定なら、それを関数 で表すことができ、-タプルの実数 から -タプルの実数 への写像となる。
するとその条件数は、問題の定義域における解の相対誤差とデータの相対誤差の比の最大値と定義される。
ここで は問題のデータの変化における何らかの適度に小さい値である。
が可微分であれば、次のように近似できる。
脚注
編集出典
編集- ^ “Matrix Market: Glossary”. National Institute of Standards and Technology. 2026年5月5日閲覧。
- ^ “Standard Error Analysis”. LAPACK Users' Guide. Netlib. 2026年5月5日閲覧。
関連項目
編集外部リンク
編集- Condition Number of a Matrix at Holistic Numerical Methods Institute
- Matrix condition number on PlanetMath