Cách hiệu quả nhất để tính toán hàm riêng của một ma trận dày đặc tương ứng với giá trị riêng có độ lớn lớn nhất là gì?


10

Tôi có một ma trận vuông đối xứng thực dày đặc. Kích thước khoảng 1000x1000. Tôi cần tính toán thành phần chính đầu tiên và tự hỏi thuật toán tốt nhất để làm điều này có thể là gì.

Có vẻ như MATLAB sử dụng thuật toán Arnoldi / Lanczos (for eigs). Nhưng từ khi đọc về chúng, tôi không chắc liệu chúng có bất kỳ lợi thế nào so với việc lặp lại sức mạnh đơn giản hay không , vì ma trận của tôi không thưa thớt và tôi chỉ quan tâm đến trình xác định đầu tiên.

Bất kỳ đề xuất thuật toán nhanh nhất trong trường hợp này là gì?


1
Trên máy tính của tôi, trên ma trận đối xứng 1000 X 1000 được tạo ngẫu nhiên, hàm "eigen" trong R mất khoảng một giây để tính tất cả các giá trị riêng và vectơ, làm tròn lên. Số dặm của bạn có thể thay đổi, nhưng tôi nghi ngờ sự lựa chọn thuật toán của bạn tạo ra bất kỳ sự khác biệt nào về thời gian như thế.

Vâng, điều đó đúng tất nhiên. Tôi không thực sự quan tâm đến việc làm cho chương trình của tôi chạy nhanh hơn. Tôi chỉ tò mò liệu các kỹ thuật phức tạp hơn được đề cập cũng được coi là vượt trội trong trường hợp sử dụng này (dày đặc, chỉ là trình sinh riêng đầu tiên), hoặc liệu có các kỹ thuật khác nhau cho ma trận dày đặc.

Bạn có nghĩa là eigenvector tương ứng với giá trị riêng lớn nhất hoặc nhỏ nhất? Nghe có vẻ như bạn muốn trước đây.
Jack Poulson

Vâng, eigenvector đúng với giá trị riêng với cường độ lớn nhất.
Mika Fischer

Câu trả lời:


12

Phương pháp nhanh nhất có thể sẽ phụ thuộc vào phổ và tính quy phạm của ma trận của bạn, nhưng trong mọi trường hợp, thuật toán Krylov nên hoàn toàn tốt hơn so với phép lặp công suất. GW Stewart có một cuộc thảo luận thú vị về vấn đề này trong Chương 4, Phần 3 của Thuật toán Ma trận, Tập II: Hệ thống Eigens :

AuAkuAku

100×100i.95ii=0


Hmm, tôi đã nghĩ rằng MRRR bây giờ là phương pháp tiêu chuẩn khi người ta chỉ muốn một vài người bản địa ...
JM

kO(kn2+k2n+k3)kn

Tôi hiểu rồi; bằng cách nào đó tôi đã có ấn tượng rằng bạn cần phải tridia Crossize trước khi làm Krylov. Cảm ơn!
JM

Lanczos đang thực sự dần dần xây dựng ma trận ba biến.
Jack Poulson

5

Lặp lại công suất là đơn giản nhất, nhưng như đã đề cập ở trên, nó có thể sẽ hội tụ rất chậm nếu ma trận rất không bình thường. Bạn nhận được một hiện tượng "bướu" trong đó trình tự xuất hiện để phân kỳ cho nhiều lần lặp lại trước khi hành vi tiệm cận bắt đầu.

Vì ma trận của bạn là đối xứng, bạn có thể xem xét các lần lặp RQI, trong trường hợp đối xứng sẽ mang lại sự hội tụ khối: http://en.wikipedia.org/wiki/Rayleigh_quotient_iteration .

Điều làm cho các phép lặp Arnoldi hoặc Lanczos rất hay (ít nhất là theo ý kiến ​​của tôi, nhưng tôi không nghiên cứu đại số tuyến tính số) là chúng rất linh hoạt. Thông thường có thể kiểm soát giá trị bản địa nào họ cung cấp cho bạn và số lượng bạn nhận được. Điều này đặc biệt đúng trong trường hợp đối xứng (và thậm chí tốt hơn nếu ma trận của bạn là xác định). Đối với các vấn đề đối xứng họ rất mạnh mẽ. Là một hộp đen, chúng hoạt động tốt, nhưng chúng cũng rất dễ tiếp nhận thông tin vấn đề mới, chẳng hạn như khả năng giải quyết các hệ thống liên quan đến ma trận.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.