Apa alternatif modern dari Resep Numerik yang ada? [Tutup]

21

Di masa lalu, buku Resep Numerik dianggap sebagai referensi standar emas untuk algoritma numerik. Edisi Fortran yang paling awal diikuti oleh edisi-edisi dalam bahasa C dan C ++ dan lainnya, menjadikannya lebih mutakhir. Melalui ini, itu menyediakan kode referensi untuk algoritma canggih hari ini.

Edisi yang lebih lama tersedia online secara gratis saat ini.

Sayangnya, saya pikir sekarang sebagian besar berguna hanya sebagai buku tebal bersejarah. Praktik "rekayasa perangkat lunak" menurut saya sudah ketinggalan zaman, dan konten yang sebenarnya belum sejalan dengan literatur.

Referensi apa yang sama komprehensif namun mudah didekati yang seharusnya dilihat oleh programmer modern?

Stewart
sumber
7
Algoritme itu sendiri sangat baik untuk pemecahan masalah untuk tujuan umum. Adalah implementasi mereka yang mungkin meninggalkan sesuatu yang diinginkan. Tapi itu tidak apa-apa karena kode dalam buku ini cukup sederhana untuk dimodifikasi sesuai selera Anda. Implementasi dalam bab-bab ini cukup "mandiri" dan bebas dari kesalahan. Resep numerik masih merupakan referensi yang baik untuk saat-saat ketika Anda perlu mengimplementasikan beberapa hal numerik dasar tetapi tidak ingin / membutuhkan perpustakaan atau kerangka kerja yang rumit atau mahal.
Angelo
3
Seperti berdiri, pertanyaan ini bisa dianggap ofensif, itu tentu tidak terlalu konstruktif. Saya telah menggunakan Numerical Recipes sepanjang karir saya dan akan sangat merekomendasikannya kepada siapa pun yang membutuhkan referensi siap pakai untuk algoritma untuk menyelesaikan masalah yang kompleks. Saya tidak pernah menggunakan kode secara langsung, tetapi saya selalu menerapkan algoritma dalam bahasa saya sendiri menggunakan antarmuka pilihan saya sendiri. Masalah yang tampaknya Anda lihat adalah dangkal, dan biasanya akan ada algoritma yang lebih baik di luar sana jika Anda ingin melihatnya, tetapi meskipun demikian NR berguna untuk mengarahkan Anda ke arah yang benar.
Mark Booth
5
Saya harus setuju bahwa kode C dan C ++ yang disediakan dalam buku membuktikan sekali lagi bahwa programmer Fortran yang baik dapat menulis kode Fortran yang baik dalam bahasa apa pun. Namun, buku-buku ini masih merupakan referensi yang bagus. Penjelasan algoritma sangat jelas. Kode dapat digunakan di luar kotak, dan jika itu benar-benar menyinggung perasaan Anda, Anda selalu dapat menulis ulang sendiri. Masih akan jauh lebih mudah daripada mengimplementasikannya dari awal.
Dima
12
Ingat bahwa pembatasan hak cipta pada kode dalam NR cukup kejam. Anda hanya diperbolehkan untuk secara pribadi memasukkan kode hingga sepuluh rutinitas, dan Anda TIDAK diizinkan untuk mendistribusikan program yang dihasilkan ke orang lain atau komputer. Di hampir semua lingkungan kerja ini berarti Anda harus menerapkan kembali algoritme, jadi apa manfaat dari penulis yang menyediakan OO yang canggih atau implementasi fungsional? Layanan yang disediakan oleh buku ini adalah penjelasan yang jelas tentang algoritma penting, bukan penyediaan perpustakaan matematika yang kuat.
Charles E. Grant
3
Siapa yang peduli seperti apa kode itu? Bungkus dengan baik dan jangan pernah melihatnya.
David Heffernan

Jawaban:

7

Dalam hal Numerical Recipes, kita membutuhkan dua hal - pemahaman tentang bagaimana algoritma menerjemahkan ke dalam implementasi pemrograman dan kedua, implementasi referensi yang mencatat sesuatu.

Tampaknya TIDAK ada kombinasi perangkat lunak BUKU + Referensi. Namun, ada beberapa perangkat lunak referensi yang baik dan beberapa di antaranya menyediakan referensi untuk makalah berdasarkan algoritma tersebut.

Berikut adalah daftar beberapa pustaka referensi (kebanyakan sumber terbuka) yang mungkin membantu:

  1. Perpustakaan Ilmiah GNU
  2. LAPACK memiliki baik buku sebagai petunjuk Ada juga LAPACK ++ dan lainnya (TNT) berasal / paket terkait. Lihat ini untuk informasi lebih lanjut.
  3. Tingkatkan Aljabar Linier
  4. Armadillo
  5. BLAS

Hal spesifik lainnya adalah

  1. Apophenia untuk model statistik
  2. Kuda jantan muda
  3. FFTW
  4. Paket R - dan sebuah buku
  5. OpenCV
  6. Perpustakaan Intel Math kernel
  7. Untuk pengenalan pola

Anda juga dapat melihat " Analisis Data dengan Alat Sumber Terbuka ".

Berikut adalah daftar perbandingan yang sangat besar walaupun saya belum memverifikasi semuanya.
http://www.netlib.org/utk/people/JackDongarra/la-sw.html

Dipan Mehta
sumber
4

Numerical Recipes masih, IMO, buku yang bermanfaat. Ini menjelaskan algoritma dengan sangat baik, termasuk derivasi mereka, situasi di mana mereka berguna, dan alternatif untuk dipertimbangkan ketika mereka tidak. Saya telah menggunakan buku itu selama bertahun-tahun.

Satu hal yang belum pernah saya gunakan adalah kode mereka. Saya selalu menulis implementasi saya sendiri berdasarkan algoritma yang mereka gambarkan. Dalam hal kualitas kode mereka tidak masalah (dan memang dipertanyakan: dalam buku edisi C kedua, mereka mendefinisikan kumpulan fungsi dan makro untuk membuat array unit-diindeks karena penulis berasal dari latar belakang Fortran). Sebagai contoh: Saya pernah harus mengimplementasikan FFT di Objective-C, jadi saya menggunakan NR di Fortran untuk memahami apa yang dilakukan FFT dan bagaimana kode harus terlihat.

Pikirkan NR seperti halnya Anda memikirkan Knuth: Anda tidak akan pernah menempelkan kode dari buku itu ke proyek Anda.


sumber
3

Secara pribadi saya menyukainya, ini tentang level yang bisa saya mengerti

Kode ini diterjemahkan Fortran ke 'C' tapi tidak apa-apa Anda bisa menerjemahkannya kembali ke Fortran dan kemudian ke C ++ sendiri! Ada beberapa keuntungan dari versi Fortran atau C karena kodenya cukup lengkap, Anda tidak perlu menyeret banyak kelas C ++ untuk melakukan matriks, kompleks, dll - terutama mengingat kualitas pengkodean mereka!

Ada keberatan yang dapat dibenarkan atas klaim hak cipta yang menggelikan oleh penulis dan saya tahu sejumlah dosen yang melarang NR di kelas mereka. Di antara para pakar numerik, buku-buku itu juga memiliki reputasi sebagai "informasi yang cukup untuk membuat Anda mendapat masalah". Tetapi satu-satunya saran mereka umumnya menggunakan kode pribadi mereka atau membeli NAG.

Koleksi lib numerik alternatif berkualitas tinggi yang disarankan ada di http://www.netlib.org/

Martin Beckett
sumber