0

double 型を使用して、Cubic Spline Interpolation Algorithm を作成しました。その作業は成功したようですが、非常に小さい値を計算すると 6% 程度の相対誤差がありました。

科学的な数値解析を正確に行うには double データ型で十分ですか?

4

4 に答える 4

6

Doubleは、ほとんどのアプリケーションで十分な精度を備えています。もちろんそれは有限ですが、悪いアルゴリズムを使用することによって、任意の量の精度を浪費することは常に可能です。実際、それがあなたの最初の容疑者になるはずです。コードをよく見て、丸め誤差が必要以上に早く蓄積されるようなことをしているのか、または互いに非常に近い値を減算するような危険なことをしているのかを確認してください。

于 2011-08-17T00:52:33.870 に答える
1

科学的な数値解析は正しく行うのが難しいため、専門家に任せています。独自の数値ライブラリを作成する代わりに、数値ライブラリを使用することを検討しましたか? Eigen は私の現在のお気に入りです: http://eigen.tuxfamily.org/index.php?title=Main_Page

Numerical Recipes (nr.com) の最新のコピーを常に手元に置いています。これには、補間に関する優れた章があります。NR には制限付きのライセンスがありますが、ライターは自分が何をしているかを知っており、各数値手法について簡潔に説明しています。他に注目すべきライブラリには、ATLAS および GNU Scientific Library があります。

あなたの質問に答えるには、ほとんどの科学的アプリケーションには double で十分です。アルゴリズムの問​​題が好きなはずの以前のポスターに同意します。使用しているアルゴリズムのコードを投稿することを検討しましたか?

于 2011-08-17T01:31:04.910 に答える
0

double で十分かどうかは、使用している数値の種類によって異なります。ヘニングが示唆するように、使用しているアルゴリズムを調べて、それらが数値的に安定していることを確認するのがおそらく最善です。

手始めに、足し算に適したアルゴリズムを次に示します: Kahan summation algorithm

于 2011-08-17T01:15:43.370 に答える