Những sự thay thế hiện đại cho Bí quyết Số tồn tại? [đóng cửa]


21

Trong quá khứ, cuốn sách Bí quyết số được coi là tài liệu tham khảo tiêu chuẩn vàng cho các thuật toán số. Phiên bản Fortran sớm nhất được theo sau bởi các phiên bản trong C và C ++ và các phiên bản khác, mang đến cho nó sau đó cập nhật hơn. Thông qua đó, nó cung cấp mã tham chiếu cho các thuật toán tiên tiến nhất trong ngày.

Phiên bản cũ hơn có sẵn trực tuyến miễn phí ngày nay.

Thật không may, tôi nghĩ rằng nó bây giờ chủ yếu chỉ hữu ích như một cuốn sách lịch sử. Các thực hành "công nghệ phần mềm" dường như đã lỗi thời và nội dung thực tế không theo kịp với tài liệu.

Thay vào đó, các lập trình viên hiện đại nên xem xét những gì tương tự toàn diện nhưng có thể tiếp cận?


7
Các thuật toán tự nó rất tốt cho việc giải quyết vấn đề mục đích chung. Đó là việc thực hiện của họ có thể để lại một cái gì đó được mong muốn. Nhưng điều đó là ổn vì mã trong cuốn sách đủ đơn giản để sửa đổi theo bất cứ sở thích nào của bạn. Việc triển khai trong các chương khá "khép kín" và không bị gián đoạn. Công thức nấu ăn số vẫn là một tài liệu tham khảo tốt cho những lúc bạn cần triển khai một số công cụ số cơ bản nhưng không muốn / cần một thư viện hoặc khung công tác phức tạp hoặc đắt tiền.
Angelo

3
Vì thế, câu hỏi này có thể bị coi là xúc phạm, nó chắc chắn không mang tính xây dựng. Tôi đã sử dụng Công thức toán số trong suốt sự nghiệp của mình và rất muốn giới thiệu nó cho bất kỳ ai cần một tài liệu tham khảo sẵn sàng cho các thuật toán để giải quyết các vấn đề phức tạp. Tôi chưa bao giờ sử dụng mã trực tiếp, nhưng tôi luôn thực hiện các thuật toán bằng ngôn ngữ của mình bằng các giao diện ưa thích của riêng tôi. Các vấn đề bạn thấy có vẻ hời hợt và thường sẽ có các thuật toán tốt hơn nếu bạn quan tâm, nhưng ngay cả khi đó NR cũng hữu ích để chỉ cho bạn đi đúng hướng.
Đánh dấu gian hàng

5
Tôi phải đồng ý rằng mã C và C ++ được cung cấp trong sách chứng minh một lần nữa rằng một lập trình viên Fortran giỏi có thể viết mã Fortran tốt bằng bất kỳ ngôn ngữ nào. Tuy nhiên, những cuốn sách này vẫn là một tài liệu tham khảo tuyệt vời. Các giải thích của các thuật toán là rất rõ ràng. Mã có thể sử dụng được ngoài hộp và nếu nó thực sự xúc phạm sự nhạy cảm của bạn, bạn luôn có thể tự viết lại. Nó vẫn sẽ dễ dàng hơn nhiều so với thực hiện nó từ đầu.
Dima

12
Hãy nhớ rằng các hạn chế bản quyền đối với mã trong NR khá hà khắc. Bạn chỉ được phép nhập mã cá nhân vào tối đa mười thói quen và bạn KHÔNG được phép phân phối chương trình kết quả cho bất kỳ người nào khác hoặc máy tính. Trong hầu hết mọi môi trường làm việc, điều này có nghĩa là bạn sẽ phải thực hiện lại thuật toán, vì vậy lợi ích của các tác giả cung cấp một OO tinh vi hoặc thực hiện chức năng là gì? Dịch vụ được cung cấp bởi cuốn sách là một lời giải thích rõ ràng về các thuật toán quan trọng, không phải là việc cung cấp một thư viện toán học mạnh.
Charles E. Grant

