Какие существуют современные альтернативы числовым рецептам? [закрыто]

21

В прошлом книга « Численные рецепты» считалась золотым стандартом для численных алгоритмов. За самым ранним изданием Fortran последовали выпуски на C и C ++ и другие, что сделало его более современным. Благодаря этому он предоставил справочный код для современных алгоритмов дня.

Старые выпуски доступны онлайн бесплатно в настоящее время.

К сожалению, я думаю, что теперь это в основном полезно только как исторический том. Практики «разработки программного обеспечения» кажутся мне устаревшими, и фактический контент не поспевает за литературой.

На какие же всеобъемлющие, но все же доступные ссылки следует взглянуть современному программисту?

Стюарт
источник
7
Сами алгоритмы очень хороши для решения общих задач. Именно их реализации могут оставить желать лучшего. Но это нормально, потому что код в книге достаточно прост, чтобы изменить его на любой вкус. Реализации в главах довольно «самодостаточны» и свободны от лишних деталей. Числовые рецепты по-прежнему являются хорошим справочным материалом для тех случаев, когда вам нужно реализовать некоторые базовые числовые вещи, но не хотите / не нуждаетесь в огромной сложной или дорогой библиотеке или фреймворке.
Анджело
3
В настоящее время этот вопрос можно считать оскорбительным, он, конечно, не очень конструктивный. Я использовал Numeric Recipes на протяжении всей своей карьеры и очень рекомендую его всем, кто нуждается в готовом справочнике по алгоритмам для решения сложных задач. Я никогда не использовал код напрямую, но я всегда реализовывал алгоритмы на своих языках, используя свои предпочтительные интерфейсы. Проблемы, которые вы, похоже, видите, поверхностны, и, как правило, там будут лучшие алгоритмы, если вы захотите посмотреть, но даже тогда NR будет полезно указать вам правильное направление.
Марк Бут
5
Я должен согласиться с тем, что код на C и C ++, представленный в книгах, еще раз доказывает, что хороший программист на Фортране может написать хороший код на Фортране на любом языке. Тем не менее, эти книги по-прежнему отличный справочник. Объяснения алгоритмов очень понятны. Код можно использовать «из коробки», и если он действительно оскорбляет ваши чувства, вы всегда можете переписать его самостоятельно. Это все равно будет гораздо проще, чем реализовать это с нуля.
Дима
12
Помните, что ограничения авторского права на код в NR довольно суровы. Вам разрешено лично вводить код только для десяти подпрограмм, и вам НЕ разрешается распространять полученную программу любому другому человеку или компьютеру. Практически в любой рабочей среде это означает, что вам все равно придется заново реализовывать алгоритм, так что же будет преимуществом авторов, предлагающих сложную ОО или функциональную реализацию? Сервис, предоставляемый книгой, является четким объяснением важных алгоритмов, а не предоставлением сильной математической библиотеки.
Чарльз Грант
3
Кого волнует, на что похож код? Заверните это красиво и никогда не смотрите на это.
Дэвид Хеффернан

Ответы:

7

С точки зрения Числовых Рецептов нам нужны две вещи - понимание того, как алгоритмы преобразуются в программную реализацию, и, во-вторых, эталонная реализация, которая записывает вещи.

Кажется, нет никакой комбинации BOOK + Reference software. Тем не менее, есть несколько хороших эталонных программ, и некоторые из них содержат ссылки на статьи на основе таких алгоритмов.

Вот список некоторых справочных (в основном с открытым исходным кодом) библиотек, которые могут помочь:

  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

Числовые Рецепты - все еще, IMO, полезная книга. Он очень хорошо описывает алгоритмы, включая их вывод, ситуации, в которых они полезны, и альтернативы, которые следует учитывать, когда их нет. Я использую книгу в течение многих лет.

Я никогда не использовал их код. Я всегда пишу свою собственную реализацию на основе алгоритмов, которые они описывают. В этом отношении качество их кода не имеет значения (и это действительно сомнительно: во 2-м издании книги C они определяют коллекцию функций и макросов, чтобы сделать массивы индексированными единично, поскольку авторы происходят из Фортрана). В качестве примера: мне когда-то приходилось реализовывать FFT в Objective-C, поэтому я использовал NR в Fortran, чтобы понять, что делает FFT и как должен выглядеть код.

Думайте о NR так же, как о Кнуте: вы никогда не вставите код из этой книги в свой проект.


источник
3

Лично мне это нравится, речь идет об уровне, который я могу понять

Код Fortran переведен на C, но ничего страшного, вы можете просто перевести его обратно на Fortran, а затем на C ++ самостоятельно! Преимущества версий Fortran или C в том, что код в значительной степени самодостаточен, вам не нужно тянуть кучу классов C ++ для создания матриц, сложных и т. Д., Особенно с учетом качества их кодирования!

Есть оправданные возражения против нелепых заявлений авторов об авторском праве, и я знаю ряд лекторов, которые запрещают NR в своих классах. Среди экспертов по численности книги также имеют репутацию «достаточно информации, чтобы доставить вам неприятности». Но их единственное предложение - использовать свой личный код или купить NAG.

Предлагаемая коллекция альтернативных высококачественных числовых библиотек находится по адресу http://www.netlib.org/

Мартин Беккет
источник