Rayleighova kvocientová iterace - Rayleigh quotient iteration
Rayleighova kvocientová iterace je algoritmus vlastních čísel což rozšiřuje myšlenku inverzní iterace pomocí Rayleighův kvocient získat stále přesnější vlastní číslo odhady.
Rayleighova kvocientová iterace je iterační metoda, to znamená, že poskytuje sled přibližných řešení, která konverguje ke skutečnému řešení v limitu. Je zaručena velmi rychlá konvergence a pro získání přiměřené aproximace není v praxi zapotřebí více než několik iterací. Rayleighův kvocient iterační algoritmus kubicky konverguje pro hermitovské nebo symetrické matice, daný počáteční vektor, který je dostatečně blízko k vlastní vektor z matice to je analyzováno.
Algoritmus
Algoritmus je velmi podobný inverzní iteraci, ale nahradí odhadovanou vlastní hodnotu na konci každé iterace Rayleighovým kvocientem. Začněte výběrem nějaké hodnoty jako počáteční odhad vlastního čísla pro hermitovskou matici . Počáteční vektor musí být také dodáno jako počáteční odhad vlastního vektoru.
Vypočítejte další aproximaci vlastního vektoru podle
kde je matice identity a nastaví další aproximaci vlastního čísla na Rayleighův kvocient aktuální iterace rovný
Pro výpočet více než jedné vlastní hodnoty lze algoritmus kombinovat s deflační technikou.
U velmi malých problémů je výhodné vyměnit inverzní matice s doplnit, který přinese stejnou iteraci, protože se rovná inverzní až do irelevantní stupnice (konkrétně inverzní k determinantu). Adjugát je snazší vypočítat explicitně než inverzní (i když je inverzní snazší použít na vektor pro problémy, které nejsou malé), a je numericky zřetelnější, protože zůstává dobře definovaný jako konvergující vlastní hodnota.
Příklad
Zvažte matici
pro které jsou přesná vlastní čísla , a , s odpovídajícími vlastními vektory
- , a .
(kde je zlatý řez).
Největší vlastní hodnota je a odpovídá libovolnému vlastnímu vektoru úměrnému
Začínáme s počátečním odhadem vlastního čísla
- .
Poté se získá první iterace
druhá iterace,
a třetí,
ze kterého je patrná kubická konvergence.
Implementace oktávy
Následuje jednoduchá implementace algoritmu v Oktáva.
funkceX =rayleigh(A, epsilon, mu, x)X = X / norma(X); % operátor zpětného lomítka v Octave řeší lineární systém y = (A - mu * oko(řádky(A))) \ X; lambda = y' * X; mu = mu + 1 / lambda chybovat = norma(y - lambda * X) / norma(y) zatímco err> epsilon X = y / norma(y); y = (A - mu * oko(řádky(A))) \ X; lambda = y' * X; mu = mu + 1 / lambda chybovat = norma(y - lambda * X) / norma(y) koneckonec