Power iteration

Inom matematik är potens iteration (även känd som potensmetoden ) en egenvärdesalgoritm : givet en diagonaliserbar matris kommer algoritmen att producera ett tal som är det största (i absoluta tal) värde) egenvärde för , och en vektor som inte är noll , som är en motsvarande egenvektor för det vill säga . Algoritmen är också känd som Von Mises-iterationen .

Power iteration är en mycket enkel algoritm, men den kan konvergera långsamt. Den mest tidskrävande operationen av algoritmen är multiplikationen av matris med en vektor, så den är effektiv för en mycket stor gles matris med lämplig implementering.

Metoden

Animation som visualiserar kraftiterationsalgoritmen på en 2x2-matris. Matrisen avbildas av sina två egenvektorer. Felet beräknas som

Power iterationsalgoritmen börjar med en vektor , som kan vara en approximation till den dominerande egenvektorn eller en slumpmässig vektor. Metoden beskrivs av återfallsrelationen

multipliceras vektorn och normaliseras.

Om vi ​​antar att har ett egenvärde som är strikt större i magnitud än dess andra egenvärden och startvektorn har en komponent som inte är noll i riktning mot en egenvektor som är associerad med det dominanta egenvärdet , då konvergerar en undersekvens till en egenvektor som är associerad med det dominanta egenvärdet.

konvergerar inte sekvensen I denna sekvens,

,

där är en egenvektor associerad med det dominanta egenvärdet, och . Närvaron av termen antyder att inte konvergerar om inte . Under de två antaganden som anges ovan definieras sekvensen

konvergerar till det dominanta egenvärdet (med Rayleigh-kvoten ) . [ förtydligande behövs ]

Man kan beräkna detta med följande algoritm (visas i Python med NumPy):



   

   
    
    
    
      

       
        
           

        
          

        
            

     

     #!/usr/bin/env python3  importera  numpy  som  np  def  power_iteration  (  A  ,  num_iterations  :  int  ):  # Välj helst en slumpmässig vektor  # För att minska chansen att vår vektor  # är ortogonal mot egenvektorn  b_k  =  np  .  slumpmässigt  .  rand  (  A.  form  [  1  ])  för  _  i  intervallet  (  antal_iterationer  ):  # beräkna matris-för-vektor-produkten  Ab  b_k1  =  np  .  dot  (  A  ,  b_k  )  # beräkna normen  b_k1_norm  =  np  .  linalg  .  norm  (  b_k1  )  # åternormalisera vektorn  b_k  =  b_k1  /  b_k1_norm  return  b_k  power_iteration  (  np  .  array  ([[  0.5  ,  0.5  ],  [  0.2  ,  0.8  ]]),  10  ) 

Vektorn till en associerad egenvektor. Helst bör man använda Rayleigh-kvoten för att få det associerade egenvärdet.

Denna algoritm används för att beräkna Google PageRank .

Metoden kan också användas för att beräkna spektralradien ( egenvärdet med den största magnituden, för en kvadratisk matris) genom att beräkna Rayleigh-kvoten

Analys

Låt brytas upp i sin Jordan-kanoniska form : , där den första kolumnen i är en egenvektor för som motsvarar det dominanta egenvärdet . Eftersom det dominerande egenvärdet för är det första Jordan-blocket i matrisen där är det största egenvärdet för A i magnitud. Startvektorn kan skrivas som en linjär kombination av kolumnerna i V :

Enligt antagandet har en komponent som inte är noll i riktning mot det dominanta egenvärdet, så .

Den beräkningsmässigt användbara upprepningsrelationen för kan skrivas om som:

där uttrycket: är mer mottaglig för följande analys.

Uttrycket ovan förenklas som

Gränsen följer av det faktum att egenvärdet för är mindre än 1 i storleken, så

Det följer att:

Med detta faktum kan skrivas i en form som understryker dess relation till när k är stor:

där och som

Sekvensen är avgränsad, så den innehåller en konvergent undersekvens. Observera att egenvektorn som motsvarar det dominanta egenvärdet endast är unik upp till en skalär, så även om sekvensen ( kanske inte konvergerar, är nästan en egenvektor till A för stor k .

Alternativt, om A är diagonaliserbar , ger följande bevis samma resultat

Låt λ 1 , λ 2 , ..., λ m vara m egenvärdena (räknade med multiplicitet) för A och låt v 1 , v 2 , ..., v m vara motsvarande egenvektorer. Antag att är det dominanta egenvärdet, så att för .

Den initiala vektorn kan skrivas:

Om väljs slumpmässigt (med enhetlig sannolikhet), då c 1 ≠ 0 med sannolikhet 1 . Nu,

Å andra sidan:

Därför konvergerar till (en multipel av) egenvektorn . Konvergensen är geometrisk , med förhållande

där anger det andra dominanta egenvärdet. Således konvergerar metoden långsamt om det finns ett egenvärde nära det dominerande egenvärdet i storlek.

Ansökningar

Även om power iterationsmetoden endast approximerar ett egenvärde av en matris, förblir den användbar för vissa beräkningsproblem . Till exempel Google den för att beräkna PageRank för dokument i deras sökmotor, och Twitter använder den för att visa användarnas rekommendationer om vilka de ska följa. Power iteration-metoden är särskilt lämplig för glesa matriser , såsom webbmatrisen, eller som den matrisfria metoden som inte kräver att koefficientmatrisen explicit lagras, utan istället kan komma åt en funktionsutvärderande matrisvektor produkter . För icke-symmetriska matriser som är välkonditionerade kan power iterationsmetoden överträffa mer komplex Arnoldi iteration . För symmetriska matriser används effektiterationsmetoden sällan, eftersom dess konvergenshastighet lätt kan ökas utan att offra den lilla kostnaden per iteration; se t.ex. Lanczos iteration och LOBPCG .

Några av de mer avancerade egenvärdesalgoritmerna kan förstås som variationer av effektiterationen. Till exempel tillämpar den inversa iterationsmetoden potensiteration på matrisen . Andra algoritmer tittar på hela delutrymmet som genereras av vektorerna . Detta underrum är känt som Krylov-underrummet . Det kan beräknas med Arnoldi iteration eller Lanczos iteration .

Se även