Givens-rotatie

Een givens-rotatie is in de numerieke lineaire algebra een rotatie in het vlak dat wordt gevormd door twee coördinaatassen. Givens-rotaties zijn genoemd naar de Amerikaanse wiskundige Wallace Givens (1910-1993).

Matrixvoorstelling

De givens-rotatie in wijzerzin van een vector x {\displaystyle x} over een hoek van θ {\displaystyle \theta } radialen in het vlak van de i {\displaystyle i} -de en j {\displaystyle j} -de coördinaatassen in een n {\displaystyle n} -dimensionele ruimte kan men berekenen uit het product G ( i , j , θ ) x {\displaystyle G(i,j,\theta )x} van de givens-matrix G ( i , j , θ ) {\displaystyle G(i,j,\theta )} met de vector x . {\displaystyle x.}

De givens-matrix is de vierkante n × n {\displaystyle n\times n} -matrix

G ( i , j , θ ) = [ 1 0 0 0 0 c s 0 0 s c 0 0 0 0 1 ] {\displaystyle G(i,j,\theta )={\begin{bmatrix}1&\ldots &0&\ldots &0&\ldots &0\\\vdots &\ddots &\vdots &&\vdots &&\vdots \\0&\ldots &c&\ldots &-s&\ldots &0\\\vdots &&\vdots &\ddots &\vdots &&\vdots \\0&\ldots &s&\ldots &c&\ldots &0\\\vdots &&\vdots &&\vdots &\ddots &\vdots \\0&\ldots &0&\ldots &0&\ldots &1\end{bmatrix}}}

waarin c = cos ( θ ) {\displaystyle c=\cos(\theta )} en s = sin ( θ ) {\displaystyle s=\sin(\theta )} voorkomen op de snijpunten van de i {\displaystyle i} -de en j {\displaystyle j} -de rijen en kolommen. De andere elementen op de hoofddiagonaal zijn gelijk aan 1, en alle andere elementen van een givens-matrix zijn nul. De vier elementen op de plaatsen ( i , i ) ,   ( i , j ) ,   ( j , i ) {\displaystyle (i,i),\ (i,j),\ (j,i)} en ( j , j ) {\displaystyle (j,j)} vormen de rotatiematrix van rotatie over de hoek θ {\displaystyle \theta } .

Toepassing

De givens-rotatie is numeriek stabiel. Givens-rotaties worden in numerieke lineaire algebra gebruikt om nulwaarden in vectoren en matrices te bekomen, bijvoorbeeld in het jacobi-eigenwaardealgoritme of bij de berekening van de QR-decompositie van een matrix.

QR-decompositie

In de QR-decompositie vermenigvuldigt men de matrix A {\displaystyle A} achtereenvolgens links met givens-rotaties G 1 , , G k , {\displaystyle G_{1},\ldots ,G_{k},} zodanig dat de elementen onder de hoofddiagonaal nul worden en de matrix herleid wordt tot een bovendriehoeksmatrix R {\displaystyle R} . Elke vermenigvuldiging met een givens-matrix verandert alleen de waarden in de i {\displaystyle i} -de en j {\displaystyle j} -de rij van de matrix.

R = G k G 1 A {\displaystyle R=G_{k}\ldots G_{1}A}

De inverse, of equivalent de getransponeerde, van het product van de toegepaste givens-rotaties vormt een orthogonale matrix Q , {\displaystyle Q,} zodat A = Q R . {\displaystyle A=QR.}

Als in de i {\displaystyle i} -de kolom van de matrix A {\displaystyle A} onder de diagonaal in de j {\displaystyle j} -de rij het getal b {\displaystyle b} staat, kan dat omgezet worden in 0 door een givens-rotatie G ( i , j , θ ) {\displaystyle G(i,j,\theta )} met c = cos ( θ ) {\displaystyle c=\cos(\theta )} en s = sin ( θ ) {\displaystyle s=\sin(\theta )} . Er moet voldaan worden aan:

[ c s s c ] [ a b ] = [ r 0 ] , {\displaystyle {\begin{bmatrix}c&-s\\s&c\end{bmatrix}}{\begin{bmatrix}a\\b\end{bmatrix}}={\begin{bmatrix}r\\0\end{bmatrix}},}