3
Ai quan tâm mã là như thế nào? Gói nó độc đáo và không bao giờ nhìn vào nó.
David Heffernan

Câu trả lời:


7

Về mặt Công thức số, chúng ta cần hai điều - sự hiểu biết về cách các thuật toán chuyển thành triển khai lập trình và thứ hai, một triển khai tham chiếu ghi lại mọi thứ.

Dường như KHÔNG có sự kết hợp giữa BOOK + phần mềm tham khảo. Tuy nhiên, có một số phần mềm tham chiếu tốt và một số phần mềm này cung cấp tài liệu tham khảo cho các bài viết trên cơ sở các thuật toán như vậy.

Dưới đây là danh sách một số thư viện tham khảo (chủ yếu là nguồn mở) có thể giúp:

  1. Thư viện khoa học GNU
  2. LAPACK nó có một cuốn sách hay như một hướng dẫn sử dụng Ngoài ra còn có LAPACK ++các gói có nguồn gốc / liên quan (TNT) khác . Xem cái này để biết thêm thông tin.
  3. Tăng đại số tuyến tính
  4. Armadillo
  5. BLAS

Những thứ cụ thể khác là

  1. Giảm bạch cầu cho các mô hình thống kê
  2. Colt
  3. FFTW
  4. Gói R - và một cuốn sách
  5. OpenCV
  6. Thư viện nhân Intel Math
  7. Để nhận dạng mẫu

Bạn cũng có thể xem " Phân tích dữ liệu với các công cụ nguồn mở ".

Đây là một danh sách so sánh lớn mặc dù tôi chưa xác minh mọi thứ.
http://www.netlib.org/utk/people/JackDongarra/la-sw.html


4

Bí quyết số vẫn là, IMO, một cuốn sách hữu ích. Nó mô tả các thuật toán thực sự tốt, bao gồm cả việc tạo ra chúng, các tình huống mà chúng hữu ích và các giải pháp thay thế để xem xét khi chúng không. Tôi đã sử dụng cuốn sách trong nhiều năm.

Một điều tôi chưa bao giờ sử dụng là mã của họ. Tôi luôn viết cách thực hiện của riêng mình dựa trên các thuật toán mà chúng mô tả. Về mặt chất lượng mã của họ không thành vấn đề (và thực sự có vấn đề: trong cuốn sách C phiên bản 2, họ định nghĩa một tập hợp các hàm và macro để tạo ra các mảng được lập chỉ mục đơn vị vì các tác giả đến từ nền Fortran). Ví dụ: Tôi đã từng phải triển khai FFT trong Objective-C, vì vậy tôi đã sử dụng NR ở Fortran để hiểu FFT đã làm gì và mã sẽ trông như thế nào.

Hãy nghĩ về NR giống như cách bạn nghĩ về Knuth: bạn sẽ không bao giờ dán mã từ cuốn sách đó vào dự án của mình.


3

Cá nhân tôi thích nó, đó là về mức độ tôi có thể hiểu

Mã được Fortran dịch sang 'C' nhưng không sao, bạn chỉ cần dịch lại thành Fortran và sau đó sang C ++! Có những ưu điểm đối với các phiên bản Fortran hoặc C ở chỗ mã được chứa khá nhiều, bạn không cần phải kéo vào một loạt các lớp C ++ để làm ma trận, phức tạp, v.v. - đặc biệt là với chất lượng mã hóa của chúng!

Có một sự phản đối chính đáng đối với các khiếu nại bản quyền lố bịch của các tác giả và tôi biết một số giảng viên cấm NR trong các lớp học của họ. Trong số các chuyên gia về số, các cuốn sách cũng có tiếng là "đủ thông tin để khiến bạn gặp rắc rối". Nhưng đề nghị duy nhất của họ thường là sử dụng mã cá nhân của họ hoặc mua NAG.

Một bộ sưu tập được đề xuất của libs số chất lượng cao thay thế có tại http://www.netlib.org/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.