อัลกอริทึมที่เร็วที่สุดในการคำนวณจำนวนเงื่อนไขของเมทริกซ์ขนาดใหญ่ใน Matlab / Octave


9

จากคำจำกัดความของจำนวนเงื่อนไขดูเหมือนว่าจำเป็นต้องใช้การคำนวณเมทริกซ์ผกผันฉันสงสัยว่าสำหรับเมทริกซ์จตุรัสทั่วไป (หรือดีกว่าถ้าสมมาตรบวกแน่นอนได้) เป็นไปได้ที่จะใช้ประโยชน์จากการสลายตัวเมทริกซ์เพื่อคำนวณจำนวนเงื่อนไขใน วิธีที่เร็วกว่า

คำตอบ:


7

การคำนวณหมายเลขเงื่อนไข (แม้จะใกล้เคียงกับภายในปัจจัย 2) ดูเหมือนว่าจะมีความซับซ้อนเช่นเดียวกับการคำนวณการแยกตัวประกอบแม้ว่าจะไม่มีทฤษฎีบทในทิศทางนี้

จากปัจจัย Cholesky กระจัดกระจาย R ของเมทริกซ์บวกแน่นอนที่สมมาตรเป็นบวกหรือมาจากกระจัดกระจาย QR การแยกตัวประกอบ (โดยนัย) Q) ของเมทริกซ์จตุรัสทั่วไปเราสามารถรับหมายเลขเงื่อนไขในบรรทัดฐาน Frobenius โดยการคำนวณชุดย่อยผกผันเบาบางของ (RTR)-1ซึ่งเร็วกว่าการคำนวณอินเวอร์สแบบเต็ม (ที่เกี่ยวข้องกับบทความนี้ของฉัน: ไฮบริดสลีบรรทัดฐานและขอบเขตสำหรับระบบเชิงเส้น overdetermined, พีชคณิตเชิงเส้น Appl. 216 (1995), 257-266 http://www.mat.univie.ac.at/~neum/scan/74 .pdf )

แก้ไข: ถ้า A=QR จากนั้นด้วยความเคารพต่อหน่วยไม่มีค่าคงที่หน่วย

โอnd(A)=โอnd(R)=โอnd(RTR).
ในการคำนวณ QR เบาบาง factorizations เห็นเช่นที่http://dl.acm.org/citation.cfm?id=174408

สำหรับการคำนวณการผกผันของกระจัดกระจายให้ดูที่บทความของฉัน: การประมาณค่าความน่าจะเป็นสูงสุดของการแปรปรวนร่วมในแบบจำลองเชิงเส้นแบบกระจัดกระจาย, การคัดเลือกทางพันธุกรรมวิวัฒนาการ 30 (1998), 1-24
https://www.mat.univie.ac.at/~neum/ms/reml.pdf ค่าใช้จ่ายประมาณ 3 เท่าของต้นทุนการแยกตัวประกอบ

ดังนั้นคุณจะแนะนำต่อไปนี้: รับเมทริกซ์ A คำนวณ QR ของแบบฟอร์ม A=QR ที่ไหน R เป็นเมทริกซ์สามเหลี่ยมด้านบนและ Q เป็นเมทริกซ์มุมฉากจากนั้นจำนวนเงื่อนไขจะได้รับจาก cond(A)=||A||||A1||(RTR)1 จุดนี่คือวิธีการค้นหาวิธีที่รวดเร็วในการคำนวณการแยกตัวประกอบ QR ฉันถูกไหม?
linello

@linello: ไม่มาก; ดูการแก้ไขของฉัน
อาร์โนลด์ Neumaier

ขอบคุณ! ฉันจะตรวจสอบมัน btw ค่าใช้จ่ายของขั้นตอนนี้คืออะไร?
linello

@linello: สำหรับเมทริกซ์เต็ม O(n3); สำหรับเมทริกซ์ที่กระจัดกระจายมันขึ้นอยู่กับโครงสร้างของเบาบางมาก
Arnold Neumaier

4

แน่นอนว่ามันง่ายที่จะใช้การแยกค่า eigenvalue / eigenvector ของเมทริกซ์สมมาตรหรือ SVD ของเมทริกซ์ทั่วไปเพื่อคำนวณหมายเลขเงื่อนไข แต่นี่ไม่ใช่วิธีที่รวดเร็วในการดำเนินการ

มีอัลกอริธึมซ้ำ ๆ ที่สามารถคำนวณการประมาณของจำนวนเงื่อนไขที่มีประโยชน์สำหรับวัตถุประสงค์ส่วนใหญ่โดยไม่ต้องไปทำงานทั้งหมดของการคำนวณ A-1. ดูตัวอย่างcondestฟังก์ชันใน MATLAB


แต่การประมาณการบางครั้งก็เล็กเกินไปอย่างมีนัยสำคัญ การคำนวณหมายเลขเงื่อนไข (แม้จะใกล้เคียงกับภายในปัจจัย 2) ดูเหมือนว่าจะมีความซับซ้อนเช่นเดียวกับการคำนวณการแยกตัวประกอบแม้ว่าจะไม่มีทฤษฎีบทในทิศทางนี้
อาร์โนลด์ Neumaier

1

สำหรับการฝึกอบรมแบบเบาบาง Hermitian Hคุณสามารถใช้อัลกอริทึม Lanczos เพื่อคำนวณค่าลักษณะเฉพาะของมัน ถ้าH ไม่ใช่ Hermitian คุณสามารถคำนวณค่าเอกพจน์ด้วยการคำนวณค่าลักษณะเฉพาะของ HTH.

เนื่องจากค่าลักษณะเฉพาะ / เอกพจน์ที่ใหญ่ที่สุดและเล็กที่สุดสามารถพบได้อย่างรวดเร็ว (นานก่อนที่การทำให้ tridiagonalization เสร็จสิ้น) วิธีการ Lanczos จึงมีประโยชน์อย่างยิ่งในการคำนวณหมายเลขเงื่อนไข


ฉันสงสัยอยู่เสมอว่าจะหารหัส matlab ที่อ่านได้สำหรับการทำซ้ำ lanczos ซึ่งชี้แจงวิธีการรับค่าลักษณะเฉพาะที่เล็กที่สุดหรือใหญ่ที่สุด คุณช่วยแนะนำฉันที
linello

ฉันไม่มีรหัส MATLAB สำหรับอัลกอริทึม Lanczos
chaohuang
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.