직교행렬(orthogonal matrix)

Last Updated on 2024-09-08 by BallPen

직교행렬(orthogonal matrix)이란 역행렬과 전치행렬이 같은 정방행렬을 말합니다.

기호로 표현하면 행렬 T를 직교행렬이라 할 때 다음 관계가 성립한다는 거에요.

\tag{D1}
T^{T} = T^{-1}

여기서 T^T는 행렬 T의 전치행렬, T^{-1}는 역행렬을 뜻해요.

이번 글에서는 직교행렬 및 그 성질에 대해 알아봅니다.

본문 그림 작성에 사용된 키노트 파일은 아래 링크에서 다운받을 수 있어요.

키노트 그림 파일: orthogonal_matrix.key

시작에 앞서 벡터의 내적회전변환행렬(rotation matrix)에 대해 잠시만 복습해봐요. 이를 알아야 직교행렬 및 그 성질을 알 수 있어요.

두 벡터가 있어요.

그중 한 벡터는 \vec A = A_x \hat x + A_y \hat y + A_z \hat z 이고, 다른 벡터는 \vec B = B_x \hat x + B_y \hat y + B_z \hat z 입니다.

이 두 벡터를 내적하면 다음과 같죠.

\tag{1-1}
\begin{align}
\vec A \cdot \vec B &= (A_x \hat x + A_y \hat y + A_z \hat z) \cdot (B_x \hat x + B_y \hat y + B _z \hat z)\\[9pt]
&= A_x B_x + A_y B_y + A_z B_z
 \end{align}

아래 [그림 1]은 z축을 중심으로 검정색 좌표계를 \theta만큼 회전시켜 파랑색 좌표계로 변환한 모습이에요.

이때 어떤 빨강색 벡터 \vec A가 있는데요.

이 벡터는 좌표계가 회전될지라도 아래 (1-2)식처럼 벡터 성분은 달라지지만 벡터의 크기와 방향은 변하지 않아요. 하지만 좌표계 안에 있는 사람은 벡터의 크기는 동일하지만 마치 벡터가 회전한 것처럼 보일거에요.

[그림 1] <span class="katex-eq" data-katex-display="false">z</span>축을 중심으로 검정색 좌표계를 파랑색 좌표계로 <span class="katex-eq" data-katex-display="false">\theta</span>만큼 회전시킨 모습
[그림 1] z축을 중심으로 검정색 좌표계를 파랑색 좌표계로 \theta만큼 회전시킨 모습
\tag{1-2}
\begin{align}
\vec A = x \hat x + y \hat y + z \hat z = x^\prime \hat {x^\prime} + y^\prime \hat {y^\prime} + z^\prime \hat {z^\prime}
\end{align}

이때 xyz공간과 이 공간을 \theta만큼 회전시킨 x^\prime y^\prime z^\prime공간 사이에서 벡터의 좌표 변환관계는 다음과 같아요.

\tag{1-3}
\begin{pmatrix}
x^\prime \\
y^\prime \\
z^\prime
\end{pmatrix}
= 
{\color{red}
\begin{pmatrix}
\cos \theta & \sin \theta & 0 \\
-\sin \theta & \cos \theta & 0\\
0& 0 & 1\\
\end{pmatrix}}
\begin{pmatrix}
x\\
y\\
z
\end{pmatrix}

윗 식에서 빨강색 행렬은 원래좌표계의 벡터 성분을 회전한 좌표계로 변환시키는 역할을 하며, 이를 회전변환행렬(rotation matrix)이라고 불러요.

그리고 (1-3)식을 간단히 기호로 표현하면 다음 (1-4)식과 같죠. 즉 벡터 \vec A에 회전변환행렬 T를 취함으로써 변환된 벡터 \vec {A^\prime}이 구해지는 거에요.

\tag{1-4}
\vec{A^{\prime}} = T\vec A

그럼 이제부터 이 글의 목적인 직교행렬에 대해 알아봐요.

벡터를 내적하면 그 크기는 (1-1)식으로 주어집니다. 즉, 각 벡터의 성분끼리 곱한 후 합하면 되는데요. 이 결과와 동일한 결과가 얻어지도록 행렬로 표현할 수도 있어요.

예를 들어, 한 벡터는 \vec A = A_x \hat x + A_y \hat y + A_z \hat z 이고, 다른 벡터는 \vec B = B_x \hat x + B_y \hat y + B_z \hat z 라고 할 때, 이 두벡터의 내적을 행렬로 표현하면 다음과 같아요.

\tag{2-1}
\begin{align}
\vec A \cdot \vec B &= 
\begin{pmatrix}
A_x & A_y & A_z
\end{pmatrix}
\begin{pmatrix}
B_x \\
B_y\\
B_z
\end{pmatrix}
\\
&=A_x B_x + A_yB_y + A_z B_z
\end{align}

