Jeg har brug for at få en Givens-Rotation, som nuller en matrixindgang, når den ganges fra højre side. Jeg kiggede allerede på dette emne https://math.stackexchange.com/questions/945736/givens-rotation-from-right-side men jeg kunne ikke rigtig forstå processen med at komme dertil.
Nogle flere detaljer: Jeg er nødt til matricer, A og B, og jeg har brug for at få deres Eigenvalues ved hjælp af QZ-algoritmen. Jeg får B til trekantet form ved hjælp af Givens-Rotations fra venstre. Disse transformationer anvendes også til A fra venstre side. Efter at B er i trekantet form, vil jeg også få A i trekantet form. Derfor har jeg brug for Givens-rotationer fra højre, så det ikke ødelægger nuller i Matrix B (eller er der en anden mulighed for at gøre dette?)
Som en ligning:
$$ \ begin {bmatrix} a & b \\ c & d \ end {bmatrix} \ cdot \ begin {bmatrix} e & f \\ g & h \ end {bmatrix} = \ begynder {bmatrix} ae + bg & af + bh \\ ce + dg & cf + dh \ end {bmatrix} $$
med
$$ ce + dg = 0 $$
Hvordan finder jeg passende e, f, g, h?
Kan nogen give mig nogle tip til, hvordan man opnår dette?
Mange tak på forhånd!
REDIGERING: Jeg er ret sikker på, at det fungerer sådan her: $$ \ begin {bmatrix} en & b \ end {bmatrix } \ cdot \ begin {bmatrix} c & -s \\ s & c \ end {bmatrix} = \ begin {bmatrix} 0 & r \ end {bmatrix} $$
med
$$ r = \ sqrt {a ^ 2 + b ^ 2 } $$ $$ c = \ frac {b} {r} $$ $$ s = \ frac {-a} {r} $$
Kan nogen godkender dette?
EDIT2: Overvej en simpel 3×3-Matrix, som jeg forsøger at trekantede ved hjælp af Disse givere-rotation fra højre.
Jeg kan nulstille elementer (3,1 ) og (2,1) ved hjælp af den samme rotationsmatrix $ G $ med forskellige parametre $ c $ og $ s $. Så jeg kan oprette et nul som dette
$ \ begin {bmatrix} * & * & * \\ * & * & * \\ a & b & * \ end {bmatrix} \ cdot \ begin {bmatrix} c & -s & 0 \\ s & c & 0 \\ 0 & 0 & 1 \ end {bmatrix} = \ begin {bmatrix} * & * & * \\ * & * & * \\ 0 & * & * \ end {bmatrix} $ MEN også sådan, at $ \ begin {bmatrix} * & * & * \\ a & b & * \\ * & * & * \ end {bmatrix} \ cdot \ begin {bmatrix} c & -s & 0 \\ s & c & 0 \\ 0 & 0 & 1 \ end {bmatrix} = \ begin {bmatrix} * & * & * \\ 0 & * & * \\ * & * & * \ end {bmatrix} $ for den samme rotationsmatrix $ G $. Dette gør det umuligt for mig at nulstille elementerne iterativt, da den anden rotation vil ødelægge den nul, der blev oprettet i den første.
Det er ikke noget problem at nulstille alle elementer i den sidste række undtagen den ene i højre nederste kant (da hver nul er oprettet af en anden rotationsmatrix $ G $).
Men hvordan kan jeg opnå at nulstille de elementer, der er nævnt i mit eksempel, når jeg bruger den samme rotationsmatrix $ G $ som ødelægger allerede oprettede nul-elementer?
Venligst, enhver hjælp er meget værdsat!
Kommentarer
- Til fremtidig reference , en redigering som din ” EDIT2 ” er sandsynligvis bedre stillet som et andet spørgsmål. Som det er i øjeblikket, bør det være alene, fordi spørgsmålet har et accepteret svar.
- WOW! Mange tak for dit detaljerede svar! Endelig fik jeg det nødvendige tip til Zero out element (2,1) 🙂
- Bare tjekket din procedure. Det virker virkelig! Mange tak!
Svar
Du har ret. Med valget $$ \ begin {eqnarray *} r & = & \ sqrt {a ^ 2 + b ^ 2} \\ [.6em] c & = & \ frac {b} {r} \\ [.6em] s & = & \ frac {-a} {r} \ end {eqnarray *} $$ a Givens rotation fra højre giver $$ \ begin {pmatrix} a & b \ end {pmatrix} \ begin {pmatrix} c & -s \\ s & c \ end {pmatrix} = \ begin {pmatrix} ac + bs & -as + bc \ end {pmatrix} = \ begin {pmatrix} 0 & r \ end {pmatrix} \ ,, $$ fordi $$ ac + bs = a \ frac {b} {r} + b \ frac { -a} {r} = \ frac {ab} {r} – \ frac {ab} {r} = 0 $$ og $$ – som + bc = -a \ frac {-a} {r} + b \ frac {b} {r} = \ frac {a ^ 2 + b ^ 2} {r} = \ frac {r ^ 2} {r} = r \,. $$ Bare pas på, at $ r \ neq0 $.
Vedrørende EDIT2:
Du kan kun nulstille begge elementer $ ( 3,1) $ og $ (2,1) $ i dit eksempel med den samme Givens-rotationsmatrix, hvis matrixen ser sådan ud: $$ \ begin {pmatrix} * & * & * \\ a & b & * \\ a & b * \ end {pmatrix} $$ Og i så fald giver multiplikation af din Givens-rotationsmatrix fra det rigtige $$ \ $$ {pmatrix} * & * & * \\ a & b & * \\ a & b & * \ end {pmatrix} \ begin {pmatrix} c & -s & 0 \\ s & c & 0 \\ 0 & 0 & 1 \ end {pmatrix} = \ begin {pmatrix} * & * & * \\ 0 & r & * \\ 0 & r & * \ end {pmatrix} \ ,, $$ og du har bragt begge elementer til nul samtidigt. Hvis række 2 og 3 ikke begge er $ \ begin {pmatrix} a & b & * \ end {pmatrix} $, skal du har brug for forskellige rotationer, dvs. forskellige $ c $, $ s $ og $ r $ værdier.
Hvad du gør i praksis for at bringe en matrix med den øverste trekantform er at starte med den nederste række og bringe alle elementer undtagen det sidste til nul: $$ \ begin {pmatrix} * & * & * \\ * & * & * \\ a_1 & b_1 & * \ end {pmatrix} \ begin {pmatrix} c_1 & -s_1 & 0 \\ s_1 & c_1 & 0 \\ 0 & 0 & 1 \ end { pmatrix} = \ begin {pmatrix} * & * & * \\ * & * & * \\ 0 & r_1 & * \ end {pmatrix} = \ begynde {pmatrix} *
* & * \\ * & * & * \\ 0 & a_2 & b_2 \ end {pmatrix} $$ og $$ \ begin {pmatrix} * & * & * \\ * & * & * \\ 0 & a_2 & b_2 \ end {pmatrix} \ begynder {pmatrix} 1 & 0 & 0 \\ 0 & c_2 & -s_2 \ \ 0 & s_2 & c_2 \ end {pmatrix} = \ begynder {pmatrix} * & * & * \\ * & * & * \\ 0 & 0 & r_2 \ end {pmatrix} \,. $$
Nu skal vi se, at en rækkevektor $ \ begin {pmatrix} 0 & 0 & * \ end {pmatrix} $ er uændret under Givens-rotationer fra højre, der er målrettet mod den første kolonne: $$ \ begin {pmatrix} 0 & 0 & * \ end {pmatrix} \ begin { pmatrix} c & -s & 0 \\ s & c & 0 \\ 0 & 0 & 1 \ end {pmatrix} = \ begin {pmatrix} 0 \ cdot (c + s) & 0 \ cdot (cs) & 1 \ cdot * \ end {pmatrix} \ ,.$$
Dette giver os mulighed for at bringe elementet $ (2,1) $ til nul uden at ændre den sidste række: $$ \ begin {pmatrix} * & * & * \\ a_3 & b_3 & * \\ 0 & 0 & r_2 \ end {pmatrix} \ begin {pmatrix} c_3 & -s_3 & 0 \\ s_3 & c_3 & 0 \\ 0 & 0 & 1 \ end {pmatrix} = \ begin {pmatrix} * & * & * \\ 0 & r_3 & * \\ 0 & 0 & r_2 \ end {pmatrix} \ ,, $$ og vi har nået den øverste trekantform ved at anvende tre (forskellige) Givens-rotationer fra højre.
Kommentarer
- Vær så venlig og se på min anden redigering. Mange tak på forhånd.