Nilai eigen terkecil tanpa terbalik

11

Misalkan adalah matriks pasti simetris, positif. cukup besar sehingga mahal untuk menyelesaikan secara langsung. A A x = bARn×nAAx=b

Adakah algoritma iteratif untuk menemukan nilai eigen terkecil dari yang tidak melibatkan pembalikan di setiap iterasi?AAA

Artinya, saya harus menggunakan algoritma iteratif seperti gradien konjugasi untuk menyelesaikan , jadi berulang kali menerapkan sepertinya seperti "lingkaran dalam" yang mahal. Saya hanya perlu vektor eigen tunggal.A - 1Ax=bA1

Terima kasih!

Justin Solomon
sumber
1
Sudahkah Anda mencoba menggunakan dekomposisi Cholesky? Anda harus memasukkan faktor A ke LLT dengan L menjadi matriks segitiga. Setelah Anda memiliki faktorisasi (Anda hanya melakukan ini sekali), Anda dapat menggunakannya di setiap iterasi untuk menyelesaikan sistem dengan sangat cepat dengan substitusi maju dan mundur.
Juan M. Bello-Rivas
Apakah matriks jarang?
Tolga Birdal
memiliki beberapa struktur blok, tetapi saya lebih suka tidak mengacaukannya jika saya tidak perlu - jadi saya mencari "metode bebas matriks." Algoritma "LOBPCG" memiliki beberapa janji, saya pikir! @Juan, faktorisasi Cholesky masih cukup mahal. A
Justin Solomon
Jika Anda menggunakan matlab atau oktaf gunakan eigs-routine. Ini adalah metode berulang. Ada beberapa opsi untuk menentukan nilai eigen yang Anda inginkan, mis . Real terkecil .
sebastian_g
Saya mengerti dan memang menggunakan eigs di matlab. Tapi jika Anda menentukan pilihan seperti "sm" di eigs, maka membutuhkan kebalikan dari bukan A . Lihat tabel dalam dokumentasi: mathworks.com/help/matlab/ref/eigs.htmlAA
Justin Solomon

Jawaban:

13
  1. Hitung nilai eigen dengan magnitudo terbesar dari A (dengan, katakanlah, ).λmaxAeigs('lm')

  2. Kemudian menghitung besarnya terbesar (negatif) nilai eigen λ m a x dari M = A - λ m a x I (sekali lagi, melalui panggilan standar untuk ).λ^maxM=AλmaxIeigs('lm')

  3. λ^max+λmax=λmin(A)

  4. Cari eigenvector Anda oleh pemecahan .( A - λ m i n I ) v = 0v(AλminI)v=0

GoHokies
sumber