2017-03-15 7 views
-1

数値のxとyデータをnumpyの配列として取り、それをxの領域に(数値的に)積分するプログラムを書いています。私はこれをして、今は精度について疑問に思っています。numpyとの正確な合計

私は、math.fsum()sum()でない特定のエラーを修正していることに気がつきました。numpy.sumもこれらの修正を行っていますか?

sum = numpy.sum(array)などと書いても、結果(合計)はできるだけ正確ですか?私はそれ自身がいくつかの操作の積である何千ものデータ点を合計しているので、小さな誤差が蓄積する可能性があります。私はPythonで十分精通していないので、小数点以下の桁までの精度が重要なときに使用する必要がある、より正確な数学モジュールがあるかどうかを知ることができます。

答えて

1

いいえ、numpy.sumはありませんは修正math.fsumを行います。それはpairwise summationを使用しています。これは、テクニックmath.fsumが使用するほど良くはありませんが、それほど悪くはありません。

+0

それは悪いことだ、OPの正確である:あなたが機能を持っている場合scipy.interpolate.UnivariateSpline.integral

:スプラインフィットを統合 使用事例。 'math.fsum'は間違いなくアドバイスされています。 –

0

scipyのダウンロードで、いくつかの数値積分の実装、numpyのLIBSは、あなたがポイントの配列に適用することができますが、より良い方法をしたい場合

一部(ペア)があります。 numpy.trapz

か、補間を使用することができ、小さな加数がたくさんある場合scipy.integrate