Jacobi-eigenwaardealgoritme

Het jacobi-eigenwaardealgoritme is een iteratief algoritme uit de numerieke wiskunde, dat gebruikt wordt om alle eigenwaarden en eigenvectoren van kleine symmetrische matrices te berekenen. Het algoritme werd in het midden van de 19e eeuw door de Duitse wiskundig Carl Jacobi ontwikkeld.

Algoritme

Voor een reële, symmetrische n × n {\displaystyle n\times n} -matrix A {\displaystyle A} geldt:

D = S T A S {\displaystyle D=S^{T}AS} ,

waarin D = d i a g ( λ 1 , , λ n ) {\displaystyle D=\mathrm {diag} (\lambda _{1},\ldots ,\lambda _{n})} de diagonaalmatrix van eigenwaarden van A {\displaystyle A} is en S {\displaystyle S} kolomsgewijs de bijbehorende eigenvectoren van A {\displaystyle A} bevat.

Het achterliggende idee bij het jacobi-eigenwaardealgoritme bestaat eruit om steeds het grootste element buiten de diagonaal van A {\displaystyle A} met behulp van een Givens-rotatie naar 0 te brengen, om op die manier meer en meer de diagonaalmatrix te benaderen.

Er geldt het volgende iteratievoorschrift

A ( 0 ) = A A ( k + 1 ) = R k T A ( k ) R k = R k T R k 1 T R 0 T S k T A ( 0 ) R 0 R k 1 R k S k {\displaystyle {\begin{array}{lll}A^{(0)}&=&A\\A^{(k+1)}&=&R_{k}^{T}A^{(k)}R_{k}=\underbrace {R_{k}^{T}R_{k-1}^{T}\ldots R_{0}^{T}} _{S_{k}^{T}}A^{(0)}\underbrace {R_{0}\ldots R_{k-1}R_{k}} _{S_{k}}\end{array}}}

met R k = [ 1 0 0 0 0 cos φ sin φ 0 0 sin φ cos φ 0 0 0 0 1 ] , {\displaystyle R_{k}={\begin{bmatrix}1&\cdots &0&\cdots &0&\cdots &0\\\vdots &\ddots &\vdots &&\vdots &&\vdots \\0&\cdots &\cos \varphi &\cdots &\sin \varphi &\cdots &0\\\vdots &&\vdots &\ddots &\vdots &&\vdots \\0&\cdots &-\sin \varphi &\cdots &\cos \varphi &\cdots &0\\\vdots &&\vdots &&\vdots &\ddots &\vdots \\0&\cdots &0&\cdots &0&\cdots &1\end{bmatrix}},}

waarbij cos φ {\displaystyle \cos \varphi } en sin φ {\displaystyle \sin \varphi } steeds in de p {\displaystyle p} -de en q {\displaystyle q} -de ( p < q ) {\displaystyle (p<q)} rij en kolom staan en a p q ( k ) {\displaystyle a_{pq}^{(k)}} het absoluut grootste buitendiagonaalelement van A ( k ) {\displaystyle A^{(k)}} voorstelt, dus is voor alle 1 i , j n , i j {\displaystyle 1\leq i,j\leq n,i\neq j}

| a p q ( k ) | | a i j ( k ) | {\displaystyle |a_{pq}^{(k)}|\geq |a_{ij}^{(k)}|}

De elementen van R k {\displaystyle R_{k}} volgen dan uit de volgende overweging:

De transformatie R k T A ( k ) R k {\displaystyle R_{k}^{T}A^{(k)}R_{k}} zorgt speciaal voor de elementen op de kruising van de p {\displaystyle p} -de en q {\displaystyle q} -de rij en kolom voor de volgende veranderingen:

