数値では、不安定なスキームを識別し、その安定性を改善できることが非常に重要です。不安定な浮動小数点計算を識別する方法は?
私は多くの数値スキームが連携する非常に複雑なシミュレーションに取り組んでおり、その弱点を特定するための方法論を探しています。私は微分方程式を含む物理モデルに取り組んでいます。プロセス全体の概観は次のとおりです。
(準備手順)物理的観測Pを収集します。
シミュレーションの初期パラメーターを決定します。この用途我々は、パラメータのパラメータ空間ルックで歩く最適化アルゴリズム、Cは、いくつかの誤差関数ように、E(F(C)、P)が最小化され、Fは、パラメータの一部由来の量です。
シミュレーションエンジンのプラグC。これはEDPのオイラースキームであるため、各タイムステップで、動的を駆動する項を計算し(それぞれが複雑な関数であり、不安定になる可能性があります)、次を計算するためにこれらの動的項をオイラースキームに供給します状態。これは数千の時点で続きます。
シミュレーションの最後に、最終状態Sの関数Proof(S)を計算し、観測量から推定されるいくつかの量Require(P)と比較します。これは、結果の正式な証拠ではなく、妥当性チェックです。
また、複雑な操作の塔(オイラースキーム内、Proof内の動的な用語の計算)を見ています。そして、「不良部品」を認識して修正したいと思います。
精度が低下した浮動小数点数のソフトウェア実装を使用すると、数値スキームの不安定性が拡大し、異なる実装間の比較が容易になると推測します。これは、この質問を調査する一般的な手法ですか?Bochsとして仮想マシンを使用して、プログラムを変更せずにこれを達成することは可能ですか?
安定性の問題に適切に対処するために、数値手順の一般的な入力を対象とすることが許容される場合があります。そのため、その入力でうまく機能するように調整できます。典型的な入力のサンプルが与えられると、いくつかの中間結果をスヌーピングし、それらの統計プロファイルを準備することが可能です。繰り返しますが、これは安定性の問題を研究する一般的な手法ですか?これには仮想マシンが便利ですか?