I needs-Rotation, which zeros a matrix entry when multiplied from the 오른쪽. 나는 이미이 주제 https://math.stackexchange.com/questions/945736/givens-rotation-from-right-side 를 살펴 봤지만 거기에 도달하는 과정을 정말로 이해할 수 없었습니다.
좀 더 자세히 : 행렬 A와 B가 필요하고 QZ 알고리즘을 사용하여 고유 값을 얻어야합니다. 왼쪽에서 Givens-Rotations를 사용하여 B를 삼각형 형태로 얻습니다. 이러한 변환은 왼쪽에서 A에도 적용됩니다. B가 삼각 형태가 된 후에는 A도 삼각 형태로 얻고 싶습니다. 따라서 매트릭스 B의 0을 파괴하지 않도록 Right에서 Givens-Rotations가 필요합니다 (아니면 이렇게 할 수있는 다른 가능성이 있습니까?)
등식으로 :
$$ \ 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 $$
적절한 e, f, g, h를 찾는 방법
누군가 이것을 달성하는 방법에 대한 힌트를 제공 할 수 있습니까?
미리 감사합니다!
편집 : 다음과 같이 작동합니다. $$ \ 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} $$
가능 누구든지 이것을 승인합니까?
EDIT2 : 오른쪽에서이 givens-rotation을 사용하여 삼각 화하려는 간단한 3×3-Matrix를 고려하십시오.
요소를 0으로 만들 수 있습니다 (3,1 ) 및 (2,1)은 $ c $ 및 $ s $ 매개 변수가 다른 동일한 회전 매트릭스 $ G $를 사용합니다. 따라서 다음과 같이 0을 만들 수 있습니다.
$ \ 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} $하지만 $ \ 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} $ (동일한 회전 매트릭스 $ G $). 두 번째 Rotation이 첫 번째 행에서 생성 된 Zero를 파괴하므로 요소를 반복적으로 0으로 만드는 것이 불가능합니다.
하나를 제외하고 마지막 행의 모든 요소를 0으로 만드는 것은 문제가되지 않습니다. 오른쪽 하단 가장자리에 있습니다 (각 제로는 다른 회전 행렬 $ G $에 의해 생성됨).
하지만 동일한 회전 행렬 $ G를 사용할 때 내 예제에서 언급 한 요소를 제로화하려면 어떻게해야합니까? $ 이미 생성 된 제로 요소를 파괴하는 것은 무엇입니까?
어떤 도움을 주시면 감사하겠습니다!
댓글
- 향후 참조 , " EDIT2 "와 같은 수정이 두 번째 질문으로 더 잘 제기 될 수 있습니다. 현재로서는 질문에 허용 된 답변이 있으므로 그대로 두어야합니다.
- 와우! 자세한 답변을 보내 주셔서 감사합니다! 마지막으로 요소를 0으로 만드는 데 필요한 힌트를 얻었습니다 (2,1) 🙂
- 그냥 절차를 확인했습니다. 이것은 진짜 작동한다! 감사합니다!
답변
정답입니다. $$ \ begin {eqnarray *} r & = & \ sqrt {a ^ 2 + b ^ 2} \\ [.6em] c & = & \ frac {b} {r} \\ [.6em] s & = & \ frac {-a} {r} \ end {eqnarray *} $$ 오른쪽은 $$ \ 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} \ ,, $$ 왜냐하면 $$ ac + bs = a \ frac {b} {r} + b \ frac { -a} {r} = \ frac {ab} {r}-\ frac {ab} {r} = 0 $$ 및 $$-as + bc = -a \ frac {-a} {r} + b \ frac {b} {r} = \ frac {a ^ 2 + b ^ 2} {r} = \ frac {r ^ 2} {r} = r \,. $$ $ r \ neq0 $에주의하세요.
EDIT2 관련 :
두 요소 $ ( 행렬이 다음과 같은 경우 동일한 Givens 회전 행렬을 사용하는 예제에서 3,1) $ 및 $ (2,1) $ : $$ \ begin {pmatrix} * & * & * \\ a & b & * \\ a & b * \ end {pmatrix} $$이 경우 오른쪽에서 Givens 회전 행렬을 곱하면 $$ \ 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} \ ,, $$ 그리고 두 요소를 동시에 0으로 가져 왔습니다. 행 2와 3이 모두 $ \ begin {pmatrix} a & b & * \ end {pmatrix} $가 아니면 다른 회전, 즉 다른 $ c $, $ s $ 및 $ r $ 값이 필요합니다.
상단 삼각형 모양에 행렬을 가져 오기 위해 실제로 수행하는 작업은 가장 낮은 행에서 시작하고 마지막 요소를 제외한 모든 요소를 0으로 가져옵니다. $$ \ 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} $$ 및 $$ \ 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} \,. $$
이제 행 벡터가 $ \ begin {pmatrix} 0 & 0 & * \ end {pmatrix} $는 다음의 Givens 회전에서 변하지 않습니다. 첫 번째 열을 타겟팅하는 오른쪽 : $$ \ 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} \ ,.$$
이렇게하면 마지막 행을 변경하지 않고 $ (2,1) $ 요소를 0으로 가져올 수 있습니다. $$ \ 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} \ ,, $$ 그리고 오른쪽에서 세 가지 (다른) Givens 회전을 적용하여 위쪽 삼각형 모양에 도달했습니다.
댓글
- 부디 친절하고 제 두 번째 편집을 살펴보세요. 미리 감사드립니다.