5. 좌표계 변환
벡터 : 크기와 방향을 가진 물리량
좌표계를 도입한 후, 벡터의 시작점을 원점으로 맞추고
끝점의 위치를 벡터 \(V\)의 수학적 표현으로 정의
좌표계(Corrdinate System)
좌표계 :: 좌표값 = 행렬 :: 벡터
- 행렬은 좌표계
- 벡터는 좌표값
$$
v = \begin{bmatrix} a \\ b \end{bmatrix} =
\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} a \\ b \end{bmatrix} =
a\begin{bmatrix} 1 \\ 0 \end{bmatrix} + b\begin{bmatrix} 0 \\ 1 \end{bmatrix}
$$
\(v\)벡터는 \(xy\)-평면 상에서는 원점 \((0,0)\)에서 시작하여 \((a,b)\)에서 끝나는 벡터를 의미한다.
수식의 가가 요소는 다음과 같다.
- \( a\begin{bmatrix} 1 \\ 0 \end{bmatrix} \) : \(x\)-축의 단위로 \(a \)번 전진함을 뜻함
- \( b\begin{bmatrix} 0 \\ 1 \end{bmatrix} \) : \(y\)-축의 단위로 \(b \)번 전진함을 뜻함
- \(xy\)-좌표계 : \( \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \)
각 항에서 동일한 지점을 표현하면 다음과 같다
$$
\begin{bmatrix} v1 & v2 \end{bmatrix} \begin{bmatrix} 4 \\ 3 \end{bmatrix} =
\begin{bmatrix} a \\ b \end{bmatrix}
$$
- (우항) : \(e_1\)과 \(e_2\)를 기저(basis)로 가지는 표준좌표계에서의 좌표값은 \((a, b)\)이다.
$$
\begin{bmatrix} v1 & v2 \end{bmatrix} \begin{bmatrix} 4 \\ 3 \end{bmatrix} =
\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} a \\ b \end{bmatrix}
$$
벡터만 있으면 그 앞에는 표준좌표계(Standard Cordinate System)라고 하는 항등행렬이 존재함(생략됨)
- (좌항) : \(v_1\)과 \(v_2\)를 기저(basis)로 가지는 좌표계에서의 좌표값은 \( (4, 3)\)이다.
\(Ax = b \)에서
- 행렬 \(A\)는 좌표계
- 벡터 \(x\)는 \(A\)좌표계에서의 좌표값
- 벡터 \(b\)는 표준좌표계에서의 좌표값
좌표계 변환(Change of Basis)
EX)
$$ Ax = b $$
$$
\begin{bmatrix} 1 & -1 \\ 2 & 2 \end{bmatrix} \begin{bmatrix} 2 \\ 1 \end{bmatrix} =
\begin{bmatrix} 1 \\ 6 \end{bmatrix}
$$
표준좌표계에서 어떤 벡터의 좌표값은 \(b\)인데, 그 좌표값이 \(A\)좌표계에서는 \(x\)이다.
$$ x = A^1b $$
$$
\begin{bmatrix} \frac{1}{2} & \frac{1}{4} \\ -\frac{1}{2} & \frac{1}{4} \end{bmatrix} \begin{bmatrix} 1 \\ 6 \end{bmatrix} =
\begin{bmatrix} 2 \\ 1 \end{bmatrix}
$$
표준좌표계에서 어떤 벡터의 좌표값은 \(x\) 인데, 그 좌표값이 \(A^-1\)좌표계에서는 \(b\) 이다.
$$
A\begin{bmatrix}v\end{bmatrix}_A = B\begin{bmatrix}v\end{bmatrix}_B
$$
- \(B\)를 기준으로(\(B\)를 표준좌표계로 하고) \( \begin{bmatrix} v \end{bmatrix}_A \)의 좌표를 보고 싶으면
$$
B^-1A\begin{bmatrix}v\end{bmatrix}_A = \begin{bmatrix}v\end{bmatrix}_B
$$ - \(A\)를 기준으로(\(A\)를 표준좌표계로 하고) \( \begin{bmatrix} v \end{bmatrix}_B \)의 좌표를 보고 싶으면
$$
\begin{bmatrix}v\end{bmatrix}_A = A^-1B\begin{bmatrix}v\end{bmatrix}_B
$$
\(Ax = b\)는 "\(A\)라는 좌표계에서 \(x\)는 얼만큼, \(y\)는 얼만큼을 가야 표준좌표계에서의 \(b\)라는 좌표값에 도착하는지"를 뜻함
예제 # 1
벡터 \(v\)가ㅏ 표준좌표계에서 \( (2, 3)\)를 기저벡터로 가지는 새로운 좌표계를 도입했을 때, 해당 벡터 \(v\)는 어떤 좌표값을 가질까?
$$
\begin{bmatrix} 3 & 1 \\ 1 & -2 \end{bmatrix} \begin{bmatrix} v \end{bmatrix} =
\begin{bmatrix} 2 \\ 3 \end{bmatrix}
$$
-> 가우스 소거법이나 역행렬을 이용해서 \( v(x_1, x_2)\)를 구하면 됨
좌표계에 따른 좌표값이 달라도 동일한 지점이 될 수 있다
예제 # 2
벡터 \(v\)가 표준좌표계에서 \((2, 1, 3) \)으로 표현된다고 한다.
벡터 \((1,3,1)\)과 \(1, -2, 2)\)를 기저벡터로 가지는 새로운 좌표계를 도입했을 때, 해당 벡터 \(v\)는 어떤 좌표값을 가질까?
$$
\begin{bmatrix} 1 & 1 \\ 3 & -2 \\ 1 & 2 \end{bmatrix} \begin{bmatrix} v \end{bmatrix} =
\begin{bmatrix} 2 \\ 1 \\ 3 \end{bmatrix}
$$
-> 가우스 소거법이나 역행렬을 이용해서 \(v(x_1, x_2)\)를 구하면 됨
좌표계가 열벡터 2개로 이루어져 있기 때문에 3차원 공간에 있는 2차원 평면만 다닐 수 있음
3차원 좌표계를 가지지만 왜 2차원 좌표값을 가질까?
\(A\)는 3차원 좌표계를 가지지만 2개의 벡터로 이루어져 있다.
따라서 각각 다른 방향을 가리키는 두 벡터를 이용해서만 갈 수 있는 좌표값만 접근할 수 있다.(두 벡터로 이루어진 평면)
그리고 2개의 열벡터로 이루어져 있기 때문에 1개의 열벡터 \(b\)가 되기 위해서는 다음 식을 만족해야 한다.
$$3 \times 2 * [v] = 3 \times 1\ $$
$$[v] : 2 \times 1 $$
6. 선형변환
함수(Function)
입력이 들어가면 어떤 기능을 수행한 다음 출력을 반환
입력이 정의되는 집합 D를 정의역(domain)
출력이 정의되는 집합 C를 공역(codomain)이라 하며,
공역 중 실제 함수의 출력이 나오는 부분집합 f(x)를 치역(range)라고 한다.
함수 f는 아래 그림과 같이 D의 각 원소 x가 C의 한 원소 y(∋f(x)) 에 대응되는 매핑룰(mapping rule)이다.

