数値安定性がゼロ付近で、xが非常に正または負であるとき、xe^x /(e^x-1)をどのように評価するのですか?私はnumpy
とscipy
のすべての通常の数学関数にアクセスできます。Pythonで数値安定性を持つxe^x /(e^x-1)をどのように評価するのですか?
1
A
答えて
2
def f(x):
if abs(x) > 0.1: return x*exp(x)/(exp(x)-1)
else: return 1/(1.-x/2.+x**2/6.-x**3/24.)
最後の行の拡大は、より精度が要求される場合に明らかな方法で拡張することができ、再フレーズによって高速化することができます。それが立てば、1e-6ほどの間違いがあります。
+2
'x * exp(x)-1')の真の値が 'x>に非常に近いので、' x> z 'それを簡単に計算するとオーバーフローとナノが発生します。 – Leon
+0
良い点、@レオン。この可能性に対処するためには、 'x> 0.1'と' x <-0.1 'の場合を別々に扱うべきです。 'x> 0.1'なら' x /(1-exp(-x)) 'を返します。 'x <-0.1'の場合、' x * exp(x)/(exp(x)-1) 'を返します。それ以外の場合は多項式近似を使用します。 –
関連する問題
- 1. Pythonで微分をどのように評価しますか?
- 2. シッククライアントのデスクトップアプリケーションでPythonの評価がより安全になる
- 3. 数値との積分をどのように評価できますか?
- 4. ブール評価を持つ関数にゲッターをバインドするにはどうすればよいですか?
- 5. Pythonの式評価プロセスをどのように進めるのですか?
- 6. MySQLでは、私の関数はどのように数値を評価するのですか?
- 7. 数値データの複数の列(「評価」)を持つ各変数(クラス「文字」)の平均を見つけるにはどうすればよいですか?
- 8. XPathはどのように「評価」するのですか?
- 9. 特定の値で関数を並列に評価する
- 10. スカラの関数定義がどのように特性に評価されるのかを理解する
- 11. 評価関数を安全にするにはどうすればよいですか?
- 12. AngularJSの要素属性を持つscopeオブジェクトを評価する
- 13. ディレクティブの属性値を評価するにはどうすればよいですか?
- 14. 実行時に値が評価される変数を指定してクエリを評価するにはどうすればよいですか?
- 15. JavaScriptはどのように引数を評価しますか?
- 16. は、どのように私は1つの変数持つ価値を持っているのpython
- 17. どのように変数を評価する
- 18. OpenFlowコントローラの性能評価:信頼性の高い評価は何ですか?
- 19. Pythonで複数の値を持つ観測値をプロットするにはどうすればよいですか?
- 20. GLSL:コンパイラは定数引数を持つ関数を評価しますか?
- 21. このクエリはどのように評価できますか?
- 22. javascriptでNaNの等価性を評価するには?
- 23. 算術計算をどのように評価するのですか?
- 24. 複数の条件を持つ条件文はどのように評価されますか?
- 25. SonarQubeはどのように「保守性評価」を計算しますか?
- 26. Thymeleafの属性で複数の式を評価する
- 27. SymPy:式を定数で評価するにはどうすればよいですか?
- 28. 評価値はいつ評価されますか?
- 29. pymc3の対数尤度をどのように評価するか
- 30. Angularはどのように式を評価しますか?
scipy.special.exprelが見つかりました。これは動作します。私はtheanoまたはtensorflow上で自分のコードの作業をする必要があるので、より基本的なソリューションが良いでしょう。 –
「np.expm1」は大きな入力に対して 'inf'ではなく' nan'を与えるように思われます。それは 'if'や' where'のようなものを避けることを難しくします。 – user2357112
これはまだオープンしている[プラットフォームに依存するバグ](https://github.com/numpy/numpy/issues/6818)のようです。 – user2357112