วิธีที่มีประสิทธิภาพมากที่สุดในการคำนวณค่า eigenvector ของเมทริกซ์หนาแน่นที่สอดคล้องกับค่าลักษณะเฉพาะที่มีขนาดใหญ่ที่สุดคืออะไร


10

ฉันมีเมทริกซ์จตุรัสสมมาตรจริงหนาแน่น ขนาดประมาณ 1,000x1000 ฉันต้องคำนวณส่วนประกอบหลักตัวแรกและสงสัยว่าอัลกอริธึมที่ดีที่สุดในการทำสิ่งนี้อาจเป็นอย่างไร

ดูเหมือนว่า MATLAB จะใช้อัลกอริทึมArnoldi / Lanczos (สำหรับeigs) แต่จากการอ่านเกี่ยวกับพวกเขาฉันไม่แน่ใจว่าพวกเขามีข้อได้เปรียบมากกว่าการทำซ้ำพลังแบบเรียบง่ายหรือไม่เนื่องจากเมทริกซ์ของฉันไม่กระจัดกระจายและฉันสนใจเฉพาะไอเกนแรกเท่านั้น

คำแนะนำใด ๆ ที่เป็นอัลกอริธึมที่เร็วที่สุดในกรณีนี้?


1
ในคอมพิวเตอร์ของฉันบนเมทริกซ์สมมาตร 1000 X 1,000 ที่สร้างขึ้นแบบสุ่มฟังก์ชัน "eigen" ใน R ใช้เวลาประมาณหนึ่งวินาทีในการคำนวณค่าลักษณะเฉพาะและเวกเตอร์ทั้งหมดปัดเศษขึ้น ระยะของคุณอาจแตกต่างกันไป แต่ฉันสงสัยว่าตัวเลือกอัลกอริทึมของคุณสร้างความแตกต่างในเวลาที่กำหนด

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

คุณหมายถึง eigenvector ที่สอดคล้องกับ eigenvalue ที่ใหญ่ที่สุดหรือเล็กที่สุดหรือไม่? ดูเหมือนว่าคุณต้องการอดีต
Jack Poulson

ใช่แล้วไอเก็นเวกเตอร์เทียบกับค่าลักษณะเฉพาะที่มีขนาดใหญ่ที่สุด
Mika Fischer

คำตอบ:


12

วิธีที่เร็วที่สุดน่าจะขึ้นอยู่กับสเปกตรัมและความเป็นมาตรฐานของเมทริกซ์ของคุณ แต่ในทุกกรณีอัลกอริทึม Krylov ควรจะดีกว่าการทำซ้ำพลังอย่างเคร่งครัด GW Stewart มีการสนทนาที่ดีของปัญหานี้ในบทที่ 4, หมวดที่ 3 ของอัลกอริทึมเมทริกซ์, เล่มที่สอง: Eigensystems :

วิธีการใช้พลังงานจะขึ้นอยู่กับการสังเกตว่าถ้ามี eigenpair ที่โดดเด่นแล้วภายใต้ข้อ จำกัด ที่ไม่รุนแรงในยูเวกเตอร์k Uผลิตใกล้เคียงที่ถูกต้องมากขึ้นกับวิคเตอร์ที่โดดเด่น อย่างไรก็ตามในแต่ละขั้นตอนวิธีการใช้พลังงานจะพิจารณาเพียงเวกเตอร์เดี่ยวA k uซึ่งมีจำนวนการทิ้งข้อมูลที่มีอยู่ในเวกเตอร์ที่สร้างขึ้นก่อนหน้านี้ ปรากฎว่าข้อมูลนี้มีค่า ... "AยูAkยูAkยู

และเขาก็จะแสดงให้เห็นว่าสำหรับเมทริกซ์ทแยงมุมกับฉัน 'TH ชุดมูลค่าทแยงเพื่อ.95 ฉัน (นับจากฉัน= 0 ) หลังจาก 25 ซ้ำจับสเปซ Krylov วิคเตอร์ที่โดดเด่นแปดคำสั่งของขนาดที่ดีกว่า พลังงานซ้ำ100×100ผม.95ผมผม=0


อืมผมมีความคิด MRRR ตอนนี้วิธีการมาตรฐานเมื่อหนึ่งเพียงแค่ต้องการไม่กี่ eigenvectors แล้ว ...
JM

kO(kn2+k2n+k3)kn

ฉันเห็น; อย่างใดฉันมีความประทับใจที่คุณต้องไตรภาคีก่อนก่อนทำ Krylov ขอบคุณ!
JM

Lanczos กำลังค่อย ๆ สร้างเมทริกซ์ tridiagonal กล่าวขึ้น
Jack Poulson

5

การทำซ้ำพลังนั้นเป็นวิธีที่ง่ายที่สุด แต่ดังที่ได้กล่าวมาแล้วมันอาจจะมาบรรจบกันช้ามากถ้าเมทริกซ์นั้นไม่ปกติมาก คุณจะได้รับปรากฏการณ์ "โคก" ที่มีลำดับปรากฏว่าแตกต่างกันสำหรับการทำซ้ำหลายครั้งก่อนที่จะแสดงพฤติกรรมเชิงซีมโทติค

ตั้งแต่เมทริกซ์ของคุณมีความสมมาตรคุณสามารถพิจารณาซ้ำ RQI ซึ่งในกรณีที่อัตราผลตอบแทนสมมาตรลูกบาศก์บรรจบ: http://en.wikipedia.org/wiki/Rayleigh_quotient_iteration

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

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