만일 함수 \(f\)가 아래 두가지 조건을 만족하면 함수 \(f\)는 선형함수(linear function)이라고 한다.
(선형함수 : 일직선으로 나타나는 함수)
- \( f(x+y) = f(x)+f(y) \)
- \(f(cx) = cf(x) (단, c는 임의의 스칼라) \)
행렬변환(Matrix Transformation)
변환(Transformation)
함수의 입력이 \(n\)-벡터이고, 출력이 \(m\)-벡터인 함수 \(T\)가 있을 때,
함수의 입출력이ㅣ 벡터인 함수를 변환(Transfromation)이라고 한다.
$$
T:\mathbb{R^n}\rightarrow \mathbb{R^m}
$$
만약 \(n = m \)인 경우, 해당 변환을 연산자(operator)라고 한다.
\(m+n\) 행렬 \(A\)에 대해 \(Ax\)는 \(n\)-벡터를 입력으로 받아 \(m\)-벡터를 출력으로 내는 변환 \(Ax = T_A(x) \)으로 볼 수 있다.
이 변환은 행렬이 정의하기 때문에 행렬변환(matrix Transformation)이라고 한다.
$$
T_A:\mathbb{R^n}\rightarrow \mathbb{R^m}
$$
선형변환(linear Transformation)
그런데, 행렬변환은 다음의 선형함수 성질을 모두 만족하기 때문에 선형변환(linear Transformation)이다.
$$
A(x+y)=A(x)+A(y)
A(cx)=cA(x)
$$
- 좌항의 + 는 \(n\)-벡터의 덧셈, 우항의 +는 \(m\)-벡터의 덧셈
- 좌항의 \(cx\)는 \(n\)-벡터의 스케일링, 우항의 \(cA(x)\)는 \(m\)-벡터의 스케일링
\(m \times n\) 행렬은 \(n\)-벡터를 입력으로 받아 \(m\)-벡터를 출력을 내는 선형변환이며,임의의 선형 변환은 행렬로 표현 가능하다. 즉, 행렬은 선형변환의 구현체이다.
표준행렬(Standard Matrix)
행렬변환이 입출력이 벡터로 정의된 선형함수라면, 해당 함수를 어떻게 코딩할 수 있을까?
다음 절차를 통해 원하는 방식대로 동작하는 행렬변환을 코딩할 수 있다.
- 구현하고자 하는 기능(function)의 입력과 출력이 벡터로 정의되는지 확인
- 구현하고자 하는 기능이 선형인지 확인
- 입력이 \(n\)-벡터이고, 출력이 \(m\)-벡터이면 \(m \times n\) 표준행렬(Standard Matrix)을 구성
표준행렬 구하기
- \(n\)-차원 표준기저벡터 \({e_1, e_2, \dot, e_n} \)를 생각한다. -> 항등행렬
- 각 \(n\)-차원 표준기저벡터 \(e_i\)에 대해, 우리가 원하는 기능을 동작시켜 얻은 결과인 \(m\)-차원 벡터 \(T(e_i)\)를 표준행렬의 각 열에 적는다.
표준행렬을 이요한 선형변환 코딩 예제
-> 2차원 벡터를 입력으로 받아, 해당 벡터를 x-축에 프로젝션하는 기능을 구현하자
- 구현하고자 하는 기능의 입력과 출력이 벡터로 정의되는지 확인
입력으로 \( (3, 2)\)인 2-벡터를 넣으면 출력으로 \((3, 0) \) 2-벡터로 정의됨
- 구현하고자 하는 기능이 선형인지 확인
출력이 x축을 그리기 때문에 선형
- \(m \times n\) 표준행렬 구성
- 입력으로 첫 번째 기저벡터 \((1, 0)\)를 넣어서 나오는 출력을 첫 번째 열벡터에 추가
$$
f(\begin{bmatrix} 1 \\ 0 \end{bmatrix}) \rightarrow \begin{bmatrix} 1 \\ 0 \end{bmatrix}
\Rightarrow
T = \begin{bmatrix} 1 & * \\ 0 & * \end{bmatrix}
$$ - 두 번째 기저벡터 \((0, 1)\)을 넣어서 나오는 출력을 두 번째 열벡터에 추가
$$
f(\begin{bmatrix} 0 \\ 1 \end{bmatrix}) \rightarrow \begin{bmatrix} 0 \\ 0 \end{bmatrix}
\Rightarrow
T = \begin{bmatrix} 1 & 0 \\ 0 & 0 \end{bmatrix}
$$ - 결과적으로 \( m \times n\)의 표준행렬은
$$
T = \begin{bmatrix} 1 & 0 \\ 0 & 0 \end{bmatrix}
$$
- 입력으로 첫 번째 기저벡터 \((1, 0)\)를 넣어서 나오는 출력을 첫 번째 열벡터에 추가
'프로그래머스인공지능스쿨' 카테고리의 다른 글
| [2주차 - Day3] 인공지능 수학 - 자료의 정리(2) (0) | 2021.04.29 |
|---|---|
| [2주차 - Day3] 인공지능 수학 - 자료의 정리(1) (0) | 2021.04.29 |
| [2주차 - Day2] 인공지능 수학 - 미적분(1) (0) | 2021.04.28 |
| [2주차 - Day01] 인공지능 수학 - 선형대수 (0) | 2021.04.26 |
| [1주차 - Day04] 파이썬을 무기로, 코딩테스트 광탈을 면하자! (2) (0) | 2021.04.23 |