그 계산 결과가 (1-1)식의 내적 결과와 동일함을 알 수 있어요. 그러므로 벡터의 내적을 행렬로 표현한다는 것은 앞에 있는 벡터를 전치한 후 뒤에 있는 벡터와 곱하면 되는 거에요

이를 식으로 표현하면 다음과 같아요.

\tag{2-2}
\vec A \cdot \vec B = A^{T} B

이렇게 해서 벡터의 내적을 행렬로 계산하는 방법까지 알아봤어요.

그럼 다음 상황을 가정해봐요.

아래 [그림 2]처럼 두 벡터 \vec r_1, \vec r_2가 있는데요. 이 벡터들에 회전변환행렬 T를 적용하면 회전된 파랑색 좌표계에서의 벡터 {\vec r_1}^{\prime}, {\vec r_2}^{\prime}이 얻어질거에요.

[그림 2] 좌표계를 <span class="katex-eq" data-katex-display="false">\theta</span>만큼 회전시켜도 빨강색 두 벡터의 크기와 사이각은 변하지 않아요.
[그림 2] 좌표계를 \theta만큼 회전시켜도 빨강색 두 벡터의 크기와 사이각은 변하지 않아요.

이를 식으로 표현하면 다음과 같아요.

\tag{2-3}
\begin{align}
{\vec r_1}^{\prime} = T~\vec r_1\\[15pt]
{\vec r_2}^{\prime} = T~\vec r_2\\
\end{align}

그리고는 위 식에 있는 두 벡터를 내적해봐요. 이때 (2-2)식의 관계를 적용하면 됩니다.

\tag{2-4}
\begin{align}
{\vec r_1}^{\prime} \cdot {\vec r_2}^{\prime} &= ({\vec r_1}^{\prime})^T {\vec r_2}^{\prime}\\
&=(T ~\vec r_1)^{T} (T ~\vec r_2)\\
&=({\vec r_1}^T T^{T}) (T~\vec r_2)\\
&={\vec r_1}^T T^T T \vec r_2\\

&={\vec r_1}^T {\color{red}(T^T T)} \vec r_2

\end{align}

그런데 이때 (2-4)식의 빨강색 부분이 단위행렬이 된다면 다음 관계가 성립합니다. 즉 변환 전 두 벡터의 내적이 변환 후 두 벡터의 내적과 같아지는 것이죠.

\tag{2-5}
{\vec r_1}^{\prime} \cdot {\vec r_2}^\prime  = \vec r_1 \cdot \vec r_2

이 말은 변환 전후 두 벡터의 크기와 두 벡터 사이의 각도가 변하지 않고 보존된다는 말과 같아요.

물론 이 조건이 성립하기 위해서는 (2-4)식의 빨강색 부분이 단위행렬이 되어야 해요. 다시 말해 다음의 관계가 만족되어야 합니다.

\tag{2-6}
T^T T = I

한편 다음 (2-7)식과 같이 행렬 T에 그 행렬의 역행렬 T^{-1}를 곱해도 단위행렬이 되잖아요.

\tag{2-7}
T^{-1} T =I

결국 (2-5)식이 성립되기 위해서는 (2-6)식과 (2-7)식이 같아야 하므로 다음 관계들도 성립합니다.

\tag{2-8}
\begin{align}
&T^T = T^{-1}\\[15pt]
&T^T T = T T^T = I
\end{align}

그리고 (2-8)식을 만족하는 행렬 T를 직교행렬이라 부르고, (2-3)식과 같이 직교행렬로 벡터를 변환하는 것을 직교변환(orthogonal transformation)이라 합니다.

앞에서 설명드린대로 직교행렬이란 그 행렬의 전치행렬과 역행렬이 서로 같은 행렬을 말합니다.

그렇다면 이 글에서 예로 든 (1-3)식의 회전변환행렬도 직교행렬일까요? 직교행렬이라면 회전변환행렬의 전치행렬과 역행렬은 서로 같아야 해요.

우선 (1-3)식의 회전변환행렬 T의 전치행렬은 다음과 같아요. 행과 열을 바꾸어주면 되죠.

\tag{3-1}
T^T = 
\begin{pmatrix}
\cos \theta & -\sin \theta & 0\\
\sin \theta & \cos \theta &0\\
0 & 0 & 1
\end{pmatrix}

이번에는 역행렬을 구해봐요. 아래 식에서 det(A)행렬식, c_{ij}여인수(cofactor)를 뜻해요.

