問題タブ [quad]

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 投票する
1 に答える
291 参照

python - エラー出力 ("IntegrationWarning") のある Python コードを意図的にクラッシュさせる方法

いくつかのパラメータースペースの下でエラーを出力するPythonスクリプトがあります:

このコードでは、常に x_b >= x_a であり、常に some_function(x) >= 0 です。したがって、常に function_integral >= 0 になります。またはそうすべきです。

コードは引き続き実行されますが、(考えられるバグをキャッチするために) 故意に追加したエラーが原因でクラッシュした直後に、この場合は function_integral >= 0 が必要でした。私はこのコードを以下の粗雑なアプローチでクラッシュさせました:

ipython では、「debug」を使用して問題を調査します。

「IntegrationWarning」エラーのこの特定の出力は、x_b = x_a + ガンマ (ガンマが x_b および x_a に比べて非常に小さい) の場合に発生するようです。x_b = x_a のコードの場合があります。この場合、上記の積分は必要ありません。これらの場合は、function_integral をゼロにする必要があるという推論があるからです。したがって、積分関数はここでは使用されません。

丸め誤差の後、コードは function_integral = -1e-11 に近い整数値を返すように見えるため、基本的にゼロですが、負であるという事実が問題を引き起こします (そして、丸め誤差自体が精度に懸念を引き起こします)。実行を継続する場合のコードの)。

理論的には、x_b が基本的に x_a と等しい場合に function_integral = 0 を設定することで、この問題を回避できますが、これで十分かもしれませんが、この問題をもう少し詳しく調べて、最初の場所。

何らかの理由で、組み込みのクラッシュを追加すると、積分を計算してその値を出力/返す関数内で、ここでエラーがキャッチされません。コードの後半で、function_integral を使用して別のパラメーター (>= 0 でなければならない) を定義するときにのみ、クラッシュが発生します (これも組み込みました)。

問題は、Python が "IntegrationWarning" のような組み込みエラーの 1 つを出力しているときに、コードを (デバッグするために) クラッシュさせるにはどうすればよいかということです。

編集: x_b = x_a + ガンマの場合、quad() を呼び出さないという簡単で汚いアプローチに行き着きました。ここで、ガンマは x_b と x_a に比べて小さいです。この解決策に完全に満足しているわけではありませんが、この場合はおそらく十分でしょう。このケースをデバッグする別のアプローチを聞くことは非常に興味深いでしょう。