数値レシピの現代的な代替手段は何ですか?[閉まっている]


21

過去において、数値レシピの本は、数値アルゴリズムのゴールドスタンダードリファレンスと見なされていました。初期のFortranエディションの後には、CおよびC ++などのエディションが続き、最新版になりました。これらを通して、最新のアルゴリズムのリファレンスコードを提供しました。

現在古いエディションは無料オンラインで入手できます

残念ながら、今ではほとんど歴史的な本としてのみ有用だと思います。「ソフトウェアエンジニアリング」の実践は時代遅れであるように思われ、実際のコンテンツは文献に追いついていません。

現代のプログラマは、同様に包括的でありながら親しみやすいどのような参照を代わりに見るべきでしょうか?


7
アルゴリズム自体は、汎用の問題解決に非常に適しています。望ましいものを残すのは、それらの実装です。しかし、本のコードは好みに合わせて変更するのに十分なほど単純なので、それで問題ありません。各章の実装はかなり「自己完結型」であり、不要です。数値のレシピは、いくつかの基本的な数値を実装する必要があるが、巨大で複雑または高価なライブラリまたはフレームワークを必要としない/必要としない場合に適したリファレンスです。
アンジェロ

3
現状では、この質問は攻撃的と見なされる可能性があり、確かにあまり建設的ではありません。私は私のキャリアを通じて数値レシピを利用してきましたが、複雑な問題を解決するためのアルゴリズムの準備が整った参照を必要とする人には強くお勧めします。コードを直接使用したことはありませんが、自分の好みのインターフェイスを使用して、常に自分の言語でアルゴリズムを実装しています。あなたが見るように見える問題は表面的なものであり、見れば気になればより良いアルゴリズムがありますが、それでもNRは正しい方向を示すのに役立ちます。
マークブース

5
本で提供されているCおよびC ++コードが、優れたFortranプログラマーがあらゆる言語で優れたFortranコードを記述できることを再び証明することに同意する必要があります。しかし、これらの本はまだ素晴らしい参考文献です。アルゴリズムの説明は非常に明確です。コードはそのまま使用できます。また、あなたの感性を本当に損なう場合は、いつでも自分で書き換えることができます。ゼロから実装するよりもずっと簡単です。
ディマ

12
NRのコードに対する著作権の制限は非常に厳しいものであることを忘れないでください。最大10個のルーチンのコードを個人的に入力することのみが許可されており、結果のプログラムを他の人またはコンピューターに配布することは許可されていません。ほぼすべての作業環境で、これは、とにかくアルゴリズムを再実装する必要があることを意味します。そのため、洗練されたオブジェクト指向または機能実装を提供する著者の利点は何でしょうか。本が提供するサービスは、強力な数学ライブラリの提供ではなく、重要なアルゴリズムの明確な説明です。
チャールズE.グラント

3
コードがどのようなものか、誰が気にしますか?きれいに包み、決して見ないでください。
デビッドヘファーナン

回答:


7

数値レシピに関しては、2つのことが必要です。アルゴリズムがどのようにプログラミング実装に変換されるかを理解することと、2番目のものを予約するリファレンス実装です。

ないように思わNO BOOK +リファレンスソフトウェアの組み合わせ。ただし、いくつかの優れた参照ソフトウェアがあり、その一部はそのようなアルゴリズムに基づいて論文への参照を提供します。

役立つ可能性のあるリファレンス(ほとんどはオープンソース)ライブラリのリストを以下に示します。

  1. GNU科学ライブラリ
  2. LAPACK、それは良い持っている本をよう手動ユーザー もあり、LAPACK ++および(TNT)他には、派生/関連パッケージ。詳しくはこちらをご覧ください。
  3. 線形代数のブースト
  4. アルマジロ
  5. BLAS

他の特定のものは

  1. 統計モデルのアポフェニア
  2. コルト
  3. FFTW
  4. Rパッケージ -と
  5. OpenCV
  6. Intel Mathカーネルライブラリ
  7. 以下のためのパターン認識

オープンソースツールによるデータ分析」もご覧ください。

すべてを確認したわけではありませんが、ここに比較の膨大なリストがあります。
http://www.netlib.org/utk/people/JackDongarra/la-sw.html


4

Numerical Recipesは、IMOとしても有用な本です。導出、有用な状況、および有用でない場合に考慮すべき代替案を含む、アルゴリズムを非常によく説明しています。私は何年も本を使用しています。

私が一度も使用したことがないことの 1つは、そのコードです。私はいつも彼らが説明するアルゴリズムに基づいて独自の実装を書いています。その点では、コードの品質は重要ではありません(そして、それは確かに疑わしいです:第2版C本では、著者がFortranのバックグラウンドから来ているため、配列をユニットインデックスにする関数とマクロのコレクションを定義しています)。例として、かつてObjective-CでFFTを実装する必要があったため、FortranでNRを使用して、FFTの機能とコードの外観を理解しました。

NRはKnuthと同じように考えてください。その本のコードをプロジェクトに決して貼り付けないでください。


3

個人的に私はそれが好きです、それは私が理解できるレベルについてです

コードはFortranが 'C'に翻訳されていますが、Fortranに変換してからC ++に変換するだけで構いません!FortranまたはCバージョンには、コードがほとんど自己完結型であるという利点があります。特にコーディングの品質を考えると、多数のC ++クラスをドラッグして行列や複雑な処理を行う必要はありません。

著者によるばかげた著作権の主張には正当な異議があり、私はクラスでNRを禁止している多くの講師を知っています。数値の専門家の間では、この本は「トラブルに巻き込まれるのに十分な情報」としての評判も持っています。しかし、彼らの唯一の提案は、一般的に個人コードを使用するか、NAGを購入することです。

代替の高品質数値ライブラリの推奨コレクションは、http://www.netlib.org/にあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.