Musím získat Givens-Rotation, který při vynásobení z pravá strana. Už jsem se na toto téma podíval https://math.stackexchange.com/questions/945736/givens-rotation-from-right-side , ale nemohl jsem pochopit proces, jak se tam dostat.

Několik dalších podrobností: Musím matice, A a B a potřebuji získat jejich vlastní čísla pomocí QZ-algoritmu. Dostávám B do trojúhelníkové formy pomocí Givens-Rotations zleva. Tyto transformace se aplikují na A také z levé strany. Poté, co je B v trojúhelníkové formě, chci také dostat A v trojúhelníkové formě. Proto potřebuji Givens-Rotations zprava, aby nezničil nuly Matrix B (nebo existuje jiná možnost, jak to udělat?)

Jako rovnice:

$$ \ begin {bmatrix} a & b \\ c & d \ end {bmatrix} \ cdot \ begin {bmatrix} e & f \\ g & h \ end {bmatrix} = \ begin {bmatrix} ae + bg & af + bh \\ ce + dg & cf + dh \ end {bmatrix} $$

s

$$ ce + dg = 0 $$

Jak najít vhodné e, f, g, h?

Může mi někdo poskytnout nějaké rady, jak toho dosáhnout?

Děkuji předem!

EDIT: Jsem si docela jistý, že to funguje takto: $$ \ begin {bmatrix} a & b \ end {bmatrix } \ cdot \ begin {bmatrix} c & -s \\ s & c \ end {bmatrix} = \ begin {bmatrix} 0 & r \ end {bmatrix} $$

s

$$ r = \ sqrt {a ^ 2 + b ^ 2 } $$ $$ c = \ frac {b} {r} $$ $$ s = \ frac {-a} {r} $$

Může kdokoli to schválí?

EDIT2: Zvažte jednoduchý 3×3-Matrix, který se snažím triangularizovat pomocí těchto givens-rotace zprava.

Mohu vynulovat prvky (3,1 ) a (2,1) pomocí stejné rotační matice $ G $ s různými parametry $ c $ a $ s $. Takže můžu takto vytvořit nulu

$ \ 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} $ ALE také to $ \ 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} $ pro stejnou rotační matici $ G $. To mi znemožňuje iteračně vynulovat prvky, protože druhá rotace zničí nulu vytvořenou v prvním.

Není problém vynulovat všechny prvky v posledním řádku kromě jednoho v pravém dolním okraji (protože každá nula je vytvořena jinou rotační maticí $ G $).

Ale jak mohu dosáhnout vynulování prvků zmíněných v mém příkladu, když používám stejnou rotační matici $ G $, které zničí již vytvořené nulové prvky?

Prosím, jakoukoli pomoc si velmi vážíme!

Komentáře

  • Pro budoucí potřebu , úprava jako vaše “ EDIT2 “ je pravděpodobně lepší položit jako druhou otázku. V současné době by měl zůstat sám, protože otázka má přijatelnou odpověď.
  • WOW! Děkuji vám hodně za vaši podrobnou odpověď! Nakonec jsem dostal nápovědu potřebnou k vynulování prvku (2,1) 🙂
  • Jen jsem zkontroloval váš postup. Opravdu to funguje! Moc děkuji!

Odpověď

Máte pravdu. S volbou $$ \ begin {eqnarray *} r & = & \ sqrt {a ^ 2 + b ^ 2} \\ [.6em] c & = & \ frac {b} {r} \\ [.6em] s & = & \ frac {-a} {r} \ end {eqnarray *} $$ a rotace Givens z správné výnosy $$ \ 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} \ ,, $$ protože $$ ac + bs = a \ frac {b} {r} + b \ frac { -a} {r} = \ frac {ab} {r} – \ frac {ab} {r} = 0 $$ a $$ – jako + bc = -a \ frac {-a} {r} + b \ frac {b} {r} = \ frac {a ^ 2 + b ^ 2} {r} = \ frac {r ^ 2} {r} = r \,. $$ Jen se ujistěte, že $ r \ neq0 $.

Pokud jde o EDIT2:

Oba prvky můžete vynulovat pouze $ ( 3,1) $ a $ (2,1) $ ve vašem příkladu se stejnou rotací matice Givens, pokud matice vypadá takto: $$ \ begin {pmatrix} * & * & * \\ a & b & * \\ a & b * \ end {pmatrix} $$ A v takovém případě vynásobení rotace matice Givens ze správných výnosů $$ \ begin {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} \ ,, $$ a oba prvky jste vynulovali současně. Pokud řádky 2 a 3 nejsou oba $ \ begin {pmatrix} a & b & * \ end {pmatrix} $, vy potřebujete různé rotace, tj. různé hodnoty $ c $, $ s $ a $ r $.

To, co v praxi děláte, aby matice byla ve tvaru horního trojúhelníku, je začít od nejnižšího řádku a přivést všechny prvky kromě posledního na nulu: $$ \ 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} = \ začít {pmatrix} *

* & * \\ * & * & * \\ 0 & a_2 & b_2 \ end {pmatrix} $$ a $$ \ begin {pmatrix} * & * & * \\ * & * & * \\ 0 & a_2 & b_2 \ end {pmatrix} \ begin {pmatrix} 1 & 0 & 0 \\ 0 & c_2 & -s_2 \ \ 0 & s_2 & c_2 \ end {pmatrix} = \ begin {pmatrix} * & * & * \\ * & * & * \\ 0 & 0 & r_2 \ end {pmatrix} \,. $$

Nyní uvidíme, že řádkový vektor $ \ begin {pmatrix} 0 & 0 & * \ end {pmatrix} $ je neměnný pod rotací Givens z právo, které cílí na první sloupec: $$ \ 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} \ ,.$$

To nám umožňuje přivést prvek $ (2,1) $ na nulu beze změny posledního řádku: $$ \ 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} \ ,, $$ a tvar horního trojúhelníku jsme dosáhli použitím tří (různých) rotací Givens zprava.

Komentáře

  • Prosím, buďte tak laskaví a podívejte se na můj druhý Edit. Děkuji předem.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *