科学・技術
漸化式の数値的不安定性
Numerical (In)Stability of Recurrence Relations (johndcook.com)
要約
この記事では、特殊関数における3項漸化式の数値的不安定性について解説しています。特に、ベッセル関数Jn(x)とYn(x)を例に、漸化式を順方向(低次から高次へ)または逆方向(高次から低次へ)に適用した場合の安定性の違いを説明します。これは、解がnとともに増加するものと減衰するものがあり、計算中に丸め誤差によって増加する解の成分が混入することが原因です。
全文翻訳
前回の投稿では、特殊関数の3項漸化式の例をいくつか示しました。
これらの関係は計算上有用ですが、注意して適用する必要があります。
数年前に、安定した漸化式と不安定な漸化式についての投稿を書きました。
その投稿では、ベッセル関数の漸化式の安定性が、どの種類のベッセル関数で、どちらの方向に漸化式が適用されるかによって決まることを示しました。
順方向、つまり低次の値から高次の値を計算する場合、第2種ベッセル関数 Yn にはうまく機能しますが、第1種ベッセル関数 Jn には機能しません。
逆方向では、Jn に対しては漸化式は安定していますが、Yn に対しては安定していません。
この投稿では、その理由を説明します。
2階線形差分方程式は、2階線形微分方程式と同様に、2つの独立な解を持ちます。
両方の種類の જો समीकरण (方程式) において、すべての解は2つの解の線形結合です。
一方の解が n とともに増加し、もう一方が減衰すると仮定します。
減衰する解を計算したいかもしれませんが、その過程で丸め誤差により、増加する解の小さな成分を取り込んでしまう可能性があります。
この投稿では、微分方程式におけるこの現象を例示し、この投稿では差分方程式における現象を例示します。
テキストブックでベッセル関数のグラフを見ると、おそらく n のいくつかの小さな値に対する Jn(x) と Yn(x) のグラフがいくつか表示されているでしょう。
これらの関数は、サイン関数とコサイン関数のように、大まかには同じように振る舞うように見えます。
そして、x の関数としてはそれは真実です。
しかし、固定された x に対する n の関数としての Jn(x) と Yn(x) については、それは真実ではありません。
n が増加するにつれて、Jn(x) はゼロに減衰し、Yn(x) は −∞ に発散します。
それが数値的不安定性の源です。
そして、2つの独立な解の比率が n の関数としてゼロまたは無限大になる他の漸化式でも同様の不安定性の問題が発生します。
発散しない解、いわゆる最小解を計算するためのテクニックがあります。例えば、ここ[1]で言及されているMillerのアルゴリズムなどです。