a p p ( k + 1 ) = a p p ( k ) cos 2 φ 2 a p q ( k ) cos φ sin φ + a q q ( k ) sin 2 φ a q q ( k + 1 ) = a p p ( k ) sin 2 φ + 2 a p q ( k ) cos φ sin φ + a q q ( k ) cos 2 φ a p q ( k + 1 ) = a q p ( k + 1 ) = ( a p p ( k ) a q q ( k ) ) cos φ sin φ + a p q ( k ) ( cos 2 φ sin 2 φ ) {\displaystyle {\begin{array}{lll}a_{pp}^{(k+1)}&=&a_{pp}^{(k)}\cos ^{2}\varphi -2a_{pq}^{(k)}\cos \varphi \sin \varphi +a_{qq}^{(k)}\sin ^{2}\varphi \\a_{qq}^{(k+1)}&=&a_{pp}^{(k)}\sin ^{2}\varphi +2a_{pq}^{(k)}\cos \varphi \sin \varphi +a_{qq}^{(k)}\cos ^{2}\varphi \\a_{pq}^{(k+1)}&=&a_{qp}^{(k+1)}=(a_{pp}^{(k)}-a_{qq}^{(k)})\cos \varphi \sin \varphi +a_{pq}^{(k)}(\cos ^{2}\varphi -\sin ^{2}\varphi )\end{array}}}

Aangezien a p q ( k + 1 ) = 0 {\displaystyle a_{pq}^{(k+1)}=0} moet zijn, volgt hieruit voor

Θ = a q q ( k ) a p p ( k ) 2 a p q ( k ) = cot 2 φ = 1 tan 2 φ 2 tan φ {\displaystyle \Theta ={\frac {a_{qq}^{(k)}-a_{pp}^{(k)}}{2a_{pq}^{(k)}}}=\cot 2\varphi ={\frac {1-\tan ^{2}\varphi }{2\tan \varphi }}}

dat

tan φ = { 1 Θ + sgn Θ 1 + Θ 2 Θ 0 1 Θ = 0 {\displaystyle \tan \varphi ={\begin{cases}{\frac {1}{\Theta +\operatorname {sgn} \Theta {\sqrt {1+\Theta ^{2}}}}}&\Theta \not =0\\1&\Theta =0\end{cases}}}

en dus

cos φ = 1 1 + tan 2 φ , sin φ = tan φ cos φ {\displaystyle \cos \varphi ={\frac {1}{\sqrt {1+\tan ^{2}\varphi }}},\quad \sin \varphi =\tan \varphi \cos \varphi }

Aangezien de rotatiematrices orthogonaal zijn en producten van orthogonale matrices ook weer orthogonaal zijn, wordt op deze wijze een orthogonale gelijksoortigheidstransformatie beschreven. Men kan aantonen dat de rij van matrices A ( k ) {\displaystyle A^{(k)}} naar een diagonaalmatrix convergeert. Deze matrix moet op grond van de gelijksoortigheid dezelfde eigenwaarden bezitten.

A ( k )   k d i a g ( λ 1 , , λ n ) {\displaystyle A^{(k)}\ {\xrightarrow[{k\rightarrow \infty }]{}}\,\mathrm {diag} (\lambda _{1},\ldots ,\lambda _{n})}

Over het algemeen volstaan 5 n {\displaystyle 5n} bewerkingen voor een n × n {\displaystyle n\times n} -matrix.

Klassiek en cyclisch jacobi-eigenwaardealgoritme

Bij het klassieke jacobi-eigenwaardealgoritme wordt bij elke iteratie het op dat moment grootste element op nul gezet. Aangezien het cyclische jacobi-eigenwaardealgoritme daarentegen juist naar dit grootste element zoekt, wordt daar bij iedere iteratie steeds een Givens-rotatie op elk element binnen de strikte bovendriehoek uitgevoerd.

Referenties

  • (de) Kaspar Nipp, Daniel Stoffer: Lineare Algebra: Eine Einführung für Ingenieure unter besonderer Berücksichtigung numerischer Aspekte (Lineaire algebra: een introductie voor ingenieurs met bijzondere inachtneming van de numerieke aspecten) VDF Hochschulverlag AG 2002, ISBN 978-3-7281-2818-8. Abschnitt 10.2 (S. 222-228) ((de) beperkte online-version (Google Books))
  • (en) Website van de Fullerton Universiteit over het jacobi-eigenwaardealgoritme (inclusief een verzameling links