En büyük büyüklüğün özdeğerine karşılık gelen yoğun bir matrisin özvektörünü hesaplamanın en etkili yolu nedir?


10

Yoğun gerçek simetrik bir kare matrisim var. Boyut yaklaşık 1000x1000'dir. İlk temel bileşeni hesaplamak ve bunu yapmak için en iyi algoritma ne olabilir merak ediyorum.

MATLAB, Arnoldi / Lanczos algoritmalarını (for eigs) kullanıyor gibi görünüyor . Ama onlar hakkında okumadan, basit güç yinelemesine göre herhangi bir avantajları olup olmadığından emin değilim , çünkü matrisim seyrek değil ve sadece ilk özvektörle ilgileniyorum.

Herhangi bir öneri bu durumda en hızlı algoritma nedir?


1
Bilgisayarımda, rastgele oluşturulmuş 1000 X 1000 simetrik bir matriste, R'deki "öz" fonksiyonunun, tüm özdeğerleri ve vektörleri hesaplaması yaklaşık bir saniye sürdü. Kilometreniz değişebilir, ancak algoritma seçiminizin böyle zamanlamalarda herhangi bir fark yarattığından şüpheliyim.

Evet, elbette doğru. Programımın daha hızlı çalışmasını gerçekten istemiyorum. Bahsedilen daha karmaşık tekniklerin de bu kullanım durumunda (yoğun, sadece ilk özvektör) üstün olup olmadığını veya yoğun matrisler için farklı tekniklerin olup olmadığını merak ediyorum.

Yani en büyük veya en küçük öz değere karşılık gelen özvektör mü demek istediniz? İlkini istiyormuşsunuz gibi geliyor.
Jack Poulson

Evet, özvektör en büyük büyüklükteki özdeğerle uyumludur.
Mika Fischer

Yanıtlar:


12

En hızlı yöntem muhtemelen matrisinizin spektrumuna ve normalliğine bağlı olacaktır, ancak her durumda Krylov algoritmaları kesinlikle güç yinelemesinden daha iyi olmalıdır. GW Stewart, Matrix Algorithms, Cilt II: Eigensystems Bölüm 4, Bölüm 3'te bu konuyla ilgili güzel bir tartışmaya sahiptir :

Güç yöntemi, baskın bir özepaire sahip olması durumunda üzerinde hafif kısıtlamalar altında olması durumunda , vektörlerinin baskın özvektör için giderek daha doğru yaklaşımlar ürettiği gözlemine dayanır . Bununla birlikte, her adımda güç yöntemi , daha önce oluşturulan vektörlerde bulunan bilgilerin dışarı atılmasına karşılık gelen tek bir vektörünü dikkate alır . Bu bilginin değerli olduğu ortaya çıkıyor ... "birubirkubirku

ve diyagonal matris için, 'diyagonal değeri ( sayma) olarak ayarlanmış olarak , 25 yinelemeden sonra Krylov altuzayının egemen özvektör sekiz büyüklük sırasını yakaladığını göstermeye devam ediyor güç yinelemesinden daha iyi.100x100ben0,95benben=0


Hmm, MRRR'nin sadece birkaç özvektör istediği zaman standart yöntem olduğunu düşünürdüm ...
JM

MRRR, simetrik tridiagonal matrisler üzerinde çalışır ve bu nedenle yoğun matrisler için kullanmak için, genel olarak kübik çalışma alan benzerlik dönüşümleri ile yoğun matrisi tridiagonal forma indirgemek gerekir. Krylov yöntemi için sadece matris-vektör çarpımı gerekiyorsa, çalışması gereklidir. Eğer göre çok küçükse , Krylov yöntemleri kazanmalıdır. kÖ(kn2+k2n+k3)kn
Jack Poulson

Anlıyorum; her nasılsa Krylov'u yapmadan önce ilk önce tridiagonalleşmeniz gerektiği izlenimini edindim. Teşekkürler!
JM

Lanczos aslında yavaş yavaş adı geçen üçgen matrisi oluşturuyor.
Jack Poulson

5

Güç yinelemesi en basit olanıdır, ancak yukarıda belirtildiği gibi , matris çok normal değilse çok yavaş bir şekilde birleşecektir . Asimptotik davranış devreye girmeden önce dizinin birçok iterasyon için farklılaştığı "kambur" bir fenomen alırsınız.

Matrisiniz simetrik olduğundan, simetrik durumda kübik yakınsama sağlayan RQI iterasyonlarını düşünebilirsiniz: http://en.wikipedia.org/wiki/Rayleigh_quotient_iteration .

Arnoldi veya Lanczos iterasyonlarını çok güzel yapan şey (en azından benim düşünceme göre, ancak sayısal lineer cebiri araştırmıyorum) çok yönlü olmalarıdır. Size hangi özdeğerleri verdiklerini ve kaç tane aldıklarını kontrol etmek genellikle mümkündür. Bu özellikle simetrik durumda geçerlidir (ve matrisiniz kesinse daha da iyidir). Simetrik problemler için çok sağlamdırlar. Bir kara kutu olarak iyi çalışırlar, ancak matrisi içeren sistemleri çözme yeteneği gibi yeni sorun bilgilerine de çok açıktırlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.