14

独自の数式パーサーに含めるために、ガンマ、ベータ、erf、ベッセルの特殊関数 (および関連する関数) を計算する Java ライブラリを探しています。数値の精度が最優先事項です。これは科学的なプログラムです。また、オープンソースであり、商用利用には無料である必要があります (Apache や BSD ライセンスなど)。

JAMAライブラリのような行列演算用の「古典的」で「参照」実装がすぐに見つかると思いましたが、今のところそれを見つけることができません。特別な関数の評価のみが必要で、追加のライブラリ機能は必要ありません。

最初に見つけたのはApache Common Mathですが、ベータ関数の精度がひどいことがわかります: http://commons.apache.org/proper/commons-math/userguide/special.html

それから私はコルトを見つけました。良さそうに見えますが、開発者やユーザーによって適切にテストされたかどうかはわかりません (まれにしか使用されないコードがどこかからコピーされ、間違いがあるなどの可能性があります)。

任意の提案をいただければ幸いです。

4

1 に答える 1

3

まず第一に、Web ページの自家製の外観と、Colt ライブラリ (およびその上に構築された JET および JAS ライブラリ) の古いリリース日付に惑わされないでください。それは無限の研究プロジェクトで使用されており、コードは何百人もの非常に才能のある人々によって検証されています.

もちろん、あなたの製品の信頼性が危機に瀕している場合、私の言葉を鵜呑みにするべきではありません。自分で正しいことを感じる方法を 2 つ紹介します。

  • ソースコードを読んでください。Colt の JavaDoc には、数値計算法が公開された論文への参照が含まれています。これらの論文を参照している他の研究を検索し、使用した方法の問題が後で発見されたかどうかを確認してください。
  • 信頼できる市販の数値計算ソフトウェア (Mathematica など) を使用し、関心のある関数の値を体系的またはランダムに生成し、これらを Colt によって生成された値と比較します。このようなテストを十分に長く実行すると、数値の品質をかなりよく理解できます。

Colt を本当に使いたくない場合 (これはあなたの質問だと思います)、数値レシピ本 ( http://www.nrbook.com ) から C/C++ コードを自分で移植することをお勧めします。通常、あまり採用する必要はありませんが、それでもテスト方法について考える必要があります。

于 2013-04-27T14:13:58.470 に答える