기븐스 회전(Givens rotation)은
G
(
i
,
j
,
θ
)
⋅
x
{\displaystyle G(i,j,\theta )\cdot x}
는
θ
{\displaystyle \theta }
라디안 의
(
i
,
j
)
{\displaystyle (i,j)}
평면에서 벡터
x
{\displaystyle x}
의 반 시계 방향 회전을 나타내므로 기븐스 회전 이라 명명된다.
수치 해석 및선형 대수학 에서 기븐스 회전의 주요 용도는 벡터 또는 행렬 에
0
{\displaystyle 0}
을 도입하는 것이다. 이 효과는 예를 들어 행렬의 QR 분해 를 계산하는 데 사용될 수 있다. 하우스홀더 변환 에 비해 장점은 쉽게 병렬처리할 수 있다는 것이다. 또는 비교적 매우 적은 수의 행렬 연산으로 작동된다는 점이다.
(
c
s
−
s
c
)
T
(
a
b
)
=
(
r
0
)
{\displaystyle {\begin{pmatrix}c&s\\-s&c\\\end{pmatrix}}^{T}{\begin{pmatrix}a&b\\\end{pmatrix}}={\begin{pmatrix}r&0\\\end{pmatrix}}}
r
=
a
2
+
b
2
,
{\displaystyle r={\sqrt {a^{2}+b^{2}}},}
c
=
a
a
2
+
b
2
,
s
=
b
a
2
+
b
2
{\displaystyle c={{a} \over {\sqrt {a^{2}+b^{2}}}}\;\;,\;\;s={{b} \over {\sqrt {a^{2}+b^{2}}}}}
기븐스 회전(Givens rotation)은 상삼각행렬 을 위한 특정한 위치의 값을
0
{\displaystyle 0}
으로하는 행렬을 유도할 수 있다.
R
X
(
θ
)
=
[
1
0
0
0
cos
θ
−
sin
θ
0
sin
θ
cos
θ
]
{\displaystyle R_{X}(\theta )={\begin{bmatrix}1&0&0\\0&\cos \theta &-\sin \theta \\0&\sin \theta &\cos \theta \end{bmatrix}}}
R
Y
(
θ
)
=
[
cos
θ
0
sin
θ
0
1
0
−
sin
θ
0
cos
θ
]
→
R
Y
(
θ
)
=
[
cos
θ
0
−
sin
θ
0
1
0
sin
θ
0
cos
θ
]
{\displaystyle R_{Y}(\theta )={\begin{bmatrix}\cos \theta &0&\sin \theta \\0&1&0\\-\sin \theta &0&\cos \theta \end{bmatrix}}\to {\begin{aligned}\\R_{Y}(\theta )={\begin{bmatrix}\cos \theta &0&-\sin \theta \\0&1&0\\\sin \theta &0&\cos \theta \end{bmatrix}}\end{aligned}}}
R
Z
(
θ
)
=
[
cos
θ
−
sin
θ
0
sin
θ
cos
θ
0
0
0
1
]
{\displaystyle {\begin{aligned}\\R_{Z}(\theta )={\begin{bmatrix}\cos \theta &-\sin \theta &0\\\sin \theta &\cos \theta &0\\0&0&1\end{bmatrix}}\end{aligned}}}
A
1
=
[
6
5
0
5
1
4
0
4
3
]
{\displaystyle A_{1}={\begin{bmatrix}6&5&0\\5&1&4\\0&4&3\\\end{bmatrix}}}
기븐스 회전의 두번 반복 (여기서는
3
{\displaystyle 3}
행
3
{\displaystyle 3}
열의 성분이 이미
0
{\displaystyle 0}
이다)을 수행하여 QR 분해 를 계산하기위한 상삼각행렬 을 산출한다.
필요한 행렬을 만들기 위해서는 성분
(
2
,
1
)
{\displaystyle (2,1)}
과
(
3
,
2
)
{\displaystyle (3,2)}
를 제로화해야한다. 먼저 성분
(
2
,
1
)
{\displaystyle (2,1)}
를
0
{\displaystyle 0}
으로 선택하여,
회전 행렬을 적용하면,
G
1
=
[
c
−
s
0
s
c
0
0
0
1
]
{\displaystyle G_{1}={\begin{bmatrix}c&-s&0\\s&c&0\\0&0&1\\\end{bmatrix}}}
G
1
A
1
=
A
2
=
[
c
−
s
0
s
c
0
0
0
1
]
[
6
5
0
5
1
4
0
4
3
]
{\displaystyle {\begin{aligned}G_{1}A_{1}&{}=A_{2}\\&{}={\begin{bmatrix}c&-s&0\\s&c&0\\0&0&1\\\end{bmatrix}}{\begin{bmatrix}6&5&0\\5&1&4\\0&4&3\\\end{bmatrix}}\end{aligned}}}
r
=
6
2
+
5
2
≈
7.8102
{\displaystyle r={\sqrt {6^{2}+5^{2}}}\approx 7.8102}
c
=
6
/
r
≈
0.7682
{\displaystyle c=6/r\approx 0.7682}
s
=
−
5
/
r
≈
−
0.6402
{\displaystyle s=-5/r\approx -0.6402}
A
2
≈
[
7.8102
4.4813
2.5607
0
−
2.4327
3.0729
0
4
3
]
{\displaystyle A_{2}\approx {\begin{bmatrix}7.8102&4.4813&2.5607\\0&-2.4327&3.0729\\0&4&3\\\end{bmatrix}}}
이제 프로세스를 끝내기 위해
(
3
,
2
)
{\displaystyle (3,2)}
성분을 제로로 만든다. 이전과 같은 아이디어를 사용하여 회전 행렬을 적용한다.
G
2
=
[
1
0
0
0
c
−
s
0
s
c
]
{\displaystyle G_{2}={\begin{bmatrix}1&0&0\\0&c&-s\\0&s&c\\\end{bmatrix}}}
G
2
A
2
=
A
3
≈
[
1
0
0
0
c
−
s
0
s
c
]
[
7.8102
4.4813
2.5607
0
−
2.4327
3.0729
0
4
3
]
{\displaystyle {\begin{aligned}G_{2}A_{2}&{}=A_{3}\\&{}\approx {\begin{bmatrix}1&0&0\\0&c&-s\\0&s&c\\\end{bmatrix}}{\begin{bmatrix}7.8102&4.4813&2.5607\\0&-2.4327&3.0729\\0&4&3\\\end{bmatrix}}\end{aligned}}}
r
≈
(
−
2.4327
)
2
+
4
2
≈
4.6817
{\displaystyle r\approx {\sqrt {(-2.4327)^{2}+4^{2}}}\approx 4.6817}
c
≈
−
2.4327
/
r
≈
−
0.5196
{\displaystyle c\approx -2.4327/r\approx -0.5196}
s
≈
−
4
/
r
≈
−
0.8544
{\displaystyle s\approx -4/r\approx -0.8544}
A
3
≈
[
7.8102
4.4813
2.5607
0
4.6817
0.9664
0
0
−
4.1843
]
=
R
{\displaystyle A_{3}\approx {\begin{bmatrix}7.8102&4.4813&2.5607\\0&4.6817&0.9664\\0&0&-4.1843\\\end{bmatrix}}=R}
이 새로운 행렬
A
3
{\displaystyle A_{3}}
은 QR 분해 을 수행하는데 필요한 상삼각행렬
R
{\displaystyle R}
이다.
Q
{\displaystyle Q}
는 이제 다음과 같은 방식으로 회전 행렬의 전치 를 사용하여 형성된다.
Q
=
G
1
T
G
2
T
{\displaystyle Q=G_{1}^{T}\,G_{2}^{T}}
Q
≈
[
0.7682
0.3327
0.5470
0.6402
−
0.3992
−
0.6564
0
0.8544
−
0.5196
]
{\displaystyle Q\approx {\begin{bmatrix}0.7682&0.3327&0.5470\\0.6402&-0.3992&-0.6564\\0&0.8544&-0.5196\\\end{bmatrix}}}
Q
R
=
A
{\displaystyle QR=A}