ho bisogno di ottenere una Givens-Rotation, che azzera una voce di matrice quando moltiplicata dalla lato destro. Ho già esaminato questo argomento https://math.stackexchange.com/questions/945736/givens-rotation-from-right-side ma non sono riuscito a capire il processo per arrivarci.

Alcuni dettagli in più: devo matrici, A e B e ho bisogno di ottenere i loro autovalori usando lalgoritmo QZ. Ottengo B in forma triagonale usando Givens-Rotations da sinistra. Queste trasformazioni vengono applicate anche ad A dal lato sinistro. Dopo che B è in forma triagonale, voglio ottenere anche A in forma triagonale. Quindi ho bisogno di Givens-Rotations da Right in modo che non distrugga gli zeri di Matrix B (O cè unaltra possibilità per farlo?)

Come equazione:

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

con

$$ ce + dg = 0 $$

Come trovare e, f, g, h appropriati?

Qualcuno può fornirmi alcuni suggerimenti su come ottenere questo risultato?

Grazie mille in anticipo!

EDIT: Sono abbastanza sicuro che funzioni così: $$ \ begin {bmatrix} a & b \ end {bmatrix } \ cdot \ begin {bmatrix} c & -s \\ s & c \ end {bmatrix} = \ begin {bmatrix} 0 & r \ end {bmatrix} $$

con

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

Può qualcuno lo approva?

EDIT2: Considera una semplice matrice 3×3 che sto cercando di triangolarizzare usando la rotazione di questi dati da destra.

Posso azzerare gli elementi (3,1 ) e (2,1) utilizzando la stessa matrice di rotazione $ G $ con diversi parametri $ c $ e $ s $. Quindi posso creare uno zero come questo

$ \ 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} $ MA anche così $ \ 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} $ per la stessa matrice di rotazione $ G $. Ciò mi rende impossibile azzerare gli elementi in modo iterativo, poiché la seconda rotazione distruggerà lo zero creato nella prima.

Non è un problema azzerare tutti gli elementi nellultima riga tranne quello nel bordo inferiore destro (poiché ogni zero è creato da unaltra matrice di rotazione $ G $).

Ma come posso ottenere lazzeramento degli elementi menzionati nel mio esempio, quando si utilizza la stessa matrice di rotazione $ G $ che distrugge gli zero elementi già creati?

Per favore, qualsiasi aiuto è molto apprezzato!

Commenti

  • Per riferimento futuro , una modifica come ” EDIT2 ” è probabilmente meglio posta come seconda domanda. Come è attualmente, dovrebbe essere lasciato da solo perché la domanda ha una risposta accettata.
  • WOW! Grazie mille per la tua risposta dettagliata! Finalmente ho ricevuto il suggerimento necessario per azzerare lelemento (2,1) 🙂
  • Ho appena controllato la tua procedura. Funziona veramente! Grazie mille!

Risposta

Hai ragione. Con la scelta $$ \ begin {eqnarray *} r & = & \ sqrt {a ^ 2 + b ^ 2} \\ [.6em] c & = & \ frac {b} {r} \\ [.6em] s & = & \ frac {-a} {r} \ end {eqnarray *} $$ a Givens rotation dal right restituisce $$ \ 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} \ ,, $$ perché $$ ac + bs = a \ frac {b} {r} + b \ frac { -a} {r} = \ frac {ab} {r} – \ frac {ab} {r} = 0 $$ e $$ – come + bc = -a \ frac {-a} {r} + b \ frac {b} {r} = \ frac {a ^ 2 + b ^ 2} {r} = \ frac {r ^ 2} {r} = r \,. $$ Fai solo attenzione a $ r \ neq0 $.

Riguardo a EDIT2:

Puoi azzerare solo entrambi gli elementi $ ( 3,1) $ e $ (2,1) $ nel tuo esempio con la stessa matrice di rotazione Givens se la matrice ha questo aspetto: $$ \ begin {pmatrix} * & * & * \\ a & b & * \\ a & b * \ end {pmatrix} $$ E in tal caso, moltiplicando la matrice di rotazione di Givens da destra si ottiene $$ \ 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} \ ,, $$ e hai portato entrambi gli elementi a zero contemporaneamente. Se le righe 2 e 3 non sono entrambe $ \ begin {pmatrix} a & b & * \ end {pmatrix} $, necessitano di rotazioni diverse, ad esempio, valori $ c $, $ s $ e $ r $ differenti.

Quello che fai in pratica per portare una matrice sulla forma del triangolo superiore, è iniziare con la riga più bassa e porta tutti gli elementi tranne lultimo a zero: $$ \ 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} = \ inizio {pmatrix} *

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

Ora, vedremo che un vettore riga $ \ begin {pmatrix} 0 & 0 & * \ end {pmatrix} $ è invariante rispetto alle rotazioni di Givens da la destra che ha come target la prima colonna: $$ \ 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} \ ,.$$

Questo ci permette di portare lelemento $ (2,1) $ a zero senza cambiare lultima riga: $$ \ 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} \ ,, $$ e abbiamo raggiunto la forma del triangolo superiore applicando tre (diverse) rotazioni di Givens da destra.

Commenti

  • Per favore, sii gentile e dai unocchiata alla mia seconda modifica. Grazie mille in anticipo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *