Tôi đã thu thập những điều sau đây từ nghiên cứu trực tuyến cho đến nay:
Tôi đã sử dụng Armadillo một chút và thấy giao diện đủ trực quan và thật dễ dàng để xác định các gói nhị phân cho Ubuntu (và tôi giả sử các bản phân phối Linux khác). Tôi đã không biên dịch nó từ nguồn, nhưng hy vọng của tôi là nó sẽ không quá khó. Nó đáp ứng hầu hết các tiêu chí thiết kế của tôi và sử dụng đại số tuyến tính dày đặc. Nó có thể gọi các thói quen LAPACK hoặc MKL. Nói chung không cần phải biên dịch Armadillo, đây là một thư viện hoàn toàn dựa trên mẫu: Bạn chỉ cần bao gồm tiêu đề và liên kết đến BLAS / LAPACK hoặc MKL, v.v.
Tôi đã nghe những điều tốt về Eigen , nhưng chưa sử dụng nó. Nó tuyên bố là nhanh , sử dụng templating và hỗ trợ đại số tuyến tính dày đặc. Nó không có LAPACK hoặc BLAS như một sự phụ thuộc, nhưng dường như có thể làm mọi thứ mà LAPACK có thể làm (cộng với một số điều LAPACK không thể). Rất nhiều dự án sử dụng Eigen, có triển vọng. Nó có một gói nhị phân cho Ubuntu, nhưng là một thư viện chỉ có tiêu đề, nó cũng không đáng để sử dụng ở nơi khác.
Các Matrix Template Library phiên bản 4 cũng sẽ hứa hẹn, và sử dụng khuôn mẫu. Nó hỗ trợ cả đại số tuyến tính dày đặc và thưa thớt, và có thể gọi UMFPACK là một bộ giải thưa thớt. Các tính năng có phần không rõ ràng từ trang web của họ. Nó có gói nhị phân cho Ubuntu, có thể tải xuống từ trang web của họ.
PETSc , được viết bởi một nhóm tại Phòng thí nghiệm quốc gia Argonne, có quyền truy cập vào các bộ giải tuyến tính thưa thớt và dày đặc, vì vậy tôi cho rằng nó có thể hoạt động như một thư viện ma trận. Nó được viết bằng C, nhưng tôi có các ràng buộc C ++, và tôi nghĩ vậy (và ngay cả khi không, gọi C từ C ++ là không có vấn đề gì). Các tài liệu là vô cùng kỹ lưỡng. Gói này hơi quá mức cho những gì tôi muốn làm bây giờ (nhân ma trận và lập chỉ mục để thiết lập các chương trình tuyến tính số nguyên hỗn hợp), nhưng có thể hữu ích như một định dạng ma trận cho tôi trong tương lai hoặc cho những người khác có nhu cầu khác hơn tôi làm.
Trilinos , được viết bởi một nhóm tại Phòng thí nghiệm quốc gia Sandia, cung cấp các giao diện C ++ hướng đối tượng cho các ma trận dày đặc và thưa thớt thông qua thành phần Epetra của nó và các giao diện templated cho ma trận dày đặc và thưa thớt thông qua thành phần Tpetra của nó. Nó cũng có các thành phần cung cấp chức năng giải quyết tuyến tính và eigensolver. Các tài liệu dường như không được đánh bóng hoặc nổi bật như PETSc; Trilinos có vẻ giống như Sandia tương tự của PETSc. PETSc có thể gọi một số người giải Trilinos. Binaries cho Trilinos có sẵn cho Linux.
Blitz là một thư viện hướng đối tượng C ++ có nhị phân Linux. Nó dường như không được duy trì tích cực (2012-06-29: một phiên bản mới vừa xuất hiện ngày hôm qua!), Mặc dù danh sách gửi thư đang hoạt động, vì vậy có một số cộng đồng sử dụng nó. Nó dường như không làm được gì nhiều trong cách đại số tuyến tính số ngoài BLAS, và trông giống như một thư viện ma trận dày đặc. Nó sử dụng các mẫu.
Boost :: uBLAS là một thư viện hướng đối tượng C ++ và là một phần của dự án Boost. Nó hỗ trợ templating và đại số tuyến tính dày đặc. Tôi đã nghe nói nó không đặc biệt nhanh.
Các mẫu bằng số Toolkit là một thư viện C ++ hướng đối tượng được phát triển bởi NIST. Tác giả của nó, Roldan Pozo, dường như thỉnh thoảng đóng góp các bản vá, nhưng dường như nó không còn được phát triển tích cực nữa (bản cập nhật cuối cùng là năm 2010). Nó tập trung vào đại số tuyến tính dày đặc, và cung cấp giao diện cho một số phân tách ma trận cơ bản và một bộ giải eigenvalue.
Elemental , được phát triển bởi Jack Poulson, là gói phần mềm đại số tuyến tính dày đặc (song song) bộ nhớ phân tán được viết theo kiểu tương tự như FLAME . Để biết danh sách các tính năng và nền tảng của dự án, xem tài liệu của anh ấy . Bản thân FLAME có một thư viện liên kết cho đại số tuyến tính dày đặc liên tiếp và bộ nhớ chung, được gọi là libflame , dường như được viết bằng hướng đối tượng C. Libflame trông rất giống LAPACK, nhưng với ký hiệu tốt hơn là các thuật toán để phát triển số nhanh thư viện đại số tuyến tính nhiều hơn của một khoa học và ít nghệ thuật đen.
Có những thư viện khác có thể được thêm vào danh sách; nếu chúng ta tính các gói đại số tuyến tính thưa thớt là "thư viện ma trận", thì gói miễn phí tốt nhất mà tôi biết trong C là SuiteSparse , được lập trình theo kiểu hướng đối tượng. Tôi đã sử dụng SuiteSparse và thấy nó khá dễ để lấy; nó phụ thuộc vào BLAS và LAPACK cho một số thuật toán phân tách các vấn đề thưa thớt thành nhiều bài toán con đại số tuyến tính nhỏ, dày đặc. Tác giả chính của gói, Tim Davis, cực kỳ hữu ích và là một người tuyệt vời.
Các chương trình con Libraries Harwell nổi tiếng với thói quen đại số tuyến tính thưa thớt của họ, và được miễn phí cho người dùng học tập, mặc dù bạn phải đi qua quá trình này của việc điền vào mẫu và nhận được một e-mail cho mỗi tập tin mà bạn muốn tải về. Vì các chương trình con thường có các phụ thuộc, nên sử dụng một bộ giải có thể yêu cầu tải xuống năm hoặc sáu tệp và quá trình này có thể hơi tẻ nhạt, đặc biệt vì việc phê duyệt biểu mẫu không phải là tức thời.
Ngoài ra còn có các bộ giải đại số tuyến tính thưa thớt khác, nhưng theo tôi có thể nói, MUMPS và các gói khác tập trung chủ yếu vào giải pháp của các hệ tuyến tính, và giải quyết các hệ thống tuyến tính là điều tôi quan tâm nhất hiện nay. (Có lẽ sau này, tôi sẽ cần chức năng đó và nó có thể hữu ích cho những người khác.)