Quelles alternatives modernes aux recettes numériques existent? [fermé]

21

Dans le passé, le livre sur les recettes numériques était considéré comme la référence de référence pour les algorithmes numériques. La première édition de Fortran a été suivie par des éditions en C et C ++ et autres, la rendant alors plus à jour. Grâce à ceux-ci, il a fourni le code de référence pour les algorithmes de pointe de la journée.

Les éditions plus anciennes sont disponibles en ligne gratuitement de nos jours.

Malheureusement, je pense qu'il n'est désormais plus utile que comme ouvrage historique. Les pratiques de "génie logiciel" me semblent obsolètes et le contenu réel n'a pas suivi le rythme de la littérature.

Quelles sont les références aussi complètes mais accessibles que le programmeur moderne devrait plutôt considérer?

Stewart
la source
7
Les algorithmes eux-mêmes sont très bons pour la résolution de problèmes à usage général. Ce sont leurs implémentations qui pourraient laisser à désirer. Mais c'est OK parce que le code dans le livre est assez simple pour être modifié selon vos goûts. Les implémentations dans les chapitres sont assez "autonomes" et sans corruption. Les recettes numériques sont toujours une bonne référence pour les moments où vous avez besoin d'implémenter des trucs numériques de base mais que vous ne voulez pas / n'avez pas besoin d'une bibliothèque ou d'un framework énorme ou complexe.
Angelo
3
Dans l'état actuel des choses, cette question pourrait être considérée comme offensante, ce n'est certainement pas très constructif. J'ai utilisé des recettes numériques tout au long de ma carrière et je le recommande vivement à tous ceux qui ont besoin d'une référence prête pour les algorithmes pour résoudre des problèmes complexes. Je n'ai jamais utilisé le code directement, mais j'ai toujours implémenté les algorithmes dans mes propres langues en utilisant mes propres interfaces préférées. Les problèmes que vous semblez voir sont superficiels, et il y aura généralement de meilleurs algorithmes si vous voulez regarder, mais même dans ce cas, NR est utile pour vous orienter dans la bonne direction.
Mark Booth
5
Je dois convenir que le code C et C ++ fourni dans les livres prouve une fois de plus qu'un bon programmeur Fortran peut écrire du bon code Fortran dans n'importe quel langage. Cependant, ces livres sont toujours une excellente référence. Les explications des algorithmes sont très claires. Le code est utilisable hors de la boîte, et s'il offense vraiment vos sensibilités, vous pouvez toujours le réécrire vous-même. Il serait encore beaucoup plus facile que de l'implémenter à partir de zéro.
Dima
12
N'oubliez pas que les restrictions de copyright sur le code dans NR sont assez draconiennes. Vous êtes uniquement autorisé à saisir personnellement le code pour un maximum de dix routines, et vous n'êtes PAS autorisé à distribuer le programme résultant à toute autre personne ou ordinateur. Dans presque tous les environnements de travail, cela signifie que vous devrez de toute façon réimplémenter l'algorithme, alors quel serait l'avantage pour les auteurs de fournir une OO sophistiquée ou une implémentation fonctionnelle? Le service fourni par le livre est une explication claire des algorithmes importants, pas la fourniture d'une bibliothèque mathématique solide.
Charles E. Grant,
3
Peu importe à quoi ressemble le code? Enveloppez-le bien et ne le regardez jamais.
David Heffernan

Réponses:

7

En termes de recettes numériques, nous avons besoin de deux choses - la compréhension de la façon dont les algorithmes se traduisent en implémentation de programmation et deuxièmement, une implémentation de référence qui enregistre les choses.

Il ne semble PAS y avoir de combinaison de logiciel BOOK + Reference. Cependant, il existe de bons logiciels de référence et certains d'entre eux font référence à des articles sur la base de tels algorithmes.

Voici une liste de bibliothèques de référence (principalement open source) qui pourraient vous aider:

  1. Bibliothèque scientifique GNU
  2. LAPACK il a un bon livre comme manuel d'utilisation Il y a aussi LAPACK ++ et d' autres packages dérivés / liés (TNT) . Voir ceci pour plus d'informations.
  3. Boost Algèbre linéaire
  4. Tatou
  5. BLAS

D'autres choses spécifiques sont

  1. Apophénie pour les modèles statistiques
  2. Poulain
  3. FFTW
  4. Le package R - et un livre
  5. OpenCV
  6. Intel Math kernel Library
  7. Pour la reconnaissance des formes

Vous pouvez également consulter " Analyse des données avec des outils Open Source ".

Voici une énorme liste de comparaison, même si je n'ai pas tout vérifié.
http://www.netlib.org/utk/people/JackDongarra/la-sw.html

Dipan Mehta
la source
4

Recettes numériques est toujours, l'OMI, un livre utile. Il décrit très bien les algorithmes, y compris leur dérivation, les situations dans lesquelles ils sont utiles et les alternatives à considérer lorsqu'ils ne le sont pas. J'utilise le livre depuis des années.

Une chose que je n'ai jamais utilisée est leur code. J'écris toujours ma propre implémentation basée sur les algorithmes qu'ils décrivent. À cet égard, la qualité de leur code n'a pas d'importance (et il est en effet discutable: dans le livre C de 2e édition, ils définissent une collection de fonctions et de macros pour faire des tableaux indexés unitaire parce que les auteurs sont issus de Fortran). À titre d'exemple: j'ai dû implémenter FFT dans Objective-C, j'ai donc utilisé NR dans Fortran pour comprendre ce que FFT faisait et à quoi devrait ressembler le code.

Pensez à NR de la même manière que vous pensez à Knuth: vous ne colleriez jamais le code de ce livre dans votre projet.


la source
3

Personnellement j'aime ça, c'est à peu près le niveau que je peux comprendre

Le code est Fortran traduit en «C» mais c'est OK, vous pouvez simplement le traduire de nouveau en Fortran puis en C ++ vous-même! Il y a des avantages aux versions Fortran ou C dans la mesure où le code est à peu près autonome, vous n'avez pas à faire glisser un tas de classes C ++ pour faire des matrices, complexes, etc. - surtout compte tenu de la qualité de leur codage!

Il y a une objection justifiable aux réclamations ridicules de copyright par les auteurs et je connais un certain nombre de conférenciers qui interdisent NR dans leurs classes. Parmi les experts numériques, les livres ont également la réputation d'être "suffisamment d'informations pour vous causer des ennuis". Mais leur seule suggestion est généralement d'utiliser leur code personnel ou d'acheter NAG.

Une collection suggérée de bibliothèques numériques alternatives de haute qualité est disponible sur http://www.netlib.org/

Martin Beckett
la source