waarin a = A i i {\displaystyle a=A_{ii}} het element op de diagonaal is. Daaruit volgt dat:

r = a 2 + b 2 {\displaystyle r={\sqrt {a^{2}+b^{2}}}}
c = a / r {\displaystyle c=a/r}
s = b / r {\displaystyle s=-b/r}

Voorbeeld

De 3x3-matrix A {\displaystyle A} wordt met QR-decompositie herleid tot een bovendriehoeksmatrix R {\displaystyle R} met behulp van van givens-rotaties.

A = [ 6 5 0 5 1 4 0 4 3 ] {\displaystyle A={\begin{bmatrix}6&5&0\\5&1&4\\0&4&3\end{bmatrix}}}

Er zijn twee rotaties nodig om de elementen A ( 2 , 1 ) {\displaystyle A(2,1)} en A ( 3 , 2 ) {\displaystyle A(3,2)} om te zetten in 0. Noem G 1 {\displaystyle G_{1}} de givens-matrix die A ( 2 , 1 ) {\displaystyle A(2,1)} omzet in 0, dan worden

r = 6 2 + 5 2 = 61 = 7,810 2 {\displaystyle r={\sqrt {6^{2}+5^{2}}}={\sqrt {61}}=7{,}8102}
c = 6 / r = 0,768 2 {\displaystyle c=6/r=0{,}7682}
s = 5 / r = 0,640 2 {\displaystyle s=-5/r=-0{,}6402}
G 1 = [ c s 0 s c 0 0 0 1 ] {\displaystyle G_{1}={\begin{bmatrix}c&-s&0\\s&c&0\\0&0&1\end{bmatrix}}}

De matrixvermenigvuldiging G 1 A {\displaystyle G_{1}A} geeft de volgende getransformeerde matrix:

A = [ 7,810 2 4,481 3 2,560 7 0 2,432 7 3,072 9 0 4 3 ] {\displaystyle A'={\begin{bmatrix}7{,}8102&4{,}4813&2{,}5607\\0&-2{,}4327&3{,}0729\\0&4&3\end{bmatrix}}}

Noem G 2 {\displaystyle G_{2}} de givens-matrix waarmee A ( 3 , 2 ) {\displaystyle A'(3,2)} op nul gezet wordt. Daarvoor geldt

G 2 = [ 1 0 0 0 c s 0 s c ] {\displaystyle G_{2}={\begin{bmatrix}1&0&0\\0&c&-s\\0&s&c\end{bmatrix}}}

met

r = ( 2,432 7 ) 2 + 4 2 = 4,681 7 {\displaystyle r={\sqrt {(-2{,}4327)^{2}+4^{2}}}=4{,}6817}
c = 2,432 7 / r = 0,519 6 {\displaystyle c=-2{,}4327/r=-0{,}5196}
s = 4 / r = 0,854 4 {\displaystyle s=-4/r=-0{,}8544}

Met deze waarden levert de matrixvermenigvuldiging de bovendriehoeksmatrix R:

R = G 2 A = [ 7,810 2 4,481 3 2,560 7 0 4,681 7 0,966 4 0 0 4,184 3 ] {\displaystyle R=G_{2}A'={\begin{bmatrix}7{,}8102&4{,}4813&2{,}5607\\0&4{,}6817&0{,}9664\\0&0&-4{,}1843\end{bmatrix}}}

De matrix Q {\displaystyle Q} in de decompositie A = Q R {\displaystyle A=QR} wordt dan gegeven door:

Q = ( G 1 G 2 ) T {\displaystyle Q=(G_{1}G_{2})^{\text{T}}}

Dit is in dit voorbeeld de matrix:

Q = [ 0,768 2 0,332 6 0,547 0 0,640 2 0,399 2 0,656 4 0 0,854 4 0,519 6 ] {\displaystyle Q={\begin{bmatrix}0{,}7682&0{,}3326&0{,}5470\\0{,}6402&-0{,}3992&-0{,}6564\\0&0{,}8544&-0{,}5196\end{bmatrix}}}