ฉันได้รวบรวมสิ่งต่อไปนี้จากการวิจัยออนไลน์จนถึงตอนนี้:
ฉันใช้อาร์มาดิลโล่นิดหน่อยและพบว่าอินเทอร์เฟซใช้งานง่ายพอและมันง่ายที่จะหาแพ็คเกจไบนารีสำหรับ Ubuntu (และฉันคิดว่า Linux distros อื่น ๆ ) ฉันไม่ได้รวบรวมจากแหล่งที่มา แต่ความหวังของฉันคือมันจะไม่ยากเกินไป มันตรงตามเกณฑ์การออกแบบส่วนใหญ่ของฉันและใช้พีชคณิตเชิงเส้นหนาแน่น มันสามารถเรียกรูทีน LAPACK หรือ MKL โดยทั่วไปแล้วไม่จำเป็นต้องรวบรวมอาร์มาดิลโล่มันเป็นไลบรารีที่ใช้เทมเพลตล้วนๆ: คุณเพียงแค่ใส่ส่วนหัวและลิงค์ไปยัง BLAS / LAPACK หรือ MKL เป็นต้น
ฉันได้ยินสิ่งดีๆเกี่ยวกับEigenแต่ไม่ได้ใช้ มันอ้างว่าเร็วใช้ templating และสนับสนุนพีชคณิตเชิงเส้นหนาแน่น มันไม่มี LAPACK หรือ BLAS เป็นการพึ่งพา แต่ดูเหมือนว่าจะสามารถทำทุกสิ่งที่ LAPACK สามารถทำได้ (รวมถึงบางสิ่งที่ LAPACK ไม่สามารถทำได้) โครงการจำนวนมากใช้ Eigen ซึ่งมีแนวโน้ม มันมีแพ็คเกจไบนารีสำหรับ Ubuntu แต่ในฐานะห้องสมุดส่วนหัวเท่านั้นจึงไม่สำคัญที่จะใช้ที่อื่นเช่นกัน
The Matrix Template Libraryเวอร์ชัน 4 ยังดูมีแนวโน้มและใช้ templating รองรับทั้งพีชคณิตเชิงเส้นหนาแน่นและกระจัดกระจายและสามารถเรียกUMFPACKเป็นตัวแก้ปัญหากระจัดกระจาย คุณสมบัติค่อนข้างชัดเจนจากเว็บไซต์ของพวกเขา มันมีแพ็คเกจไบนารีสำหรับ Ubuntu สามารถดาวน์โหลดได้จากเว็บไซต์ของพวกเขา
PETScเขียนโดยทีมงานที่ Argonne National Laboratory มีการเข้าถึงตัวแก้เชิงเส้นแบบเบาบางและหนาแน่นดังนั้นฉันคิดว่ามันสามารถทำงานเป็นห้องสมุดเมทริกซ์ได้ มันเขียนใน C แต่มีการผูก C ++ ฉันคิดว่า (และแม้ว่ามันจะไม่ได้เรียก C จาก C ++ ไม่มีปัญหา) เอกสารอย่างละเอียดอย่างไม่น่าเชื่อ แพคเกจเป็นบิตมากเกินไปสำหรับสิ่งที่ฉันต้องการทำตอนนี้ (การคูณเมทริกซ์และการจัดทำดัชนีเพื่อตั้งโปรแกรมเชิงเส้นจำนวนเต็มแบบผสม) แต่อาจมีประโยชน์เป็นรูปแบบเมทริกซ์สำหรับฉันในอนาคตหรือสำหรับคนอื่นที่มีความต้องการที่แตกต่างกัน กว่าที่ฉันทำ
Trilinosเขียนโดยทีมงานที่ Sandia National Laboratory จัดเตรียมอินเทอร์เฟซ C ++ เชิงวัตถุสำหรับเมทริกซ์หนาแน่นและกระจัดกระจายผ่านองค์ประกอบ Epetra และอินเทอร์เฟซ templated สำหรับเมทริกซ์หนาแน่นและกระจัดกระจายผ่านส่วนประกอบ Tpetra นอกจากนี้ยังมีส่วนประกอบที่ให้การแก้ปัญหาเชิงเส้นและการทำงานของ eigensolver เอกสารดูเหมือนจะไม่ขัดหรือเด่นชัดเหมือนกับ PETSc; Trilinos ดูเหมือนว่าอนาล็อกของ Sandia ของ PETSc PETSc สามารถเรียกนักแก้ปัญหา Trilinos ได้บ้าง ไบนารีสำหรับ Trilinos พร้อมใช้งานสำหรับ Linux
Blitzเป็นไลบรารีเชิงวัตถุ C ++ ที่มีลินุกซ์ไบนารี ดูเหมือนจะไม่ได้รับการบำรุงรักษาอย่างแข็งขัน (2012-06-29: มีรุ่นใหม่เพิ่งปรากฏเมื่อวานนี้!) แม้ว่ารายชื่อผู้รับจดหมายจะเปิดใช้งานอยู่จึงมีชุมชนบางแห่งที่ใช้งาน ดูเหมือนจะไม่ได้ทำอะไรมากมายในทางของพีชคณิตเชิงเส้นที่เป็นตัวเลขนอกเหนือจาก BLAS และดูเหมือนว่าเป็นไลบรารีเมทริกซ์หนาแน่น มันใช้แม่แบบ
Boost :: uBLASเป็นไลบรารีเชิงวัตถุ C ++ และเป็นส่วนหนึ่งของโครงการ Boost รองรับพีชคณิตเชิงเส้นเทมเพลตและหนาแน่น ฉันได้ยินมาว่ามันไม่เร็วโดยเฉพาะ
แม่แบบตัวเลข Toolkitเป็นไลบรารี c ++ เชิงวัตถุพัฒนาโดย NIST ผู้เขียน Roldan Pozo ดูเหมือนว่าจะมีส่วนร่วมในการแก้ไขเป็นครั้งคราว แต่ดูเหมือนว่ามันจะไม่ได้อยู่ภายใต้การพัฒนาที่ใช้งานได้อีกต่อไป (ปรับปรุงล่าสุดคือ 2010) มันมุ่งเน้นไปที่พีชคณิตเชิงเส้นที่มีความหนาแน่นสูงและให้ส่วนต่อประสานสำหรับการสลายตัวเมทริกซ์ขั้นพื้นฐานบางอย่างและตัวแก้ปัญหาค่าเฉพาะ
ธาตุที่พัฒนาโดยแจ็ค Poulson เป็นหน่วยความจำแบบกระจาย (ขนาน) หนาแน่นแพคเกจซอฟต์แวร์พีชคณิตเชิงเส้นเขียนในลักษณะที่คล้ายกับเปลวไฟ สำหรับรายชื่อของคุณสมบัติและพื้นหลังในโครงการให้ดูเขาเอกสาร FLAME นั้นมีไลบรารีที่เกี่ยวข้องสำหรับพีชคณิตเชิงเส้นหนาแน่นและเรียงตามลำดับและหน่วยความจำร่วมซึ่งเรียกว่าlibflameซึ่งดูเหมือนว่าจะเขียนด้วยวัตถุเชิง C. C. Libflame มีลักษณะเหมือน LAPACK แต่มีสัญกรณ์ที่ดีกว่าสำหรับอัลกอริทึม ห้องสมุดพีชคณิตเชิงเส้นมีมากกว่าวิทยาศาสตร์และศิลปะสีดำน้อยลง
มีห้องสมุดอื่น ๆ ที่สามารถเพิ่มลงในรายการ หากเรานับแพคเกจพีชคณิตเชิงเส้นแบบกระจัดกระจายเป็น "เมทริกซ์ไลบรารี" สิ่งที่ดีที่สุดที่ฉันรู้จักใน C คือSuiteSparseซึ่งเขียนโปรแกรมในรูปแบบเชิงวัตถุ ฉันใช้ SuiteSparse และพบว่าค่อนข้างง่ายต่อการรับ มันขึ้นอยู่กับ BLAS และ LAPACK สำหรับอัลกอริทึมบางตัวที่สลายปัญหากระจัดกระจายเป็นปัญหาย่อยเชิงพีชคณิตเชิงเส้นขนาดเล็กจำนวนมาก ทิมเดวิสผู้เขียนหลักของแพคเกจมีประโยชน์อย่างเหลือเชื่อและเป็นคนที่เก่ง
Harwell Subroutine ห้องสมุดที่มีชื่อเสียงสำหรับเบาบางกิจวัตรพีชคณิตเชิงเส้นของพวกเขาและฟรีสำหรับผู้ใช้วิชาการแม้ว่าคุณจะต้องไปผ่านกระบวนการของการกรอกแบบฟอร์มและรับอีเมลสำหรับแต่ละไฟล์ที่คุณต้องการดาวน์โหลดนี้ เนื่องจากรูทีนย่อยมักมีการพึ่งพาการใช้ตัวแก้ปัญหาหนึ่งอาจต้องการดาวน์โหลดห้าหรือหกไฟล์และกระบวนการอาจค่อนข้างน่าเบื่อโดยเฉพาะอย่างยิ่งเนื่องจากการอนุมัติแบบฟอร์มไม่ได้เกิดขึ้นทันที
นอกจากนี้ยังมีตัวแก้ปัญหาพีชคณิตเชิงเส้นอื่น ๆ กระจัดกระจาย แต่เท่าที่ฉันสามารถบอกได้ว่าMUMPSและแพ็คเกจอื่น ๆ มุ่งเน้นไปที่การแก้ปัญหาของระบบเชิงเส้นเป็นส่วนใหญ่และการแก้ปัญหาระบบเชิงเส้นเป็นสิ่งที่ฉันกังวลน้อยที่สุด (ไม่ช้าฉันจะต้องใช้ฟังก์ชั่นนั้นและมันจะมีประโยชน์กับคนอื่น ๆ