표준기저를 통한 변환 행렬 유도
표준기저(standard basis)는 \(\mathbb{R}^n\)에서 가장 직관적으로 정의되는 기저로서, 선형변환을 행렬로 표현하기에 매우 편리하다. 특히 표준기저에 대한 좌표를 이용하면, 선형변환 \(T: \mathbb{R}^n \to \mathbb{R}^m\)을 직접 행렬 곱셈으로 해석할 수 있다.
구체적으로, \(\mathbb{R}^n\)의 표준기저를 다음과 같이 표기한다.
\[\begin{gathered} \mathbf{e}_1 = (1,0,0,\dots,0), \\[6pt] \mathbf{e}_2 = (0,1,0,\dots,0), \\[6pt] \vdots \\[6pt] \mathbf{e}_n = (0,0,\dots,0,1). \\[6pt] \end{gathered}\]임의의 벡터 \(\mathbf{x} = (x_1,x_2,\dots,x_n)\in \mathbb{R}^n\)는 \[ \mathbf{x} = x_1 \mathbf{e}_1 + x_2 \mathbf{e}_2 + \dots + x_n \mathbf{e}_n \] 으로 표현된다. 이때 \(\mathbf{x}\)의 표준기저에 대한 좌표벡터는 \[ [\mathbf{x}]_E = \begin{pmatrix}x_1 \\ x_2 \\ \vdots \\ x_n\end{pmatrix} \] 라고 할 수 있다. (“\(E\)”는 표준기저를 가리키기 위한 기호로 사용한다.)
표준기저를 사용한 선형변환의 행렬 표현
선형변환 \(T: \mathbb{R}^n \to \mathbb{R}^m\)이 주어졌다고 하자. 이때, 표준기저의 각 벡터 \(\mathbf{e}_j\)에 대한 이미지를 살펴보면 다음과 같이 표현할 수 있다.
\[ T(\mathbf{e}_1) = \begin{pmatrix} a_{11}\\ a_{21}\\ \vdots\\ a_{m1} \end{pmatrix}, \quad T(\mathbf{e}_2) = \begin{pmatrix} a_{12}\\ a_{22}\\ \vdots\\ a_{m2} \end{pmatrix}, \quad \dots \quad T(\mathbf{e}_n) = \begin{pmatrix} a_{1n}\\ a_{2n}\\ \vdots\\ a_{mn} \end{pmatrix}. \]
즉, \(T(\mathbf{e}_j)\)는 \(\mathbb{R}^m\)의 벡터이므로, \(m\)개의 좌표로 이루어진 열벡터로 나타낼 수 있다. 이렇게 구성된 좌표들을 열 단위로 배치하면, 다음과 같은 행렬 \(\mathrm{M}(T)\)를 얻는다.
\[ \mathrm{M}(T) = \begin{pmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{pmatrix}. \]
이 행렬 \(\mathrm{M}(T)\)가 의미하는 바는, \(\mathbf{e}_1\)을 어디로 보내는지, \(\mathbf{e}_2\)를 어디로 보내는지가 각각 1열, 2열 등에 기록되어 있다는 것이다. 한편, 임의의 벡터 \(\mathbf{x}\in \mathbb{R}^n\)에 대해서는 다음과 같은 식이 성립한다. \[\begin{aligned} T(\mathbf{x}) &= T(x_1 \mathbf{e}_1 + x_2 \mathbf{e}_2 + \dots + x_n \mathbf{e}_n) \\[6pt] &= x_1 T(\mathbf{e}_1) + x_2 T(\mathbf{e}_2) + \dots + x_n T(\mathbf{e}_n). \end{aligned}\] 따라서 좌표벡터 관점에서는 다음 식이 성립한다. \[ [T(\mathbf{x})]_{E} = \begin{pmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{pmatrix} \begin{pmatrix} x_1\\ x_2\\ \vdots\\ x_n \end{pmatrix} = \mathrm{M}(T)\,[\mathbf{x}]_{E} . \] 즉, 선형변환 \(T\)를 표준기저에서 바라보았을 때 \(\mathrm{M}(T)\)란 행렬이 나타나며, 이 행렬의 곱셈을 통해 \(\mathbf{x}\)가 \(T(\mathbf{x})\)로 매핑되는 과정을 계산할 수 있다.
행렬 유도 과정 정리
- \(\mathbf{e}_j\)의 이미지 확인: 표준기저 \(\mathbf{e}_1, \dots, \mathbf{e}_n\) 각각을 \(T\)에 대응시켜, \(\mathbb{R}^m\)의 어떤 벡터가 되는지 구한다.
- 열벡터 구성: \(T(\mathbf{e}_j)\)를 \(\mathbb{R}^m\)의 좌표로 나타내, 열로 배치한다. 이렇게 해서 나온 \(m \times n\) 행렬이 표준기저에 대한 변환 행렬 \(\mathrm{M}(T)\)이다.
- 임의 벡터 \(\mathbf{x}\)에 대한 계산: \(\mathbf{x}=x_1\mathbf{e}_1+\dots+x_n\mathbf{e}_n\)이므로 \[ T(\mathbf{x}) = \mathrm{M}(T)\,[\mathbf{x}]_{E} \] 로 쉽게 표현된다. 즉, \(\mathbf{x}\)의 표준기저 좌표벡터에 \(\mathrm{M}(T)\)를 곱하면, 결과가 \(T(\mathbf{x})\)의 표준기저 좌표벡터가 된다.
이러한 과정을 통해, 모든 선형변환은 표준기저 기준에서 어떤 행렬로 나타낼 수 있음이 자명해진다. 또한 행렬 연산은 매우 효율적인 계산 도구이므로, 이후 선형연립방정식의 해법, 고유값·고유벡터 문제, 선형최적화 등 다양한 응용에서 “선형변환 = 행렬 곱셈”이라는 관점이 매우 유용하게 쓰인다.
다른 기저로의 확장
방금 살펴본 것처럼, 표준기저를 사용하면 선형변환을 행렬로 나타내기가 쉽다. 그러나 현실적으로는 표준기저가 아닌 임의의 기저를 선택해야 하는 상황도 많다. 이때도 선형변환을 행렬로 나타낼 수 있지만, 행렬이 달라진다는 점을 이해하는 것이 중요하다. 기본 아이디어는 “서로 다른 기저 간의 좌표 변환을 어떻게 처리하느냐”라는 문제와 연결된다.
임의의 기저에서의 선형변환 행렬
벡터공간 \(V\)와 \(W\)가 유한 차원이고, 선형변환 \(T : V \to W\)가 주어졌다고 하자. \(V\)의 한 기저를 \(B_V = \{\mathbf{v}_1, \dots, \mathbf{v}_n\}\)라 하고, \(W\)의 한 기저를 \(B_W = \{\mathbf{w}_1, \dots, \mathbf{w}_m\}\)라고 하자. 이때, 기저 \(B_V\)에서 기저 \(B_W\)로 가는 선형변환 \(T\)의 행렬 표현 \(\mathrm{M}_{B_V \to B_W}(T)\)는 다음과 같은 방법으로 구할 수 있다.
- \(T(\mathbf{v}_j)\)를 기저 \(B_W\)로 표현
- 즉, \(T(\mathbf{v}_j) = a_{1j}\mathbf{w}_1 + a_{2j}\mathbf{w}_2 + \dots + a_{mj}\mathbf{w}_m.\)
- 그러면 그 좌표를 열벡터로 모아 \[ \mathrm{M}_{B_V \to B_W}(T) = \begin{pmatrix} a_{11} & a_{12} & \dots & a_{1n} \\ a_{21} & a_{22} & \dots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \dots & a_{mn} \end{pmatrix}. \] 라고 정의한다. 이때 \(\alpha_j = (\alpha_{1j}, \dots, \alpha_{mj})^T\)는 \(T(\mathbf{v}_j)\)의 \(B_W\)-좌표벡터이다.
이 행렬 \(\mathrm{M}_{B_V \to B_W}(T)\)는, \(\mathbf{x} \in V\)가 \(B_V\)-좌표에서 \[ [\mathbf{x}]_{B_V} = (x_1, x_2, \dots, x_n)^T \] 라고 할 때, 그 벡터의 \(T(\mathbf{x})\)를 \(B_W\)-좌표로 계산해 주는 역할을 한다. 즉, \[ [\,T(\mathbf{x})\,]_{B_W} = \mathrm{M}_{B_V \to B_W}(T)\,[\mathbf{x}]_{B_V}. \] 이와 같이 임의 기저에서의 행렬 표현을 구하면, 표준기저보다 더 복잡해 보일 수 있지만, 근본적으로 표준기저에서 하던 일과 동일하게 작동한다.
기저 변경과 행렬 표현의 변화
기저가 달라지면, 앞서 정의한 \(\mathrm{M}_{B_V \to B_W}(T)\)도 달라진다. 그러나 “실제 선형변환”은 변하지 않는다. 이는 이미 기저변환(transition) 행렬을 다룰 때 살펴본 유사변환(similarity transformation)과 같은 원리로 이해할 수 있다. 즉,
- \(B_V\) 대신 \(\tilde{B}_V\)라는 다른 기저를 택하면, \(\mathrm{M}_{\tilde{B}_V \to B_W}(T)\)가 생긴다.
- 두 행렬 \(\mathrm{M}_{B_V \to B_W}(T)\)와 \(\mathrm{M}_{\tilde{B}_V \to B_W}(T)\)는 어떤 가역(general invertible) 행렬을 사용하여 서로 변환될 수 있는 관계가 성립한다.
결과적으로, “어떤 기저에서 본 좌표계냐”에 따라 같은 선형변환을 표현하는 행렬은 달라지지만, 그 본질적인 변환(즉, \(T\)가 하는 일)은 바뀌지 않는다. 이를 한 줄로 요약하면,
\[ \mathrm{M}_{\tilde{B}_V \to B_W}(T) = \mathrm{C}^{-1} \,\mathrm{M}_{B_V \to B_W}(T)\, \mathrm{D}, \]
와 같은 형태(여기서 \(\mathrm{C}, \mathrm{D}\)는 기저변환 행렬들)가 될 수 있다. 이는 \(\mathrm{M}_{B_V \to B_W}(T)\)와 \(\mathrm{M}_{\tilde{B}_V \to B_W}(T)\)가 본질적으로 같은 정보를 담고 있음을 의미한다.
지금까지 살펴본 내용을 정리하면 다음과 같다.
- 임의의 기저 \(B_V\)에서 벡터공간 \(V\)의 원소 \(\mathbf{v}\)를 좌표화할 수 있고, 이를 \(\mathbf{v}\)의 “\(B_V\)-좌표”라 한다.
- 선형변환 \(T: V \to W\)가 주어졌을 때, 기저 \(B_V\) → 기저 \(B_W\)에 대한 행렬 표현 \(\mathrm{M}_{B_V \to B_W}(T)\)를 정의할 수 있다. 이는 각 기저벡터 \(\mathbf{v}_j \in B_V\)의 이미지를 \(\mathrm{B_W}\)-좌표로 나타내서 얻은 열벡터들을 모은 것이다.
- 만약 기저가 바뀌면(특히, \(B_V\)나 \(B_W\) 중 하나가 바뀌어도), 행렬 표현은 달라지나, 선형변환 자체(“어떤 \(\mathbf{x}\)도착점이 \(\mathbf{y}\)인지”)는 동일하다.
이런 내용을 통해, 표준기저가 아닌 일반 기저에서도 “선형변환 = 행렬 곱셈”이라는 관점을 유지할 수 있음을 알 수 있다. 다만, 표준기저에서는 행렬을 구하기가 가장 간단하다는 장점이 있고, 그 외 기저에서는 기저변환(transition) 과정을 거쳐 행렬 표현을 얻어야 하는 수고가 있다. 이후에는 이런 방법들을 활용해 복잡한 벡터공간(예: 행렬공간, 다항식공간 등)에서도 임의의 기저로 선형변환을 표현할 수 있게 된다.
정의역의 기저와 공역의 기저가 모두 바뀌는 경우
지금까지는 “하나의 기저”를 기준으로 선형변환의 행렬 표현을 구하는 방법을 봤다. 그러나 실제로는 다른 기저들이 여러 개 주어졌을 때, 이들 기저에 대한 행렬 표현을 상호 변환해야 하는 상황이 자주 발생한다. 예컨대, 벡터공간 \(V\)와 \(W\)에 각각 여러 기저가 있고, 어떤 기저로 얻어진 선형변환 행렬을 바탕으로 다른 기저에서의 행렬을 구하고 싶을 수 있다.
여러 기저가 주어진 경우의 예
다음과 같은 설정을 생각해 보자.
- 선형변환 \(T : V \to W\)가 주어져 있다.
- \(V\)에는 다음과 같은 두 개의 기저가 있다. \[ B_1 = \{\mathbf{v}_1,\dots,\mathbf{v}_n\}, \quad B_2 = \{\mathbf{\tilde{v}}_1,\dots,\mathbf{\tilde{v}}_n\}. \]
- \(W\)에도 다음과 같은 두 개의 기저가 있다. \[ C_1 = \{\mathbf{w}_1,\dots,\mathbf{w}_m\}, \quad C_2 = \{\mathbf{\tilde{w}}_1,\dots,\mathbf{\tilde{w}}_m\}. \]
우리는 이미 “기저 \(B_1\)에서 기저 \(C_1\)로 가는 선형변환 \(T\)”의 행렬표현 \(\mathrm{M}_{B_1 \to C_1}(T)\)를 알고 있다고 하자. 이 행렬은 임의의 벡터 \(\mathbf{x} \in V\)를 기저 \(B_1\)-좌표에서 받아, 기저 \(C_1\)-좌표로 대응해 주는 역할을 한다. 즉,
\[ [\,T(\mathbf{x})\,]_{C_1} = \mathrm{M}_{B_1 \to C_1}(T)\,[\mathbf{x}]_{B_1}. \]
그런데, 이제 우리는 “기저 \(B_2\)에서 기저 \(C_2\)로 가는 선형변환 \(T\)”의 행렬표현 \(\mathrm{M}_{B_2 \to C_2}(T)\)를 구해야 한다. 이를 위해선 기저 변경(transition)의 개념이 필수적으로 들어간다.
기저변환 행렬과 결합하기
핵심 아이디어는 다음과 같다:
- 기저 변경 행렬 - \(P_{B_1 \to B_2}\): 벡터의 \(B_1\)-좌표를 \(B_2\)-좌표로 바꿔 주는 행렬. - \(P_{C_1 \to C_2}\): 벡터의 \(C_1\)-좌표를 \(C_2\)-좌표로 바꿔 주는 행렬. 예를 들어, \(P_{B_1 \to B_2}\)가 있으면, \([\mathbf{x}]_{B_2} = P_{B_1 \to B_2}\,[\mathbf{x}]_{B_1}\) 식으로 좌표변환을 수행할 수 있다.
- \(\mathrm{M}_{B_1 \to C_1}(T)\)에서 시작 - 이미 알고 있는 “\(B_1\)-좌표 \(\to\) \(C_1\)-좌표” 변환 행렬을 활용한다.
- 좌표흐름 - 우리의 목표: “[\(\mathbf{x}\)]_{B_2}”를 넣었을 때 “[\(T(\mathbf{x})\)]_{C_2}”를 얻는 행렬을 구하는 것. 그러나 알고 있는 것은 “[\(\mathbf{x}\)]_{B_1} \to [T(\mathbf{x})]_{C_1}” 행렬이다. 따라서, \(\mathbf{x}\)의 \(B_2\)-좌표를 먼저 \(B_1\)-좌표로 바꾸어 \(\mathrm{M}_{B_1 \to C_1}(T)\)를 적용한 뒤, 결과를 \(C_2\)-좌표로 다시 바꿔야 한다.
결국, 아래와 같은 흐름도(Flow)를 생각할 수 있다:
1단계: \([\mathbf{x}]_{B_2} \xrightarrow{P_{B_2 \to B_1}} [\mathbf{x}]_{B_1}\)
2단계: \([\mathbf{x}]_{B_1} \xrightarrow{\mathrm{M}_{B_1 \to C_1}(T)} [T(\mathbf{x})]_{C_1}\)
3단계: \([T(\mathbf{x})]_{C_1} \xrightarrow{P_{C_1 \to C_2}} [T(\mathbf{x})]_{C_2}\)
이 세 과정을 모두 결합하면 다음과 같다. \[ [T(\mathbf{x})]_{C_2} = P_{C_1 \to C_2}\; \mathrm{M}_{B_1 \to C_1}(T)\; P_{B_2 \to B_1}\,[\mathbf{x}]_{B_2}. \] 이 합성곱이 우리가 원하는 \(\mathrm{M}_{B_2 \to C_2}(T)\) 행렬이 된다. 즉 다음 결과를 얻는다. \[ \mathrm{M}_{B_2 \to C_2}(T) = P_{C_1 \to C_2}\; \mathrm{M}_{B_1 \to C_1}(T)\; P_{B_2 \to B_1}. \]
지금까지 살펴본 내용을 요약하면 다음과 같다.
- \(P_{B_2 \to B_1}\) (또는 그 역행렬) - 각 벡터 \(\mathbf{\tilde{v}}_j \in B_2\)를 \(B_1\)-좌표로 표현하여 열벡터로 구성한다.
- \(P_{C_1 \to C_2}\) - 각 벡터 \(\mathbf{w}_j \in C_1\)를 \(C_2\)-좌표로 표현하여 열벡터로 구성한다. - (또는 그 역행렬을 구성할 수도 있는데, 어떤 방향의 기저변환인지 주의 깊게 확인하면 된다.)
- \(\mathrm{M}_{B_1 \to C_1}(T)\)는 이미 알고 있다고 가정.
이들을 곱하는 순서가 매우 중요하다. \(\mathbf{x}\)의 기저변환 → 선형변환 적용 → 기저변환이라는 단계별 흐름을 반드시 맞춰야 올바른 행렬 표현을 얻게 된다.
기저가 바뀔 때 선형변환 행렬의 변환 공식
유한 차원 벡터공간 \(V,W\)에서, 선형변환 \(T : V \to W\)가 주어졌다고 하자. 두 기저쌍 \((B_1, C_1)\)와 \((B_2, C_2)\)에 대해, 행렬 표현이 각각 \[ \mathrm{M}_{B_1 \to C_1}(T), \quad \mathrm{M}_{B_2 \to C_2}(T) \] 라고 하자. 또한, \[ P_{B_2 \to B_1} \quad\text{및}\quad P_{C_1 \to C_2} \] 를 기저변환 행렬(좌표 변환 행렬)이라 하면, 다음이 성립한다.
\[ \mathrm{M}_{B_2 \to C_2}(T) \;=\; P_{C_1 \to C_2} \;\mathrm{M}_{B_1 \to C_1}(T) \;P_{B_2 \to B_1}. \]
즉, \(\mathrm{M}_{B_2 \to C_2}(T)\)는 기저 변환 행렬들을 양 옆에서 곱해주는 형태로 얻어지며, 이를 통해 “임의의 기저에서 계산된 선형변환 행렬”을 “다른 기저에서의 선형변환 행렬”로 바꿀 수 있다.
하나의 선형변환 \(T\)도, 기저를 어떻게 잡느냐에 따라 그 행렬 표현이 달라진다. 위 공식을 사용하면 이미 구해 놓은 한 기저에서의 행렬 표현을 재활용하여, 다른 기저에서의 행렬 표현도 손쉽게 얻을 수 있다.