Necesito obtener una Givens-Rotation, que pone a cero una entrada de matriz cuando se multiplica por lado derecho. Ya vi este tema https://math.stackexchange.com/questions/945736/givens-rotation-from-right-side , pero no pude entender realmente el proceso para llegar allí.
Algunos detalles más: tengo matrices, A y B y necesito obtener sus valores propios utilizando el algoritmo QZ. Consigo B en forma triagonal usando Givens-Rotations desde la izquierda. Estas transformaciones también se aplican a A desde el lado izquierdo. Después de que B esté en forma triagonal, también quiero obtener A en forma triagonal. Por lo tanto, necesito Givens-Rotaciones desde la derecha para que no destruya los ceros de la Matriz B (¿O hay otra posibilidad de hacer esto?)
Como ecuación:
$$ \ 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 $$
¿Cómo encontrar la e, f, g, h apropiada?
¿Alguien me puede dar algunas pistas sobre cómo lograr esto?
¡Muchas gracias de antemano!
EDITAR: Estoy bastante seguro de que funciona así: $$ \ 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} $$
Puede ¿Alguien aprueba esto?
EDIT2: Considere una Matriz 3×3 simple que estoy tratando de triangularizar usando Estos dados-rotación desde la derecha.
Puedo poner a cero elementos (3,1 ) y (2,1) usando la misma matriz de rotación $ G $ con diferentes parámetros $ c $ y $ s $. Entonces puedo crear un cero como este
$ \ 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} $ PERO también me gusta $ \ 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} $ para la misma matriz de rotación $ G $. Esto me hace imposible poner a cero los elementos de forma iterativa, ya que la segunda rotación destruirá el cero creado en la primera.
No es un problema poner a cero todos los elementos de la última fila excepto el uno en el borde inferior derecho (ya que cada cero es creado por otra matriz de rotación $ G $).
Pero, ¿cómo puedo lograr poner a cero los elementos mencionados en mi ejemplo, cuando utilizo la misma matriz de rotación $ G $ que destruye los elementos cero ya creados?
¡Por favor, cualquier ayuda es muy apreciada!
Comentarios
- Para referencia futura , una edición como su » EDIT2 » probablemente se plantee mejor como una segunda pregunta. Tal como está actualmente, debe dejarse solo porque la pregunta tiene una respuesta aceptada.
- ¡GUAU! ¡Muchas gracias por su respuesta detallada! Finalmente obtuve la pista necesaria para poner a cero el elemento (2,1) 🙂
- Acabo de verificar su procedimiento. ¡Realmente funciona! ¡Muchas gracias!
Responder
Tienes razón. Con la opción $$ \ begin {eqnarray *} r & = & \ sqrt {a ^ 2 + b ^ 2} \\ [.6em] c & = & \ frac {b} {r} \\ [.6em] s & = & \ frac {-a} {r} \ end {eqnarray *} $$ a Rotación Givens del la derecha produce $$ \ 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} \ ,, $$ porque $$ ac + bs = a \ frac {b} {r} + b \ frac { -a} {r} = \ frac {ab} {r} – \ frac {ab} {r} = 0 $$ y $$ – as + bc = -a \ frac {-a} {r} + b \ frac {b} {r} = \ frac {a ^ 2 + b ^ 2} {r} = \ frac {r ^ 2} {r} = r \,. $$ Solo ten cuidado con $ r \ neq0 $.
Concerniente a EDIT2:
Solo puede poner a cero ambos elementos $ ( 3,1) $ y $ (2,1) $ en su ejemplo con la misma matriz de rotación de Givens si la matriz se ve así: $$ \ begin {pmatrix} * & * & * \\ a & b & * \\ a & b * \ end {pmatrix} $$ Y en ese caso, multiplicar su matriz de rotación Givens de la derecha da como resultado $$ \ 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} \ ,, $$ y ha puesto ambos elementos a cero simultáneamente. Si las filas 2 y 3 no son $ \ begin {pmatrix} a & b & * \ end {pmatrix} $, necesitan diferentes rotaciones, es decir, diferentes valores de $ c $, $ s $ y $ r $.
Lo que se hace en la práctica para traer una matriz en forma de triángulo superior es comenzar con la fila más baja y traer todos los elementos menos el último a cero: $$ \ 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} = \ comenzar {pmatrix} *
* & * \\ * & * & * \\ 0 & a_2 & b_2 \ end {pmatrix} $$ y $$ \ 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} \,. $$
Ahora, veremos que un vector de fila $ \ begin {pmatrix} 0 & 0 & * \ end {pmatrix} $ es invariante en las rotaciones de Givens desde la derecha que apunta a la primera columna: $$ \ 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} \ ,.$$
Esto nos permite llevar el elemento $ (2,1) $ a cero sin cambiar la última fila: $$ \ 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} \ ,, $$ y hemos alcanzado la forma del triángulo superior aplicando tres rotaciones de Givens (diferentes) desde la derecha.
Comentarios
- Por favor, sea tan amable y eche un vistazo a mi segunda edición. Muchas gracias de antemano.