อ่าน 2 นาที
ชุดเครื่องมือเมทริกซ์ Java
Matrix Toolkit Java (MTJ) เป็น ไลบรารีซอฟต์แวร์โอเพนซอร์สที่ เขียนด้วยภาษา Java สำหรับการคำนวณ พีชคณิตเชิงเส้นเชิงตัวเลข...
ชุดเครื่องมือเมทริกซ์ Java
| ชุดเครื่องมือเมทริกซ์ Java | |
|---|---|
| ผู้เขียนต้นฉบับ | บียอร์น-โอเว ไฮมซุนด์ |
| ปล่อย | 2003 |
| รุ่นทดลองใช้งาน | 0.9.14 / 22 พฤศจิกายน 2011 |
| เขียนเป็น | ชวา |
| พิมพ์ | อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) |
| ใบอนุญาต | แอลจีพีแอล |
| ที่เก็บข้อมูล | github.com/fommil/matrix-toolkits-java |
Matrix Toolkit Java (MTJ) เป็นไลบรารีซอฟต์แวร์โอเพนซอร์สที่เขียนด้วยภาษาJava สำหรับการคำนวณพีชคณิตเชิงเส้นเชิงตัวเลขไลบรารีนี้ประกอบด้วยชุดการดำเนินการพีชคณิตเชิงเส้นมาตรฐานสำหรับเมทริกซ์หนาแน่นโดยใช้โค้ดBLASและLAPACK ส่วนการดำเนินการสำหรับเมทริกซ์ เบาบางนั้นมีให้ใช้งานบางส่วนผ่านโครงการ Templates ไลบรารีนี้สามารถกำหนดค่าให้ทำงานเป็นไลบรารี Java บริสุทธิ์ หรือใช้โค้ด BLAS ที่ปรับให้เหมาะสมกับเครื่องผ่านJava Native Interfaceได้
MTJ เดิมทีได้รับการพัฒนาโดย Bjørn-Ove Heimsund ซึ่งได้ถอนตัวออกไปเนื่องจากภาระผูกพันอื่น ๆ เว็บไซต์ของโปรเจกต์ระบุว่า "(ผู้ดูแลใหม่) ให้ความสำคัญหลักกับการดูแลรักษาไลบรารีและแก้ไขข้อบกพร่องเมื่อพบ ไม่มีแผนสำหรับเวอร์ชันในอนาคต" [ 1 ]
สามารถพบการอ้างอิงหลายรายการสำหรับ MTJ ในเอกสารทางวิทยาศาสตร์ รวมถึง[ 2 ]ซึ่งใช้ตัวปรับสภาพ LU ประสิทธิภาพของ MTJ ได้รับการเปรียบเทียบกับไลบรารีอื่นๆ ซึ่งสามารถพบได้ที่เว็บไซต์ Java Matrix Benchmark [ 3 ]
ความสามารถ
ต่อไปนี้เป็นภาพรวมของความสามารถของ MTJ ตามที่ระบุไว้ในเว็บไซต์ของโครงการ:
- โครงสร้างข้อมูลสำหรับเมทริกซ์หนาแน่นและเมทริกซ์เบาบางที่มีโครงสร้างในรูปแบบต่อไปนี้:
- หนาแน่น เรียงตัวเป็นแถวหลัก
- เมทริกซ์แบบแถบ ซึ่งเก็บค่าเฉพาะในแนวทแยงมุมไม่กี่ค่าเท่านั้น
- เมทริกซ์แบบแพ็ค คือการจัดเก็บเมทริกซ์เพียงครึ่งเดียว (สำหรับเมทริกซ์สามเหลี่ยมหรือเมทริกซ์สมมาตร)
- เมทริกซ์สามแถวและเมทริกซ์สามแถวสมมาตร
- รองรับการจัดเก็บข้อมูลแบบสมมาตรและแบบสามเหลี่ยมอย่างโปร่งใส
- โครงสร้างข้อมูลสำหรับเมทริกซ์แบบสปาร์สที่ไม่มีโครงสร้างในรูปแบบต่อไปนี้:
- การจัดเก็บข้อมูลแบบบีบอัดแถวหรือคอลัมน์ (CRS/CCS)
- CRS/CCS ที่ยืดหยุ่น โดยใช้เวกเตอร์แบบเบาบางที่สามารถขยายได้
- หน่วยความจำแนวทแยงมุมแบบบีบอัด (CDS)
- เมทริกซ์แบบเบาบางที่มีความหนาแน่นและโครงสร้างนั้นสร้างขึ้นบนพื้นฐานของ BLAS และ LAPACK และรวมถึงการดำเนินการภายในต่อไปนี้:
- การคูณเมทริกซ์/เวกเตอร์
- การคูณเมทริกซ์กับเมทริกซ์
- การอัปเดตอันดับโดยใช้เมทริกซ์หรือเวกเตอร์
- ตัวแก้เมทริกซ์โดยตรง
- เมทริกซ์แบบสปาร์สที่ไม่มีโครงสร้างรองรับการดำเนินการเช่นเดียวกับเมทริกซ์ที่มีโครงสร้าง ยกเว้นว่าไม่มีตัวแก้ปัญหาโดยตรง อย่างไรก็ตาม วิธีการคูณเมทริกซ์/เวกเตอร์ของเมทริกซ์เหล่านี้ได้รับการปรับให้เหมาะสมสำหรับการใช้งานในตัวแก้ปัญหาแบบวนซ้ำ
- การแยกส่วนเมทริกซ์ของเมทริกซ์หนาแน่นและเมทริกซ์เบาบางที่มีโครงสร้าง:
- LU และ Cholesky
- การแยกส่วนประกอบค่าลักษณะเฉพาะสำหรับเมทริกซ์หนาแน่นที่ไม่สมมาตร
- การแยกส่วนค่าเอกลักษณ์สำหรับเมทริกซ์หนาแน่นที่ไม่สมมาตร
- การแยกส่วนประกอบค่าลักษณะเฉพาะสำหรับเมทริกซ์สมมาตร (เมทริกซ์สามแถว เมทริกซ์แถบ เมทริกซ์อัดแน่น และเมทริกซ์หนาแน่น)
- การแยกส่วน เมทริกซ์เชิงตั้งฉากสำหรับเมทริกซ์หนาแน่น (QR, RQ, LQ และ QL)
- ตัวแก้ปัญหาแบบวนซ้ำสำหรับเมทริกซ์เบาบางที่ไม่มีโครงสร้างจากโครงการ Templates:
- การไล่ระดับแบบไบคอนจูเกต
- การไล่ระดับไบคอนจูเกตมีเสถียรภาพแล้ว
- การไล่ระดับแบบคอนจูเกต
- การไล่ระดับคอนจูเกตยกกำลังสอง
- การวนซ้ำแบบเชบิเชฟ
- ค่าตกค้างขั้นต่ำทั่วไป (GMRES)
- การปรับปรุงแบบวนซ้ำ (วิธีของริชาร์ดสัน)
- ค่าตกค้างขั้นต่ำแบบกึ่งสมบูรณ์
- ตัวอย่างตัวปรับสภาพเชิงพีชคณิต:
- การปรับสภาพเบื้องต้นแบบทแยงมุม
- การคลายตัวเกินแบบสมมาตรต่อเนื่อง
- Cholesky ไม่สมบูรณ์
- LU ไม่สมบูรณ์
- LU ที่ไม่สมบูรณ์พร้อมการเติมเต็มโดยใช้การกำหนดค่าเกณฑ์
- มัลติกริดเชิงพีชคณิตโดยการรวมแบบเรียบ
ตัวอย่างการใช้งาน
ตัวอย่างของการแยกส่วนค่าเอกลักษณ์ (Singular Value Decomposition: SVD):
SVD svd = new SVD ( matA.numRows ( ) , matA.numColumns ( ) ) ; SVD s = svd.factor ( matA ) ; DenseMatrix U = s.getU ( ) ; DenseMatrix S = s.getS ( ) ; DenseMatrix Vt = s.getVt ( ) ;ตัวอย่างการคูณเมทริกซ์:
DenseMatrix result = new DenseMatrix ( matA.numRows ( ) , matB.numColumns ( ) ) ; matA.mult ( matB , result ) ;ดูเพิ่มเติม
ลิงก์ภายนอก
- matrix-toolkits-javaบนGitHub