問題タブ [numerical-stability]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
1456 参照

algorithm - Baum-Welch アルゴリズムのスケーリングの問題 - Matlab

このウィキペディアのリンクからMatlabにBaum-Welchアルゴリズムを実装しています:Baum-Welchアルゴリズム。これは、金融時系列のボラティリティ予測の一部です。
2 つの質問があります。

1 : ウィキペディア ページの最後の更新ステップで、「これらのステップは、必要なレベルの収束まで反復的に繰り返されるようになりました。」と説明されています。
では、ループを停止する条件を宣言するにはどうすればよいでしょうか。さらに、どの変数を評価して、許容できるかどうかを確認する必要がありますか?

2 :ウィキペディアの式に注意すると、次のようになりますkesi

alpha分子 ( and beta) でスケーリングされる 2 つの係数と、分母 ( just )でスケーリングされる 1 つの係数がありますalpha。したがって、お互いの効果をキャンセルしません。方程式を実装し(たとえば、20回繰り返すループで)、スケーリング手順を実行しました。しかし、「遷移確率行列」と「初期分布」と「放出行列」はNaN値を取得します!!!

この質問の回答Baum-Welch 多くの可能な観察を読みました。そこに記載されているチュートリアルに基づいてスケーリングを行いました。
これが私のコードです:

では、このスケーリングの問題に対して今何をすべきでしょうか? このNaN値は、スケーリングの問題またはその他の理由によるものですか?
御時間ありがとうございます。

0 投票する
0 に答える
159 参照

python - 適応数値積分の実装

常微分方程式系を統合できる Python 3 パッケージを作成しました。これを書いているときに、情報が見つからないように見える問題に遭遇しました。

問題:

基本的に、ローカルエラーに応じてステップサイズを調整する適応アルゴリズムがあります(実際の方法は、Cash-Karp係数を使用したRKFアルゴリズムの実装です)。特定のポイントの後、ステップサイズが十分に大きい場合、メソッド終了時刻をオーバーシュートします。

私の解決策:

現在のステップ サイズが積分の終了時間を超える場合、残り時間の値の半分にステップ サイズを設定するように設定しました。式の形式: dt = (t_end - t_current)/2

しかし、これは、適応アルゴリズムで使用される相対誤差の特定の要件により、時間ステップが非常に小さくなります。およそ 1e-15 のオーダーで、t_current はマシンの精度の制限により増加しないため、数値的な不安定性につながります。

私の質問:

このような数値的な不安定性を作成することなく、終了時間が予想される終了時間に対して小数点以下 15 桁まで正確になるように、統合アルゴリズムを実装するより効果的な方法があるかどうか疑問に思っていました。

0 投票する
1 に答える
1318 参照

python - Python で数値安定性を使用して xe^x/(e^x-1) を評価するにはどうすればよいですか?

xe^x/(e^x-1) をゼロ付近の数値安定性で評価し、x が非常に正または負の場合はどうすればよいですか? と のすべての通常の数学関数にアクセスできnumpyますscipy

0 投票する
2 に答える
340 参照

python - Python 0 に近い x の log(1+x)/x を計算する

0に近いxの値について、Pythonでlog(1+x)/xの値を正しく計算する方法はありますか? np.log1p(x)/x を使用して通常に行うと、1 になります。np.log(x) を使用すると、どういうわけか正しい値が得られるようです。log1p の方が安定していると思われませんか?

0 投票する
4 に答える
267 参照

c++ - IEEE 754 浮動小数点の加算と乗算の互換性

加算は、IEEE 754 (IEC 559) 浮動小数点標準x + xの乗算によって交換可能ですか、またはより一般的に言えば、常にまったく同じ結果が得られるという保証はありますか?2 * xcase_addcase_mul

0 投票する
4 に答える
580 参照

c++ - std::acos を使用して std::cos(angle) から正確な角度を復元する

angle == std::acos(std::cos(angle))が範囲 [0, Pi] 内にある場合angle、つまり、上記の範囲制限を指定して使用angleした結果からの正確な元の値を復元することが可能であることが C++ 標準によって保証されていますか?std::cosstd::acos

angleinfinityまたはNaN省略されている場合の限界ケース。

0 投票する
0 に答える
152 参照

matlab - MATLAB で Ax=b を解く際の数値エラー

Ax = bMATLAB でシステムを解こうとしています。ここで、 は から までのA範囲の (非ゼロ) 値を持つ 30x30 三角行列であり、は から1e-14までの範囲の値を持つ 30 要素の列ベクトルです。を入力すると、回答が表示され、警告メッセージは表示されませんが、回答は妥当ではありません (ベクトルの下部にある乱数のように見えます)。これは数値の誤差によるものだと思います。 0.7b1e-31e3x = A\b

このページのメッセージ 5 は 、数値エラーを回避するために行列を分解/スケーリングすることを提案していますが、スケーリング行列を計算する方法を理解できませんでした。

質問は次のとおりです:これは実際に数値不安定性の例ですか?もしそうなら、どうすれば行列 A を再スケーリングしたり、MATLAB が計算を実行する方法を変更したりして、それを回避できますか?


問題を引き起こしている行列とベクトルは次のとおりです。

完全精度の変数を含む .mat ファイルは、ここにあります。


私のマシン(OS X 10.10.5のMatlab R2013a)で得た結果は次のとおりです。

1e-13 のオーダーの値を返しますがnorm(A*x-b)、解決しようとしている問題を考えると、結果は物理的に妥当ではありません (x の値は単調に減少し、負の値はありません)。例として、同じ行列 A で正しい (見た目の) 解を返す同様のデータセットを次に示します。