Givens-Rotation-t kell kapnom, amely nulláz egy mátrix bejegyzést, ha megszorozzuk a jobb oldal. Már megnéztem ezt a témát https://math.stackexchange.com/questions/945736/givens-rotation-from-right-side , de nem igazán értettem az eljutás folyamatát.
További részletek: Mátrixokat kell megadnom, A és B és i értékeket kell megadnom a QZ-algoritmus segítségével. B-t triagonális formára kapom a bal oldali Givens-Rotations segítségével. Ezeket az átalakításokat A bal oldaláról is alkalmazzuk. Miután B triagonális formában van, A-t is szeretnék triagonális formában kapni. Ezért szükségem van a Givens-Rotations from Right oldalra, hogy ne rontsa el a B mátrix nulláit (vagy van erre más lehetőség?)
Egyenletként:
$$ \ 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} $$
a következővel:
$$ ce + dg = 0 $$
Hogyan lehet megtalálni a megfelelő e, f, g, h?
Tud valaki adni néhány tippet, hogyan lehet ezt elérni? > Előre is nagyon köszönöm!
SZERKESZTÉS: Nagyon biztos vagyok benne, hogy ez így működik: $$ \ begin {bmatrix} a & b \ end {bmatrix } \ cdot \ begin {bmatrix} c & -s \\ s & c \ end {bmatrix} = \ begin {bmatrix} 0 & r \ end {bmatrix} $$
ezzel:
$$ r = \ sqrt {a ^ 2 + b ^ 2 } $$ $$ c = \ frac {b} {r} $$ $$ s = \ frac {-a} {r} $$
Tud bárki jóváhagyja ezt?
EDIT2: Vegyünk egy egyszerű 3×3-Matrixot, amelyet háromszögletesen próbálok háromszorosítani a jobb oldali Ezek a forgatások segítségével.
Kihúzhatom az elemeket (3,1 ) és (2,1) ugyanazt a $ G $ rotációs mátrixot használva, különböző paraméterekkel $ c $ és $ s $. Így létrehozhatok egy ilyen nullát
$ \ 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} $, de ez tetszik a $ \ 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} $ ugyanarra a forgatási mátrixra $ G $. Ez lehetetlenné teszi az elemek iteratív nullázását, mivel a második forgatás elpusztítja az elsőben létrehozott nullát.
Nem probléma az utolsó sor összes elemének nullázása, kivéve az egyiket a jobb alsó szélen (mivel az egyes nullákat egy másik $ G $ forgatómátrix hozza létre).
De hogyan érhetem el a példámban említett elemek nullázását, ha ugyanazt a $ G forgatómátrixot használom $, amely elpusztítja a már létrehozott nulla elemeket?
Kérjük, nagyra értékeljük a segítséget!
Megjegyzések
- További információkért , valószínűleg egy ” EDIT2 ” fájlhoz hasonló szerkesztést érdemes második kérdésként feltenni. Jelenleg is egyedül kell hagyni, mert a kérdésre elfogadott válasz van.
- WOW! SOKAT köszönöm a részletes válaszért! Végül megkaptam a Zero out (2,1) elemhez szükséges tippet 🙂
- Csak ellenőriztem az eljárást. Ez tényleg működik! Nagyon köszönöm!
Válasz
Igazad van. A $$ \ választással kezdődik {eqnarray *} r & = & \ sqrt {a ^ 2 + b ^ 2} \\ [.6em] c & = & \ frac {b} {r} \\ [.6em] s & = & \ frac {-a} {r} \ end {eqnarray *} $$ a Givens forgatása a jobbra $$ \ 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} \ ,, $$, mert $$ ac + bs = a \ frac {b} {r} + b \ frac { -a} {r} = \ frac {ab} {r} – \ frac {ab} {r} = 0 $$ és $$ – as + bc = -a \ frac {-a} {r} + b \ frac {b} {r} = \ frac {a ^ 2 + b ^ 2} {r} = \ frac {r ^ 2} {r} = r \,. $$ Csak vigyázzon, hogy $ r \ neq0 $.
EDIT2:
Mindkét elemet csak nullázhatja ( 3,1) $ és $ (2,1) $ a példádban ugyanazzal a Givens-rotációs mátrixszal, ha a mátrix így néz ki: $$ \ begin {pmatrix} * & * & * \\ a & b & * \\ a & b * \ end {pmatrix} $$ És ebben az esetben, ha a Givens-rotációs mátrixot megszorozzuk a jobb oldalról, a $$ \ 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} \ ,, $$ és mindkét elemet egyszerre nullázta. Ha a 2. és a 3. sor nem egyaránt $ \ kezdődik {pmatrix} a & b & * \ end {pmatrix} $, akkor különböző elforgatásokra van szükségük, azaz különböző $ c $, $ s $ és $ r $ értékekre.
Amit a gyakorlatban tesz annak érdekében, hogy mátrixot hozzon a felső háromszög alakjára, az a legalacsonyabb sorral kezdődik hozza az összes elemet az utolsó kivételével nullára: $$ \ 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} = \ kezdődik {pmatrix} *
* & * \\ * & * & * \\ 0 & a_2 & b_2 \ end {pmatrix} $$ és $$ \ 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} \,. $$
Most látni fogjuk, hogy egy sorvektor $ \ begin {pmatrix} 0 & 0 & * \ end {pmatrix} $ invariáns a Givens rotációk alatt az első oszlopot megcélzó jobb oldal: $$ \ 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} \ ,.$$
Ez lehetővé teszi számunkra, hogy a $ (2,1) $ elemet nullára állítsuk az utolsó sor megváltoztatása nélkül: $$ \ 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} \ ,, $$ és három (különböző) Givens forgatást jobbról alkalmazva elértük a felső háromszög alakját.
Megjegyzések
- Kérem, legyen olyan kedves, és nézze meg a második Szerkesztésemet. Előre is nagyon köszönöm.