2010-10-22 17 views
11

Có gói nào để thực hiện tính toán đại số tuyến tính thưa thớt, có thể dựa trên các thư viện C nhanh và hiệu quả không? Tôi đã tìm kiếm trên Hackage nhưng tôi không tìm thấy bất cứ điều gì liên quan: hmatrix, sử dụng GSL, BLAS và LAPACK, là tuyệt vời, nhưng dường như không bao gồm các thuật toán đặc biệt để giải các hệ thống tuyến tính và các giá trị eigen/vectơ với ma trận thưa thớt . Những gì tôi muốn tìm, nó là một cái gì đó tương tự như mô-đun sparse.linalg trong scipy. Cảm ơn!Bất kỳ gói đại số tuyến tính thưa thớt nào trong Haskell?

+1

ai đó trong thư trả lời đã chỉ ra điều này, trông ổn và tôi không biết tại sao trả lời của họ bị xóa https://github.com/laughedelic/sparse-lin-alg – sclv

Trả lời

7

Theo như tôi biết, chưa có gói nào như vậy.

Có một bài báo R. L. Winwright và M. E. Sexton. Một nghiên cứu về biểu diễn ma trận thưa thớt để giải các hệ thống tuyến tính bằng một ngôn ngữ chức năng. J. Lập trình chức năng, 2 (1): 61-72, tháng 1 năm 1992., trong đó chúng so sánh cây 4 chiều, cây nhị phân và mã hóa biểu diễn ma trận thưa thớt độ dài chạy trong Miranda. Quad-tree là superiour trên phương thức CG, và mã hóa độ dài chạy tốt với SOR.

Đã có triển khai FEM trong Haskell vào năm 1993, Some issues in a functional implementation of a finite element algorithm. Họ cũng sử dụng quad-tree. Hiệu suất đạt được không phải là sao, nhưng đã lâu lắm rồi ... Tôi mong rằng hôm nay Haskell có thể hoạt động tốt hơn. Ngoài ra còn có các thư viện mảng mới để sử dụng, có thể cho các biểu diễn tốt hơn về các ma trận thưa thớt. Hôm nay, chúng tôi có IntMap, Vector và thậm chí Repa.

Một thư viện các bộ giải quyết thưa thớt trong Haskell (hoặc các liên kết tới bộ giải mã C/Fortran) vẫn được viết.

+0

scipy.sparse dường như trang trại rất nhiều nâng hạng nặng lên superLU, cần phải thẳng thắn để ràng buộc: http://crd.lbl.gov/~xiaoye/SuperLU/, nhưng vẫn cần mã để tạo ra các biểu diễn ma trận thưa thớt để bắt đầu. – sclv

+1

Có. Ngoài ra còn có thư viện UMFPACK của các giải pháp trực tiếp http://www.cise.ufl.edu/research/sparse/umfpack/. Nó shouln't được quá khó khăn để giao tiếp với một trong hai người trong số họ. Và cũng có những giải pháp lặp lại thường đòi hỏi ít bộ nhớ hơn để chạy. Chúng tôi có thể chọn giao tiếp với các thư viện hiện có hoặc triển khai chúng từ đầu. Tôi không chắc chắn cái nào có thể quay nhanh hơn. Một lần nữa, có TAUCS http://www.tau.ac.il/~stoledo/taucs/ và LASPACK http://www.mgnet.org/mgnet/Codes/laspack/ (chỉ tuần tự) và PETSc http: // www.mcs.anl.gov/petsc/petsc-2/ (rất lớn). – sastanin

+0

SciPy.Sparse sử dụng triển khai Fortran của các phương pháp lặp lại từ http://www.netlib.org/templates/ – sastanin