Potrzebuję uzyskać Givens-Rotation, który zeruje wpis macierzy po pomnożeniu z prawa strona. Zajrzałem już do tego tematu https://math.stackexchange.com/questions/945736/givens-rotation-from-right-side , ale nie mogłem zrozumieć, jak to osiągnąć.

Więcej szczegółów: Muszę mieć macierze, A i B oraz i Muszę uzyskać ich wartości własne za pomocą algorytmu QZ. Dostaję B do formy triagonalnej za pomocą Givens-Rotations od lewej. Te transformacje są również stosowane do A z lewej strony. Po tym, jak B jest w formie triagonalnej, chcę również uzyskać A w formie triagonalnej. Dlatego potrzebuję Givens-Rotations from Right, aby nie zniszczyły zer w Matrix B (czy jest inna możliwość, aby to zrobić?)

Jako równanie:

$$ \ 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} $$

with

$$ ce + dg = 0 $$

Jak znaleźć odpowiednie e, f, g, h?

Czy ktoś może mi podać kilka wskazówek, jak to osiągnąć?

Z góry dziękuję!

EDYCJA: Jestem prawie pewien, że to działa tak: $$ \ begin {bmatrix} a & b \ end {bmatrix } \ cdot \ begin {bmatrix} c & -s \\ s & c \ end {bmatrix} = \ begin {bmatrix} 0 & r \ end {bmatrix} $$

with

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

Czy ktoś to aprobuje?

EDYCJA2: Rozważ prostą macierz 3×3, którą próbuję ułożyć na trójkąt używając rotacji tych danych od prawej.

Mogę wyzerować elementy (3,1 ) i (2,1) używając tej samej macierzy rotacji $ G $ z różnymi parametrami $ c $ i $ s $. Więc mogę utworzyć zero w ten sposób

$ \ 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 też tak $ \ 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} $ dla tej samej macierzy rotacji $ G $. To sprawia, że nie mogę wyzerować elementów iteracyjnie, ponieważ druga rotacja zniszczy zero utworzone w pierwszej.

Zerowanie wszystkich elementów w ostatnim wierszu z wyjątkiem jednego nie stanowi problemu. w prawej dolnej krawędzi (ponieważ każde zero jest tworzone przez inną macierz rotacji $ G $).

Ale jak mogę osiągnąć wyzerowanie elementów wymienionych w moim przykładzie, używając tej samej macierzy rotacji $ G $ która niszczy już utworzone elementy zerowe?

Bardzo mile widziana pomoc!

Komentarze

  • Do wykorzystania w przyszłości , edycja taka jak Twoja ” EDIT2 ” jest prawdopodobnie lepiej ustawiona jako drugie pytanie. Tak jak jest obecnie, należy je zostawić w spokoju, ponieważ pytanie ma zaakceptowaną odpowiedź.
  • WOW! Bardzo dziękuję za szczegółową odpowiedź! Wreszcie dostałem wskazówkę potrzebną do wyzerowania elementu (2,1) 🙂
  • Właśnie sprawdziłem twoją procedurę. To naprawdę działa! Dziękuję bardzo!

Odpowiedź

Masz rację. Z wyborem $$ \ begin {eqnarray *} r & = & \ sqrt {a ^ 2 + b ^ 2} \\ [.6em] c & = & \ frac {b} {r} \\ [.6em] s & = & \ frac {-a} {r} \ end {eqnarray *} $$ a Obrót Givens z dobre plony $$ \ 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} \ ,, $$ ponieważ $$ ac + bs = a \ frac {b} {r} + b \ frac { -a} {r} = \ frac {ab} {r} – \ frac {ab} {r} = 0 $$ i $$ – as + bc = -a \ frac {-a} {r} + b \ frac {b} {r} = \ frac {a ^ 2 + b ^ 2} {r} = \ frac {r ^ 2} {r} = r \,. $$ Tylko uważaj, żeby $ r \ neq0 $.

Odnośnie EDIT2:

Możesz wyzerować tylko oba elementy $ ( 3,1) $ i $ (2,1) $ w Twoim przykładzie z tą samą macierzą rotacji Givens, jeśli macierz wygląda następująco: $$ \ begin {pmatrix} * & * & * \\ a & b & * \\ a & b * \ end {pmatrix} $$ A w takim przypadku pomnożenie macierzy rotacji Givens z prawej strony daje $$ \ 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} \ ,, $$ i wyzerowałeś oba elementy jednocześnie. Jeśli wiersze 2 i 3 nie są jednocześnie $ \ begin {pmatrix} a & b & * \ end {pmatrix} $, musisz potrzebują różnych obrotów, tj. różnych wartości $ c $, $ s $ i $ r $.

W praktyce wprowadzasz macierz do kształtu górnego trójkąta, zaczynając od najniższego wiersza i sprowadz wszystkie elementy oprócz ostatniego do zera: $$ \ 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} = \ begin {pmatrix} *

* & * \\ * & * & * \\ 0 & a_2 & b_2 \ end {pmatrix} $$ and $$ \ 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} \,. $$

Teraz zobaczymy, że wektor wierszowy $ \ begin {pmatrix} 0 & 0 & * \ end {pmatrix} $ jest niezmienne przy obrotach Givensa od prawa, która kieruje do pierwszej kolumny: $$ \ 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 pozwala nam zerować element $ (2,1) $ bez zmiany ostatniego wiersza: $$ \ 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} \ ,, $$ i osiągnęliśmy kształt górnego trójkąta, stosując trzy (różne) obroty Givensa od prawej strony.

Komentarze

  • Proszę, bądź taki uprzejmy i spójrz na moją drugą edycję. Z góry dziękuję.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *