Nümerik Tariflerin modern alternatifleri nelerdir? [kapalı]


21

Geçmişte, Nümerik Tarifler kitabı nümerik algoritmalar için altın standart referans olarak kabul edildi. En eski Fortran Sürümü'nü C ve C ++ ve diğerlerinde basımlar izleyerek daha da güncel hale getirdi. Bunlar sayesinde, günün en gelişmiş algoritmaları için referans kodu sağladı.

Eski basımlar bugünlerde ücretsiz olarak çevrimiçi olarak sunulmaktadır .

Ne yazık ki, şu anda yalnızca tarihi bir buluş olarak faydalı olduğunu düşünüyorum. "Yazılım mühendisliği" uygulamaları bana modası geçmiş gibi görünüyor ve gerçek içerik literatüre ayak uyduramadı.

Modern programcının bunun yerine benzer şekilde kapsamlı ancak ulaşılabilir referanslara bakması gerekir mi?


7
Algoritmaların kendileri genel amaçlı problem çözme için çok iyidir. İstenilen bir şeyi bırakabilecek uygulamalarıdır. Ama bu sorun değil çünkü kitaptaki kod zevkinize göre değişecek kadar basit. Bölümlerdeki uygulamalar oldukça "kendi kendine yeten" dır ve zahmetsizdir. Sayısal tarifler, bazı temel sayısal şeyleri uygulamanız gerektiğine ancak çok büyük karmaşık veya pahalı bir kütüphane veya çerçeveye ihtiyaç duymadığınız / ihtiyaç duymadığınız zamanlar için iyi bir referanstır.
Angelo

3
Olduğu gibi, bu soru rahatsız edici olarak kabul edilebilir, kesinlikle çok yapıcı değil. Kariyerim boyunca Nümerik Tarifler kullandım ve karmaşık problemleri çözmek için algoritmalar için hazır bir referans isteyen herkese tavsiye ederim. Kodu asla doğrudan kullanmadım, ancak algoritmaları kendi dillerimde kendi tercih ettiğim arayüzleri kullanarak her zaman uyguladım. Gördüğünüz sorunlar yüzeyseldir ve eğer bakmaya özen gösterirseniz genellikle daha iyi algoritmalar olacaktır, ancak o zaman bile NR sizi doğru yöne işaret etmek için kullanışlıdır.
Mark Booth

5
Kitaplarda verilen C ve C ++ kodunun, iyi bir Fortran programcısının herhangi bir dilde iyi bir Fortran kodu yazabileceğini bir kez daha kanıtladığını kabul etmek zorundayım. Ancak bu kitaplar hala harika bir referans. Algoritmaların açıklamaları çok açık. Kod kutunun dışında kullanılabilir ve eğer hassasiyetlerinize gerçekten zarar veriyorsa, her zaman kendiniz yeniden yazabilirsiniz. Sıfırdan uygulamaktan çok daha kolay olurdu.
Dima,

12
NR kodundaki telif hakkı kısıtlamalarının oldukça ejderhası olduğunu unutmayın. Yalnızca en fazla on rutin kod yazmanız için izin verilir ve sonuçta ortaya çıkan programı başka herhangi bir kişiye veya bilgisayara dağıtamazsınız. Neredeyse tüm çalışma ortamlarında bu, algoritmayı yine de yeniden uygulamanız gerektiği anlamına gelir; bu nedenle, karmaşık bir OO veya işlevsel uygulama sağlayan yazarların yararı ne olur? Kitap tarafından verilen hizmet, güçlü bir matematik kütüphanesi değil, önemli algoritmaların açık bir açıklamasıdır.
Charles E. Grant

3
Kodun neye benzediği kimin umurunda? Güzelce sarın ve asla bakmayın.
David Heffernan

Yanıtlar:


7

Nümerik Tarifler açısından, iki şeye ihtiyacımız var - algoritmaların programlama uygulamasına nasıl dönüştüğü ve ikincisi, şeyleri kitaplayan bir referans uygulaması.

KİTAP + Referans yazılımının NO kombinasyonu gibi görünüyor . Bununla birlikte, bazı iyi referans yazılımları vardır ve bunlardan bazıları bu tür bir algoritma temelinde makalelere referans sağlar.

İşte yardımcı olabilecek bazı referanslar (çoğunlukla açık kaynak) kütüphanelerinin listesi:

  1. GNU Bilimsel Kütüphanesi
  2. LAPACK iyi sahip kitap bir şekilde manuel kullanıcı Orada da LAPACK ++ ve diğer (TNT) türetilmiş / ilgili paketler. Bkz bu fazla bilgi için.
  3. Doğrusal Cebiri Yükseltme
  4. Armadillo
  5. BLAS

Diğer özel şeyler

  1. İstatistiksel modeller için apofenia
  2. tay
  3. FFTW
  4. R paketi - ve bir kitap
  5. OpenCV
  6. Intel Math çekirdek Kütüphanesi
  7. İçin örüntü tanıma

Ayrıca " Açık Kaynak Araçları ile Veri Analizi " ni de inceleyebilirsiniz.

Her şeyi doğrulamamıştım ama karşılaştırmanın büyük bir listesi.
http://www.netlib.org/utk/people/JackDongarra/la-sw.html


4

Nümerik Tarifler hala, IMO, yararlı bir kitap. Algoritma işlemlerini türetme, faydalı oldukları durumlar ve olmadıklarında dikkate alınacak alternatifler dahil olmak üzere gerçekten iyi tanımlar. Kitabı yıllardır kullanıyorum.

Hiç kullanmadığım tek şey kodları. Her zaman kendi uygulamalarını, tanımladıkları algoritmaları temel alarak yazıyorum. Bu bakımdan kodlarının kalitesi önemli değildir (ve gerçekten sorgulanabilir: 2. C kitabında, yazarlar bir Fortran geçmişinden geldiği için dizileri birim indeksli yapmak için bir işlevler ve makrolar koleksiyonu tanımlarlar). Örnek olarak: Bir zamanlar FFT'yi Objective-C'de uygulamak zorunda kaldım, bu yüzden FFT'nin ne yaptığını ve kodun nasıl görünmesi gerektiğini anlamak için Fortran'da NR kullandım.

NR'yi, Knuth'u düşündüğünüz gibi düşünün: Bu kitaptan hiçbir zaman kodunuzu projenize yapıştırmazsınız.


3

Şahsen hoşuma gitti, anlayabildiğim seviyeyle ilgili.

Kod Fortran 'C' ye çevrilmiş ancak sorun değil, Fortran'a ve sonra C ++ 'a kendiniz tercüme edebilirsiniz. Fortran veya C versiyonlarına göre, kodun hemen hemen kendi içinde yer almasının avantajları vardır, matrisler, karmaşık vb. İşlemler yapmak için bir sürü C ++ sınıfına sürüklemeniz gerekmez - özellikle kodlamalarının kalitesi!

Yazarların gülünç telif hakkı iddialarına haklı bir itiraz var ve NR'yi sınıflarında yasaklayan çok sayıda konuşmacı biliyorum. Sayısal uzmanlar arasında, kitaplar aynı zamanda "sizi başını belaya sokacak kadar bilgi" olarak da bilinir. Ancak, tek önerileri genellikle kişisel kodlarını kullanmak veya NAG satın almak.

Alternatif yüksek kaliteli sayısal lib'ler için önerilen bir koleksiyon http://www.netlib.org/ adresindedir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.