Givens tur

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 7. november 2021; checks kræver 2 redigeringer .

Giver rotation -in lineær algebra , en lineær operator til at rotere en vektor med en given vinkel .

Givens matrix [1] [2] [3]

Givens-matricen har følgende form:

Denne matrix adskiller sig kun fra identitetsmatrixen ved hjælp af submatrixen

placeret på rækker og kolonner med tal og . Er ortogonal.

Hvis en vektor , er givet , så vælges

cos ⁡ ϕ = -en k -en k 2 + -en l 2 {\displaystyle \cos {\phi }={\frac {a_{k}}{\sqrt {a_{k}^{2}+a_{l}^{2))))} synd ⁡ ϕ = − -en l -en k 2 + -en l 2 {\displaystyle \sin {\phi }={\frac {-a_{l}}{\sqrt {a_{k}^{2}+a_{l}^{2))))}

du kan sætte den th komponent af vektoren til nul :

[ cos ⁡ ϕ − synd ⁡ ϕ synd ⁡ ϕ cos ⁡ ϕ ] [ -en k -en l ] = [ cos ⁡ ϕ ⋅ -en k − synd ⁡ ϕ ⋅ -en l synd ⁡ ϕ ⋅ -en k + cos ⁡ ϕ ⋅ -en l ] = [ -en k 2 + -en l 2 -en k 2 + -en l 2 − -en l ⋅ -en k + -en k ⋅ -en l -en k 2 + -en l 2 ] = [ -en k 2 + -en l 2 0 ] {\displaystyle {\begin{bmatrix}\cos {\phi}&-\sin {\phi}\\\sin {\phi}&\cos {\phi}\end{bmatrix)){\begin{bmatrix} a_{k}\\a_{l}\end{bmatrix}}={\begin{bmatrix}\cos {\phi }\cdot a_{k}-\sin {\phi}\cdot a_{l}\\ \sin {\phi }\cdot a_{k}+\cos {\phi }\cdot a_{l}\end{bmatrix))={\begin{bmatrix}{\frac {a_{k}^{2} +a_{l}^{2}}{\sqrt {a_{k}^{2}+a_{l}^{2}}}}\\{\frac {-a_{l}\cdot a_{k }+a_{k}\cdot a_{l}}{\sqrt {a_{k}^{2}+a_{l}^{2}}}}\end{bmatrix}}={\begin{bmatrix} {\sqrt {a_{k}^{2}+a_{l}^{2}}}\\0\end{bmatrix}}}

Ved hjælp af Givens rotationer kan man beregne QR-nedbrydningen af ​​matricer og tegne hermitiske matricer til en tridiagonal form.

Brug af Givens-matricer til tridiagonalisering

Lad os reducere en symmetrisk matrix til en tridiagonal form:

Hvor . Så gange vi det med Givens rotationsmatrix :. er den transponerede matrix. Dette vil kun ændre elementerne og

Her betegner primtal det element, der vises efter rotationen. Lad os vælge koefficienterne , så det off-diagonale element sættes til nul og forholdet mellem og med og

Derefter:

En sådan rotation anvendes sekventielt for at nulstille alle elementerne i den første række, undtagen de to første. Det vil sige (1,2), (1,3), (1,4)...(1,n) Derefter den anden linje (2,3),(2, 4)...(2) ,n)

C++ kode:

for ( ufortegn int i = 0 ; i < N -1 ; ++ i ) { for ( ufortegn int j = i + 2 ; j < N ; ++ j ) { t = 2 * matr [ i ][ j ] / ( matr [ i ][ i ] - matr [ j ][ j ]); phi = 0,5 * atan ( t ); c = cos ( phi ); s = sin ( phi ); bii = c * c * matr [ i ][ i ] + 2 * c * s * matr [ i ][ j ] + s * s * matr [ j ][ j ]; bij = s * c * ( matr [ j ][ j ] - matr [ i ][ i ]) + matr [ i ][ j ] * ( c * c - s * s ); bjj = s * s * matr [ i ][ i ] + c * c * matr [ j ][ j ] - 2 * c * s * matr [ i ][ j ]; bji = bij ; matr [ i ][ i ] = bii ; matr [ i ][ j ] = ved ; matr [ j ][ i ] = bji ; matr [ j ][ j ] = bjj ; } }

Noter

  1. Tyrtyshnikov E. E. Metoder til numerisk analyse. - M. , 2006. - S. 73-74.
  2. Björck, Åke, 1934-. Numeriske metoder til mindst kvadraters problemer . - Philadelphia: SIAM, 1996. - S. 121-123. — xvii, 408 sider s. - ISBN 0-89871-360-9 , 978-0-89871-360-2.
  3. Demmel, James W. Anvendt numerisk lineær algebra . - Philadelphia: Society for Industrial and Applied Mathematics, 1997. - S. 53-56. — xi, 419 sider s. - ISBN 0-89871-389-7 , 978-0-89871-389-3, 0-89871-361-7, 978-0-89871-361-9.