50x50 matrisin en büyük özdeğerini bulmak için SVD - önemli miktarda zaman harcıyor muyum?


13

Hepsinde tekil değerli ayrışmalar gerçekleştirerek birçok gerçek simetrik 50x50 matrisin en büyük öz değerini hesaplayan bir programım var. SVD, programdaki bir darboğazdır.

En büyük öz değeri bulmakta çok daha hızlı algoritmalar var mı, yoksa bu kısmı optimize etmek yatırımın fazla geri dönüşünü sağlamaz mı?


Matrisleriniz hakkında daha fazla bilgi verebilir misiniz, örneğin yapıları, özdeğerlerinin aralığı veya birbirine benzerlikleri hakkında bir şey biliniyorsa?
Pedro

Bu bir kovaryans matrisi ( ). Testler, 5 ya da daha büyük en büyük özdeğerler hariç hepsinin sıfıra yakın olduğunu ve en büyük özdeğerin ikinci en büyük özdeğerden en az ~% 20 daha büyük olduğunu göstermektedir. Sıfıra yakın çok fazla özdeğer olduğundan, aralığın önemli olmadığını düşünüyorum? Herhangi bir aralığa yeniden ölçeklendirilebilir. Kullandığım ölçek şu anda bana 150 ~ 200 aralığı veriyor. XXT
Anna

Ayrıca, matris çok tekil değildir, bu nedenle SVD problemi iyi koşullandırılmıştır.
Anna

Yana simetrik ve pozitif (yarı) kesin yerine SVD Cholesky çarpanlara kullanabilir. Cholesky çarpanlarına ayırma işlemi SVD'den çok daha az flop gerektirir ancak kesin bir yöntem olması hala flop gerektirir. O ( n 3 )XXTO(n3)
Ken

@Anna: Burada önerilen birçok yaklaşımı denediniz mi? Sizin için pratikte en iyi neyin işe yaradığını bilmek oldukça ...
Pedro

Yanıtlar:


12

En büyük özdeğer için ihtiyacınız olan hassasiyete bağlı olarak, Güç Yinelemesini kullanmayı deneyebilirsiniz .

Spesifik örneğiniz için, açıkça , ancak her yinelemede hesaplayacağım . İşlem gerektirecektir işlemleri matris vektör ürün gerektirir, oysa sadece . x X ( X T x ) A O ( n 3 ) O ( n 2 )A=XXTxX(XTx)AO(n3)O(n2)

Yakınsama oranı, en büyük iki özdeğer arasındaki ayrılığa bağlıdır, bu nedenle bu her durumda iyi bir çözüm olmayabilir,


1
En büyük özdeğer bir sonrakinden% 20 daha büyükse, güç yinelemesi oldukça hızlı bir şekilde birleşmelidir (diğer tüm özdeğerler her bir yinelemede 5/6 faktör tarafından sönümlenir, böylece her 13 yineleme için bir basamak alırsınız.
Wolfgang Bangerth

2
Krylov altuzay yöntemleri, aynı yineleme ile güç yinelemesinden vektör içerdikleri için güç yöntemlerinden kesinlikle daha iyidir.
Jack Poulson

1
@JackPoulson: Evet, ama her yinelemenin hesaplanması daha pahalı ... Böyle küçük bir problem için gerçekten buna değer mi?
Pedro

@Pedro: tabii ki, matvecler kuadratik çalışma gerektirir ve Rayleigh bölüm eigensolve ve müteakip genişleme kıyaslandığında önemsizdir.
Jack Poulson

1
Kod gideri? @JackPoulson bu konuyu gündeme getirdiğinden , B. Parlett ve arkadaşları (1982) ("En büyük öz değeri Lanczos Algoritması ile Tahmin Üzerine") güç yöntemini, güç yöntemini + Aitken hızlandırmasını ve gerçek bir en büyük öz değeri hedefleyen Lanczos uygulamasını simetrik (veya Hermitiyen) poz. def. matris. Lanczos yönteminin, mütevazı bir doğruluk (ikinciye göre ilk özdeğer) bile gerekli olduğunda ve daha iyi uyumsuzluktan kaçınmanın daha verimli olduğu sonucuna varmışlardır.
Hardmath

5

Sadece 5 özdeğer çok önemliyse , matris-vektör çarpanı olarak ile Lanczsos algoritması, 5 başlangıç ​​adımından sonra hızlı doğrusal yakınsama sağlamalı, bu nedenle birkaç iterasyon ile oldukça doğru bir büyük özdeğer vermelidir.X(XTx)


Uygun şekilde basitleştirilmiş ( ) gibi bir şey mi düşünüyorsunuz (@ArnoldNeumaier )? Aynı Krylov altuzayı üzerinde üçüncü bir vektör korunursa Lanczos'tan farklı bir yaklaşım vermesi ilginçtir. B=T=I
hardmath

Hayır; Standart Lanczsos algoritmasını kastediyordum ama acele CG yazmıştım. Şimdi düzeltildi.
Arnold Neumaier

4

gibi pozitif yarı tanımlı bir matris için, bir spektrum kayması ile yakınsamayı hızlandırmak çabaya değebilir . Bu, uygun bir skaler olduğu seçilir ve güç uygulanmış, yerine μ A - μ I AA=XXTμAμIA .

Temel güç yönteminin birkaç tekrarı size kaba bir tahmin vermelidiren büyük özdeğer . Baskın özdeğer 1'in çokluğu varsa ve diğerlerinin , o zaman büyük özdeğer sahip olurdum ve diğerleri .λ 1 [ 0 , 5||Ax||/||x||λ1A-5[0,56λ1]7A512λ1I[-5712λ1[512λ1,512λ1]

Başka bir deyişle, en büyük öz değerin hakimiyetini bir sonraki en büyük öz değere göre% 20'den, bir sonraki en büyük özdeğer değerine göre% 40'a çıkaracaksınız. Güç yönteminin geometrik yakınsaması buna göre hızlanacaktır. en büyük öz değeri yeterli doğruluğa ulaştığında , , alınmış olan vardiya geri eklenerek tahmin edilir .λ 1 μAμIλ1μ

Açıkça oluşturmayan gerektiğini not için hala ile hesaplanabilir çaba.( A - μ I ) x = X ( X T x ) - μ x O ( n 2 )AμI(AμI)x=X(XTx)μxO(n2)


Bu, ikinci en büyük özdeğer büyüklüğünün ne olduğu konusunda iyi bir fikir sahibi olmayı gerektiriyor gibi görünmektedir. Böyle bir durumda nasıl tahmin edersiniz?
Pedro

λ1|λ2|/|λ1||λ2|/|λ1|λ2λ1istenirse. Anna'nın Sorunun altındaki yorumlarında açıkladığı gibi bir durumda ne fayda sağlayacağınızı öneriyordum.
hardmath
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.