『Numerical Recipes』は、 William H. Press、 Saul A. Teukolsky、William T. Vetterling、 Brian P. Flanneryによるアルゴリズムと数値解析に関する一連の書籍の総称である。これらの書籍は、1986年から様々な版で出版されており、最新版は2007年に刊行された。
「Numerical Recipes」シリーズは、古典的な数値解析(補間、積分、線形代数、微分方程式など)、信号処理(フーリエ変換、フィルタリング)、データの統計的処理、そして機械学習のいくつかのトピック(隠れマルコフモデル、サポートベクターマシン)など、幅広いトピックを網羅しています。文章は分かりやすく、親しみやすいトーンで書かれています。重点は、最適なパフォーマンスと信頼性を実現するために実際に必要となる可能性のある改良点ではなく、技術の根底にある基本原理を理解することに置かれています。証明の背後にある考え方は概説され、参考文献も示されていますが、厳密な証明はほとんど行われていません。重要な点として、本書で解説されているほぼすべての手法はプログラミング言語で実装されており、コードは本書に掲載されています。各版は特定のプログラミング言語に対応しています。
出版社であるケンブリッジ大学出版局によると、Numerical Recipesシリーズは、科学的プログラミング手法に関する書籍の中で、歴史的に最も売れている書籍です。近年、Numerical Recipesシリーズは、ISI Web of Knowledgeによると、科学文献で年間3000回以上引用されています(例えば、2008年には3962回)。[ 1 ]また、2017年末時点で、Google Scholarでは44000回以上引用されています。[ 2 ]
最初の出版物は1986年に『Numerical Recipes, The Art of Scientific Computing』というタイトルで、FortranとPascalの両方のコードが含まれていました。付随する書籍『Numerical Recipes Example Book (Pascal)』は1985年に初版が発行されました。(「Examples」の序文には、メインの書籍も1985年に発行されたと記載されていますが、その書籍の公式注記には1986年とあります。)その後、Pascal、BASIC、Cのコードを含む補足版が発行されました。 『Numerical Recipes』は、当初から数値解析コミュニティの常識とは異なる、独自の編集方針をとっていました。
本書に一つだけ支配的なテーマがあるとすれば、それは数値計算の実際的な方法が、効率的で巧妙であり、そして重要なことに、明快であるということだろう。効率的な計算方法は必然的に難解で複雑で、「ブラックボックス」の形でしか役に立たないという別の見解は、断固として拒否する。[ 3 ]
しかし、実際には、1980年代は「ブラックボックス」側にとって実り多い年となり、BLASやLAPACKなどの重要なライブラリ、MATLABやMathematicaなどの統合環境が誕生しました。1990年代初頭にNumerical Recipesの第2版(C、Fortran-77、Fortran-90のコード付き)が出版された頃には、Numerical Recipesの読者層は計算を行う科学者の大多数ではなく、より数学的な数値解析者と統合環境を使用するより大きなコミュニティの中間に位置する層だけであることが明らかになりました。第2版はこのニッチな環境で安定した地位を占めました。[ 4 ]
2000年代半ばまでに、科学計算の実践は成熟したインターネットとウェブによって根本的に変化しました。著者らは、 Numerical Recipesの本がコード例よりも解説テキストで評価されるようになっていることを認識し、本の範囲を大幅に拡張し、テキストの大部分を大幅に書き直しました。彼らは、説明されているすべてのメソッドについて、引き続き本に掲載されているコードを C++ で含めました。[ 5 ]第 3 版は電子書籍としてもリリースされ、[ 6 ]最終的には Web 上で無料で (通知付き) または有料または機関購読 (より高速で完全なアクセス、通知なし) で利用できるようになりました。
2015年、Numerical Recipesは歴史的な2文字のドメイン名nr.com [ 7 ]を売却し、numerical.recipes代わりにnr.comとなった。
Numerical Recipes は、非常に幅広いアルゴリズムを網羅した 1 巻の本です。残念ながら、この形式により、アルゴリズムの選択が、より単純で短い初期のアルゴリズムに偏ってしまい、後のより複雑なアルゴリズムほど正確、効率的、または安定していませんでした。[ 8 ] [ 9 ]初版にはいくつかの小さなバグもありましたが、後の版で修正されました。しかし、著者によると、何年もの間、インターネット上で Numerical Recipes は「バグだらけ」だという噂に遭遇したそうです。彼らはこれを、古いバージョンのコードを使用していること、コードの他の部分のバグ、正しく使用するにはある程度の理解が必要なルーチンの誤用によるものだと考えていました。[ 10 ]
しかし、この反論では、スナイダーのコメント集のもう一つのテーマである、コードの制限、境界条件、より現代的なアルゴリズムへの言及の欠如に関する批判は取り上げられていない。[ 9 ]パベル・ホロボロドコによれば、ベッセル関数の精度の問題は第3版まで続いている。[ 8 ]
数値解析者からの批判にもかかわらず、エンジニアや科学者は概して、この本の範囲が広くて便利だと感じている。[ 9 ]ノーマン・グレイは次の引用で同意している。[ 11 ]
『Numerical Recipes』[nr]は数値解析の教科書を自称するものではなく、著者が解析学者ではなく(天体)物理学者やエンジニアであることを強調し、本書の対象読者の動機や焦りを共有していることを明記している。NRの著者の前提は、理解していない数値ルーチンを使用すると、いずれにせよ問題に直面するというものだ。彼らは、提示するルーチンを理解できるだけの十分な数学的詳細と、問題が発生した際に診断できる程度の深さ、そしてNRルーチンが限界に達した際に代替案についてより洗練された選択ができる程度の深さを提供しようとしている。[...]
コードリストはNumerical Recipes の著者によって著作権で保護され、商用ライセンスが付与されています。[ 12 ]コードの使用ライセンスは書籍の購入時に付与されますが、使用条件は非常に制限的です。[ 13 ]例えば、プログラマーは NR コードを完成したプログラムから抽出して使用できないようにする必要があります。これは、実行可能性が疑わしい難しい要件です。[ 14 ]
しかし、『数値レシピ』には、コンピュータプログラムの著作権に関する以下の記述が含まれています。
著作権はアイデアそのものを保護するものではなく、アイデアを特定の形式で表現したもののみを保護する。コンピュータプログラムの場合、アイデアはプログラムの手法とアルゴリズム、プログラマが採用する必要な手順のシーケンスを含む。これらのアイデアの表現はプログラムのソースコードである 。プログラムに含まれるアイデアを分析し、それらのアイデアを全く異なる独自の形で表現した場合、その新しいプログラム実装はあなたのものとなる。[ 6 ]
GNU Scientific Libraryの初期の動機の一つは、Numerical Recipesの代替となる無料のライブラリが必要だったことである。[ 15 ]
もう一つの批判は、現代のオブジェクト指向C++で書かれているにもかかわらず、一部の現代の読者には「Fortran風」に感じられる本のコーディングスタイルに関するものである。[ 15 ]著者らは、スペースの制約と読みやすさのために、非常に簡潔なコーディングスタイルが本の形式上必要だったと弁明している。[ 4 ]
これらの書籍は、版(第1版、第2版、第3版)と、コードが記述されているコンピュータ言語によって区別される。
これらの書籍はケンブリッジ大学出版局から出版されている。
もしその本が読みたいなら買って、そこから学んでもいいが、代わりにGNU Scientific Libraryのようなライブラリを使ってほしい。特に、自分の研究成果を他の人に使ってもらいたいならなおさらだ。NRライセンスは科学界のRIAAのようなものだ。
{{cite web}}: CS1 maint: bot: 元の URL の状態が不明です (リンク)