สำหรับปัญหาที่ฉันสนใจมิติของเมทริกซ์คือ 30 หรือน้อยกว่า
ในฐานะที่เป็น WolfgangBangerth หมายเหตุเว้นแต่ว่าคุณจะมีเมทริกซ์เหล่านี้จำนวนมาก (ล้านล้านล้านดอลลาร์) ประสิทธิภาพของเมทริกซ์ผกผันโดยทั่วไปจะไม่เป็นปัญหา
เมื่อพิจารณาเมทริกซ์สมมาตรเชิงบวกที่แน่นอนอัลกอริธึมที่เร็วที่สุดสำหรับการคำนวณเมทริกซ์ผกผันและดีเทอร์มิแนนต์คืออะไร
หากความเร็วเป็นปัญหาคุณควรตอบคำถามต่อไปนี้:
- คุณต้องการอินเวอร์สทั้งหมดหรือไม่? (แอปพลิเคชันจำนวนมากไม่จำเป็นต้องสร้างการผกผันอย่างชัดเจน)
- คุณต้องการปัจจัยหรือไม่ (ปัจจัยเป็นเรื่องแปลก แต่ก็ไม่เคยได้ยินมาก่อนในวิทยาศาสตร์การคำนวณ)
- คุณต้องการความแม่นยำสูงหรือไม่? (อัลกอริทึมความแม่นยำต่ำมีแนวโน้มที่จะเร็วขึ้น)
- การประมาณความน่าจะเป็นจะเพียงพอหรือไม่ (อัลกอริธึมน่าจะเป็นเร็วกว่า)
การตอบสนองมาตรฐานต่อปัญหาของคุณในการแปลงเมทริกซ์แน่นอนที่เป็นบวกและมีขนาดเล็กและการคำนวณดีเทอร์มิแนนต์คือการสลายตัวของ Cholesky ถ้าA=LLTจากนั้น det(A)=∏ni=1l2iiและ2}det(A−1)=∏ni=1l−2ii
สมมติว่าคือคูณการสลายตัวของ Cholesky สามารถคำนวณได้ในรอบ flops ซึ่งประมาณครึ่งราคาของการสลายตัว LU อย่างไรก็ตามอัลกอริทึมดังกล่าวจะไม่ถือว่า "เร็ว" การแยกย่อย LU แบบสุ่มAnnn3/3อาจเป็นอัลกอริธึมที่เร็วกว่าที่ควรพิจารณาหาก (1) คุณต้องคำนึงถึงเมทริกซ์จำนวนมาก (2) การแยกตัวประกอบนั้นเป็นขั้นตอนที่ จำกัด ในแอปพลิเคชันของคุณและ (3) ข้อผิดพลาดใด ๆ ยอมรับได้ เมทริกซ์ของคุณอาจเล็กเกินไปสำหรับอัลกอริธึมกระจัดกระจายที่จะคุ้มค่าดังนั้นโอกาสอื่น ๆ สำหรับอัลกอริธึมที่เร็วกว่านั้นจะต้องมีโครงสร้างเมทริกซ์เพิ่มเติม (เช่นแบนด์) หรือการใช้ประโยชน์จากโครงสร้างปัญหา (เช่นบางทีคุณอาจ ต้องคำนวณเมทริกซ์ผกผันหรือตัวกำหนดอีกต่อไป) อัลกอริธึมดีเทอร์มิแนนต์แบบคร่าวๆคือค่าใช้จ่ายในการแก้ปัญหาระบบเชิงเส้นภายในปัจจัยคงที่ดังนั้นอาร์กิวเมนต์เดียวกันที่ใช้สำหรับระบบเชิงเส้นจะใช้กับการคำนวณดีเทอร์มิแนนต์เช่นกัน