Jakie istnieją współczesne alternatywy dla przepisów numerycznych? [Zamknięte]

21

W przeszłości książka z przepisami numerycznymi była uważana za złoty standard odniesienia dla algorytmów numerycznych. Po najwcześniejszej edycji Fortran pojawiły się wersje w C i C ++ i innych, dzięki czemu była ona bardziej aktualna. Dzięki nim dostarczył kod referencyjny dla najnowocześniejszych algorytmów dnia.

Starsze wersje są obecnie dostępne online za darmo .

Niestety, myślę, że teraz jest on głównie użyteczny tylko jako historyczny tom. Wydaje mi się, że praktyki „inżynierii oprogramowania” są przestarzałe, a rzeczywista treść nie dotrzymuje kroku literaturze.

Na jakie kompleksowe, ale przystępne referencje powinien spojrzeć zamiast tego nowoczesny programista?

Stewart
źródło
7
Same algorytmy są bardzo dobre do rozwiązywania problemów ogólnego przeznaczenia. To ich implementacje mogą pozostawić coś do życzenia. Ale to jest OK, ponieważ kod w książce jest na tyle prosty, że można go modyfikować według własnych upodobań. Implementacje w rozdziałach są „samowystarczalne” i wolne od cruft. Receptury numeryczne są nadal dobrym odniesieniem w czasach, gdy trzeba wdrożyć podstawowe rzeczy liczbowe, ale nie chce / nie potrzebuje ogromnej złożonej lub drogiej biblioteki lub frameworka.
Angelo
3
W tej chwili pytanie to można uznać za obraźliwe, z pewnością nie jest ono zbyt konstruktywne. Przez całą moją karierę korzystałem z przepisów numerycznych i gorąco polecam je każdemu, kto potrzebuje gotowych informacji na temat algorytmów rozwiązywania złożonych problemów. Nigdy nie korzystałem bezpośrednio z kodu, ale zawsze implementowałem algorytmy we własnych językach, używając własnych preferowanych interfejsów. Problemy, które wydają się być widoczne, są powierzchowne i zwykle będą lepsze algorytmy, jeśli zależy ci na spojrzeniu, ale nawet wtedy NR jest przydatne, aby wskazać ci właściwy kierunek.
Mark Booth
5
Muszę się zgodzić, że kod C i C ++ podany w książkach po raz kolejny udowadnia, że ​​dobry programista z Fortranu potrafi pisać dobry kod z Fortranu w dowolnym języku. Te książki są jednak nadal świetnym odniesieniem. Wyjaśnienia algorytmów są bardzo jasne. Kod nadaje się do użycia po wyjęciu z pudełka, a jeśli naprawdę obraża twoją wrażliwość, zawsze możesz go napisać od nowa. Nadal byłoby to znacznie łatwiejsze niż wdrożenie go od zera.
Dima
12
Pamiętaj, że ograniczenia praw autorskich do kodu w NR są dość drakońskie. Możesz osobiście wprowadzić kod tylko dla dziesięciu procedur i NIE wolno rozpowszechniać wynikowego programu żadnej innej osobie ani komputerowi. W prawie każdym środowisku pracy oznacza to, że i tak będziesz musiał ponownie wdrożyć algorytm, więc jaka byłaby korzyść dla autorów oferujących zaawansowane OO lub funkcjonalne wdrożenie? Usługa świadczona przez książkę jest jasnym wyjaśnieniem ważnych algorytmów, a nie silną biblioteką matematyczną.
Charles E. Grant
3
Kogo obchodzi, jaki jest kod? Ładnie go zamknij i nigdy nie patrz na to.
David Heffernan,

Odpowiedzi:

7

Jeśli chodzi o przepisy numeryczne, potrzebujemy dwóch rzeczy - zrozumienia, w jaki sposób algorytmy przekładają się na implementację programowania, a po drugie, referencyjnej implementacji, która rejestruje różne rzeczy.

Wydaje się, że NIE ma kombinacji oprogramowania BOOK + Reference. Istnieje jednak kilka dobrych programów referencyjnych, a niektóre z nich zawierają odniesienia do artykułów na podstawie takich algorytmów.

Oto lista niektórych bibliotek referencyjnych (głównie open source), które mogą pomóc:

  1. Biblioteka naukowa GNU
  2. LAPACK ma dobrą książkę jako podręcznik użytkownika Istnieje również LAPACK ++ i inne ( pochodne / TNT) pakiety powiązane. Zobacz to, aby uzyskać więcej informacji.
  3. Zwiększ algebrę liniową
  4. Pancernik
  5. BLAS

Inne konkretne rzeczy to

  1. Apofenia dla modeli statystycznych
  2. Źrebię
  3. FFTW
  4. Pakiet R - i książka
  5. OpenCV
  6. Biblioteka jądra Intel Math
  7. Do rozpoznawania wzorów

Możesz także sprawdzić „ Analiza danych za pomocą narzędzi Open Source ”.

Oto ogromna lista porównań, chociaż nie wszystko zweryfikowałem.
http://www.netlib.org/utk/people/JackDongarra/la-sw.html

Dipan Mehta
źródło
4

Przepisy numeryczne to nadal, IMO, przydatna książka. Bardzo dobrze opisuje algorytmy, w tym ich wyprowadzanie, sytuacje, w których są przydatne, oraz alternatywy do rozważenia, gdy nie są. Korzystam z książki od lat.

Jedną rzeczą, której nigdy nie użyłem, jest ich kod. Zawsze piszę własną implementację na podstawie opisywanych algorytmów. Pod tym względem jakość ich kodu nie ma znaczenia (i jest to rzeczywiście wątpliwe: w drugiej edycji książki C definiują one zbiór funkcji i makr, aby tablice indeksowane jednostkowo, ponieważ autorzy pochodzą z tła Fortrana). Jako przykład: kiedyś musiałem zaimplementować FFT w Objective-C, więc użyłem NR w Fortranie, aby zrozumieć, co FFT zrobiło i jak powinien wyglądać kod.

Pomyśl o NR tak samo, jak myślisz o Knuth: nigdy nie wkleisz kodu z tej książki do swojego projektu.


źródło
3

Osobiście to lubię, chodzi o poziom, który mogę zrozumieć

Kod jest tłumaczony na Fortran na „C”, ale to w porządku, możesz po prostu przetłumaczyć go z powrotem na Fortran, a następnie na C ++ sam! Zalety wersji Fortran lub C polegają na tym, że kod jest samowystarczalny, nie trzeba przeciągać kilku klas C ++, aby wykonywać matryce, złożone itp. - zwłaszcza biorąc pod uwagę jakość ich kodowania!

Istnieje uzasadniony sprzeciw wobec niedorzecznych roszczeń autorskich autorów i znam wielu wykładowców, którzy zakazują NR na swoich zajęciach. Wśród ekspertów numerycznych książki mają reputację „wystarczającej ilości informacji, by wpędzić cię w kłopoty”. Ale ich jedyną sugestią jest na ogół użycie kodu osobistego lub zakup NAG.

Sugerowany zbiór alternatywnych bibliotek numerycznych wysokiej jakości znajduje się na stronie http://www.netlib.org/

Martin Beckett
źródło