Welche modernen Alternativen zu numerischen Rezepten gibt es? [geschlossen]


21

In der Vergangenheit galt das Buch Numerical Recipes als Goldstandard für numerische Algorithmen. Der frühesten Fortran-Edition folgten Editionen in C und C ++ und andere, um sie auf den neuesten Stand zu bringen. Dadurch wurde ein Referenzcode für die aktuellen Algorithmen bereitgestellt.

Ältere Ausgaben sind heutzutage kostenlos online verfügbar .

Leider denke ich, dass es jetzt meist nur als historischer Foliant nützlich ist. Die "Software Engineering" -Praktiken scheinen mir veraltet zu sein, und der tatsächliche Inhalt hat nicht mit der Literatur Schritt gehalten.

Welche ähnlich umfassenden und dennoch ansprechbaren Referenzen sollte sich der moderne Programmierer stattdessen ansehen?


7
Die Algorithmen selbst eignen sich sehr gut zur allgemeinen Problemlösung. Es sind ihre Implementierungen, die zu wünschen übrig lassen. Dies ist jedoch in Ordnung, da der Code im Buch so einfach ist, dass er an Ihre Vorlieben angepasst werden kann. Die Implementierungen in den Kapiteln sind ziemlich "eigenständig" und frei von Kruft. Numerische Rezepte sind immer noch eine gute Referenz für Zeiten, in denen Sie einige grundlegende numerische Dinge implementieren müssen, aber keine große komplexe oder teure Bibliothek oder ein Framework benötigen.
Angelo

3
So wie es aussieht, könnte diese Frage als anstößig angesehen werden, sie ist sicherlich nicht sehr konstruktiv. Ich habe im Laufe meiner Karriere numerische Rezepte verwendet und kann sie jedem nur empfehlen, der eine Referenz für Algorithmen zur Lösung komplexer Probleme benötigt. Ich habe den Code nie direkt verwendet, aber ich habe die Algorithmen immer in meinen eigenen Sprachen unter Verwendung meiner eigenen bevorzugten Schnittstellen implementiert. Die Probleme, die Sie zu sehen scheinen, sind oberflächlich, und es gibt normalerweise bessere Algorithmen, wenn Sie schauen möchten, aber auch dann ist NR nützlich, um Sie in die richtige Richtung zu weisen.
Mark Booth

5
Ich muss zustimmen, dass der in den Büchern bereitgestellte C- und C ++ - Code erneut beweist, dass ein guter Fortran-Programmierer guten Fortran-Code in jeder Sprache schreiben kann. Diese Bücher sind jedoch immer noch eine gute Referenz. Die Erklärungen der Algorithmen sind sehr klar. Der Code kann sofort verwendet werden. Wenn er Ihre Empfindlichkeiten wirklich verletzt, können Sie ihn jederzeit selbst umschreiben. Es wäre immer noch viel einfacher, es von Grund auf neu zu implementieren.
Dima

12
Denken Sie daran, dass die Copyright-Beschränkungen für den Code in NR ziemlich drakonisch sind. Sie dürfen den Code nur für bis zu zehn Routinen persönlich eingeben, und Sie dürfen das resultierende Programm NICHT an eine andere Person oder einen anderen Computer weitergeben. In fast jeder Arbeitsumgebung bedeutet dies, dass Sie den Algorithmus ohnehin neu implementieren müssen. Welchen Nutzen hätten die Autoren also, wenn sie eine ausgefeilte OO- oder funktionale Implementierung bereitstellen würden? Der Service des Buches ist eine klare Erklärung wichtiger Algorithmen, nicht die Bereitstellung einer starken Mathematikbibliothek.
Charles E. Grant

3
Wen interessiert es, wie der Code ist? Wickle es schön ein und schaue es nie an.
David Heffernan

Antworten:


7

In Bezug auf numerische Rezepte benötigen wir zwei Dinge - das Verständnis, wie Algorithmen in die Programmierimplementierung umgesetzt werden, und zweitens eine Referenzimplementierung, die Dinge bucht.

Es scheint KEINE Kombination von BOOK + Reference Software zu geben. Es gibt jedoch einige gute Referenzsoftware, von denen einige auf Arbeiten verweisen, die auf solchen Algorithmen basieren.

Hier ist eine Liste einiger Referenzbibliotheken (meist Open Source), die hilfreich sein könnten:

  1. GNU Scientific Library
  2. LAPACK hat ein gutes Buch als Benutzerhandbuch. Es gibt auch LAPACK ++ und andere (TNT) abgeleitete / verwandte Pakete. Sehen Sie diese für weitere Informationen.
  3. Lineare Algebra steigern
  4. Gürteltier
  5. BLAS

Andere spezifische Dinge sind

  1. Apophenie für statistische Modelle
  2. Fohlen
  3. FFTW
  4. Das R-Paket - und ein Buch
  5. OpenCV
  6. Intel Math Kernel Library
  7. Zur Mustererkennung

Sie können auch " Datenanalyse mit Open Source Tools " auschecken .

Hier ist eine riesige Vergleichsliste, obwohl ich nicht alles verifiziert habe.
http://www.netlib.org/utk/people/JackDongarra/la-sw.html


4

Numerical Recipes ist nach wie vor ein nützliches Buch, IMO. Es beschreibt die Algorithmen sehr gut, einschließlich ihrer Herleitung, der Situationen, in denen sie nützlich sind, und Alternativen, die in Betracht gezogen werden sollten, wenn dies nicht der Fall ist. Ich benutze das Buch seit Jahren.

Eine Sache, die ich nie benutzt habe, ist ihr Code. Ich schreibe immer meine eigene Implementierung basierend auf den beschriebenen Algorithmen. In dieser Hinsicht spielt die Qualität ihres Codes keine Rolle (und es ist in der Tat fraglich: Im C-Buch der 2. Auflage definieren sie eine Sammlung von Funktionen und Makros, um Arrays nach Einheiten zu indizieren, da die Autoren einen Fortran-Hintergrund haben). Als Beispiel: Ich musste einmal FFT in Objective-C implementieren, also benutzte ich NR in Fortran, um zu verstehen, was FFT tat und wie der Code aussehen sollte.

Stellen Sie sich NR genauso vor wie Knuth: Sie würden niemals Code aus diesem Buch in Ihr Projekt einfügen.


3

Persönlich mag ich es, es geht um das Niveau, das ich verstehen kann

Der Code ist Fortran übersetzt in 'C', aber das ist in Ordnung. Sie können ihn einfach zurück in Fortran und dann selbst in C ++ übersetzen! Die Fortran- oder C-Versionen haben den Vorteil, dass der Code so gut wie eigenständig ist und Sie nicht eine Reihe von C ++ - Klassen hineinziehen müssen, um Matrizen, Komplexe usw. zu erstellen - insbesondere angesichts der Qualität ihrer Codierung!

Es gibt einen berechtigten Einwand gegen die lächerlichen Urheberrechtsansprüche der Autoren, und ich kenne eine Reihe von Dozenten, die NR in ihren Klassen verbieten. Unter Zahlenexperten gelten die Bücher auch als "genug Informationen, um Sie in Schwierigkeiten zu bringen". Der einzige Vorschlag ist jedoch, den persönlichen Code zu verwenden oder NAG zu kaufen.

Eine empfohlene Sammlung alternativer hochwertiger numerischer Bibliotheken finden Sie unter http://www.netlib.org/

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.