\tag{3-2}
\begin{align}
T^{-1} &= {1 \over det(T)}
\begin{pmatrix}
c_{11} & c_{12} & c_{13}\\
c_{21} & c_{22} & c_{23}\\
c_{31} & c_{32} & c_{33}
\end{pmatrix}
^{T}\\[15pt]
&={1 \over{\sin^2 \theta}+\cos^2 \theta} 
\begin{pmatrix}
\cos \theta & \sin \theta & 0\\
-\sin \theta & \cos \theta & 0\\
0 & 6 & \sin^2 \theta + \cos^2 \theta
\end{pmatrix}^T\\[15pt]
&=
\begin{pmatrix}
\cos \theta & -\sin \theta & 0\\
\sin \theta & \cos \theta & 0\\
0 & 0 & 1
\end{pmatrix}
\end{align}

그 결과 (3-1)식과 (3-2)식의 결과가 서로 같다는 것을 알 수 있어요. 따라서 회전변환행렬은 직교행렬입니다.

앞의 (2-6)식에서 T^T T = I가 성립한다고 말씀드렸어요. 그런데 이 식이 성립한다는 의미는 직교행렬을 구성하는 열벡터(또는 행벡터)가 서로 직교한다는 의미를 가져요.

예를 들어 (1-3)식의 회전변환행렬을 적용해보면 다음과 같아요.

\tag{3-3}
T^T T=
\begin{pmatrix}
{\color {red}\cos \theta} & {\color {red}-\sin \theta} & \color {red}0\\
\sin \theta & \cos \theta & 0\\
0 & 0 &1
\end{pmatrix}
\begin{pmatrix}
{\color{red}\cos \theta} & \color{blue}\sin \theta & \color{green}0\\
{\color{red}- \sin \theta} & \color{blue}\cos \theta & \color{green}0\\
\color{red}0 & \color{blue}0 & \color{green}1
\end{pmatrix}=
\begin{pmatrix}
\color {red}1 & \color{blue}0 & \color{green}0\\
0 & 1 & 0\\
0 & 0& 1
\end{pmatrix}

위 식에 따르면 전치행렬의 빨강색 1행 벡터와 직교행렬의 1열 벡터를 곱하면 우측 단위행렬의 빨강색 1이 얻어질거에요. 같은 방식으로 전치행렬의 빨강색 1행 벡터와 직교행렬의 2열 벡터를 곱하면 단위행렬의 파랑색 0이 얻어져요. 또한 전치행렬의 1행 벡터와 직교행렬의 3열 벡터를 곱하면 단위행렬의 녹색 0이 얻어집니다.

이 세 경우를 식으로 쓰면 다음과 같이 두 벡터를 내적한 것과 표현이 같아요.

\tag{3-4}
\begin{align}
&\cos \theta \cos \theta + (- \sin \theta)(- \sin \theta) + 0 = 1\\
&\cos \theta \sin \theta + (- \sin \theta)\cos \theta + 0 = 0\\
&(\cos \theta) 0 + (- \sin \theta)0 + 0 =0

\end{align}

이때 한가지 특징은 곱해지는 두 벡터가 같으면 1, 서로 다르면 0이 나와요. 이것은 두 단위 벡터를 내적할 때 두 벡터가 서로 같으면 평행하므로 1,서로 다르면 수직이 되어 0인 결과와 같죠.

그리고 (3-4)식의 결과는 직교행렬의 1열과 1열, 1열과 2열, 1열과 3열을 서로 내적한 것과 계산값이 동일함을 알 수 있어요. 그래서 자기자신과의 내적은 1이지만 다른 벡터와의 내적은 수직으로 0이 되어 직교행렬의 열벡터(또는 행벡터)끼리는 서로 직교한다고 말하는 거에요.

위에서 설명한대로 직교행렬의 열벡터(또는 행벡터)끼리 내적한 결과가 1 또는 0이 나오기 위해서는 각 열벡터(또는 행벡터)의 크기가 1이 되어야 해요.

예를 들어 (3-3)식에 있는 회전변환행렬 T의 1행 크기와 1열의 크기를 구해보면 모두 1이 됨을 알 수 있어요. 물론 다른 행과 열의 크기를 모두 구해도 1이에요.

\tag{3-5}
\begin{align}
&(1행 ~~크기) ~~\sqrt{\cos^2 \theta + \sin^2 \theta + 0^2} =1\\
&(1열~~크기)~~\sqrt{\cos^2 \theta + (- \sin ^2 \theta) + 0} = 1
\end{align}

(3-3)식에서 T^T, T 모두 직교행렬인데요. 이 둘을 곱하면 단위행렬이 나왔어요. 그런데 단위행렬도 전치행렬과 역행렬이 같고, 서로 다른 열벡터끼리의 내적이 0이므로 서로 직교해요. 그러므로 단위벡터도 직교행렬임을 판별할 수 있어요.

따라서 이를 일반화하면 두 직교행렬을 곱해도 그 결과는 직교행렬이 됩니다.

흥미롭고 도움이 되는 글이었나요? 리뷰를 부탁드립니다.
[Total: 1 Average: 5]

1 thought on “직교행렬(orthogonal matrix)”

Leave a Comment