数値解析において、関数の条件数は、入力引数のわずかな変化に対して関数の出力値がどれだけ変化するかを測定する指標です。これは、関数が入力の変化や誤差に対してどれだけ敏感であるか、また入力の誤差によって出力にどれだけの誤差が生じるかを測定するために使用されます。多くの場合、逆問題を解くことになります。1つはxを解くことであり、したがって(局所)逆行列の条件数を使用する必要がある。[ 1 ] [ 2 ]
条件数は不確実性伝播理論から導き出され、入力の相対変化に対する出力の漸近的な最悪ケースの相対変化の値として正式に定義されます。「関数」は問題の解であり、「引数」は問題におけるデータです。条件数は線形代数の問題によく適用され、その場合、導関数は単純ですが、誤差はさまざまな方向に発生する可能性があり、行列の幾何学から計算されます。より一般的には、条件数は多変数の非線形関数に対して定義できます。
条件数が低い問題は「条件が良い」と言われ、条件数が高い問題は「条件が悪い」と言われます。数学的な用語を使わずに言うと、条件が悪い問題とは、入力(独立変数)がわずかに変化しただけで、答え(従属変数)が大きく変化する問題のことです。つまり、方程式の正しい解を見つけるのが難しくなります。条件数は問題の特性です。問題には、解を計算するために使用できるアルゴリズムがいくつも存在します。アルゴリズムの中には、後方安定性と呼ばれる特性を持つものがあります。一般に、後方安定アルゴリズムは、条件が良い問題を正確に解くことが期待できます。数値解析の教科書には、問題の条件数の公式が記載されており、既知の後方安定アルゴリズムが示されています。
経験則として、条件番号がそして、数値的手法による算術的手法の精度損失に加えて、精度の桁数が失われる可能性がある。[ 3 ]ただし、条件数はアルゴリズムで発生する可能性のある最大不正確さの正確な値を与えるものではない。一般的には、推定値(その計算値は不正確さを測定するためのノルムの選択に依存する)でその範囲を限定するだけである。
例えば、線形方程式Ax = bに関連付けられた条件数は、近似後の解xの不正確さの上限を示します。これは丸め誤差の影響を考慮する前の値であることに注意してください。条件数は行列の特性であり、対応するシステムを解くために使用されるコンピュータのアルゴリズムや浮動小数点精度とは関係ありません。特に、条件数は、(非常に大まかに)解xがbの変化に対して変化する割合であると考えるべきです。したがって、条件数が大きい場合、bのわずかな誤差でもxに大きな誤差が生じる可能性があります。一方、条件数が小さい場合、xの誤差はbの誤差と比べてそれほど大きくはなりません。
条件数は、より正確には、xの相対誤差とbの相対誤差の比率の最大値として定義される。
bの誤差をeとする。Aが正則行列であると仮定すると、解A −1 bの誤差はA −1 eとなる。解の相対誤差とbの相対誤差の比は
( bとeがゼロでない場合)最大値は、次の2つの演算子ノルムの積であることがわかります。
同じ定義は、以下の条件を満たす任意の一貫性のある規範にも適用されます。
条件数がちょうど 1 の場合 (これはA が線形等長変換のスカラー倍数である場合にのみ起こり得る)、解法アルゴリズムは (原理的には、つまりアルゴリズム自体がエラーを導入しない場合)、データの精度よりも悪くない精度の解の近似値を見つけることができる。
しかし、これはアルゴリズムがこの解に急速に収束することを意味するのではなく、アルゴリズムによって導入される前方誤差が中間的な丸め誤差の蓄積によって同様に発散しない限り、ソースデータの不正確さ(後方誤差)によって任意に発散しないことを意味するだけです。
条件数は無限大になる場合もありますが、これは問題が不適切であること(データの選択肢ごとに一意で明確に定義された解を持たない、つまり行列が可逆ではないこと)を意味し、どのアルゴリズムも確実に解を見つけることは期待できません。
条件数の定義は、ノルムの選択に依存する。これは、2つの例で示すことができる。
もしは、(ベクトル)ユークリッドノルム( L 2ノルムとも呼ばれ、通常次のように表記される)によって誘導される行列ノルムです。)、 それから
どこそしては最大および最小の特異値であるそれぞれ。したがって:
L 2に関する条件数は数値線形代数で非常に頻繁に現れるため、行列の条件数という名前が付けられています。
もしは、 (ベクトル)ノルムと下三角非特異である(すなわちすべての人々のために)、 それから
任意の三角行列の固有値は、対角成分に等しいことを思い出してください。
このノルムで計算される条件数は、一般的にユークリッドノルムを基準として計算される条件数よりも大きくなりますが、より簡単に評価できます(そして、解決すべき問題が非線形代数を含む場合、例えば無理関数や超越関数または数を数値的手法で近似する場合などには、これが実際に計算可能な唯一の条件数となることがよくあります)。
条件数が1より著しく大きくない場合、その行列は条件が良好であり、その逆行列を高い精度で計算できることを意味します。条件数が非常に大きい場合、その行列は条件が悪いと言われます。実際には、このような行列はほぼ特異行列であり、その逆行列の計算、あるいは線形方程式系の解を求める際に、大きな数値誤差が生じやすくなります。
逆行列を持たない行列は、条件数が無限大であると言われることが多い。あるいは、次のように定義することもできる。、 どこはムーア・ペンローズ擬似逆行列です。正方行列の場合、残念ながら条件数が不連続になりますが、逆行列を持たないものの連立方程式を定義するために使用される長方形行列にとっては有用な定義です。
条件数は非線形関数に対しても定義でき、微積分を用いて計算できます。条件数は点によって変化します。場合によっては、関数の定義域または問題の定義域における最大(または上限)条件数を全体的な条件数として使用できますが、別の場合には、特定の点における条件数の方が重要になります。
微分可能な関数の絶対条件数1変数関数の導関数の絶対値は次のとおりです。
相対条件数関数としてある時点での評価これは
これは経済学における関数の弾力性の絶対値であることに注意してください。
最も優雅な言い方をすれば、これは(絶対値)の対数微分の比として理解できる。それは、そして の対数微分それは比率はこれは、対数微分が関数の相対変化の微小な割合、つまり導関数だからです。値でスケーリング関数がある点でゼロを持つ場合、その点での条件数は無限大になることに注意してください。これは、入力の微小な変化によって出力がゼロから正または負に変化し、分母がゼロの比率が生じるため、相対的な変化が無限大になるためです。
より直接的に言えば、小さな変化がで相対的な変化は相対的な変化はは比率を取ると
最後の項は差分商(割線の傾き)であり、極限を取ると導関数が得られます。
一般的な初等関数の条件数は、有効数字を計算する上で特に重要であり、導関数からすぐに計算できます。以下に、いくつかの重要な条件数を示します。
条件番号は任意の関数に対して定義できます。あるドメイン(例:実数のタプル) を何らかのコドメイン(例えば、実数のタプル定義域と値域の両方がバナッハ空間であるような関数です。これらは、引数の小さな変化(または小さな誤差)に対する関数の感度を表します。これは、多項式の根の探索や固有値の計算など、多くの計算問題の感度と潜在的な精度上の困難を評価する上で非常に重要です。
条件番号ある時点で(具体的には、その相対条件数[ 4 ])は、分数変化の最大比率として定義される。の任意の小数変化に対して変化が極限に達するときで極めて小さくなる:[ 4 ]
どこは、定義域/値域のノルムです。。
もし微分可能であり、これは以下と同等です。[ 4 ]