[게임 수학] #6 행렬(1)

송칭·2023년 12월 6일

게임 수학

목록 보기
6/9

선형성

선형성은 직선의 형태를 띄는 성질 자체를 의미하는데. 수학적으로는 가법성과 1차 동차성을 만족하는 함수의 성질로 정의된다.

여기서 가법성은 정의역의 두 함수들에 대한 함수와 항상 각 함수의 값 합계가 서로 같은 값을 반환한다는 함수의 성질로, f(x+y)=f(x)+f(y)f(x+y)=f(x)+f(y)이다.
1차 동차성은 모든 독립변수를 kk배 증가시켰을 때, 종속변수가
k1k^1배 만큼 증가하는 성질로, f(ky)=kf(x)f(k*y)=k*f(x)이다.

이런 선형성을 만족하는 함수를 선형 함수라고 한다.

벡터 공간에서의 적용

예를 들어, 2차원 벡터 v\overrightarrow{v}를 입력으로 받아 출력 w\overrightarrow{w}를 만들어내는 함수 f(v)=f(x,y)=(ax+by,cx+yd)f(\overrightarrow{v}) = f(x,y) = (ax+by, cx+yd)를 가정해보자.

이 함수는 가법성과 1차 동차성을 만족하므로 선형 함수이다.

표준기저벡터의 선형 결합으로 만들어진 벡터 공간은 선형성을 띄게 되는데, v\overrightarrow{v}w\overrightarrow{w}의 경우처럼 입출력이 동일한 차원(2차원)를 갖는 경우 변환이라는 대응관계로 나타낼 수 있다. 변환은 선형 함수로서의 특성을 가지며, 입력과 출력 간의 선형 관계를 유지한다.

행렬

행렬은 숫자를 직사각형 형태로 배열한 것으로 보통 가로줄을 행(row), 세로줄을 열(column)이라고 한다. 예를 들어 다음 행렬은 2x5행렬이며, 2행과 5열을 갖는다.

[12345678910]\begin{bmatrix}1&2&3&4&5\\6&7&8&9&10\\ \end{bmatrix}

행렬은 선형 변환을 쉽게 계산할 수 있는 도구로 많이 활용된다.

정방행렬

행과 열의 크기가 같은 행렬로, 선형 변환을 표현할 때 사용된다.
f(x,y)=(ax+by,cx+yd)f(x,y) = (ax+by, cx+yd)는 2x2 크기의 다음과 같은 정방행렬로 표현된다.

[abcd]\begin{bmatrix}a&b\\c&d\\ \end{bmatrix}

열벡터와 행벡터

(x,y)(x,y)로 이루어진 2차원 벡터공간은 열백터행벡터로 표기 할 수 있다.

열벡터 [xy]\begin{bmatrix}x\\y\\ \end{bmatrix}, 행벡터 [xy]\begin{bmatrix}x&y\\ \end{bmatrix}

[abcd]\begin{bmatrix}a&b\\c&d\\ \end{bmatrix}

2x2 크기의 위 정방행렬은 다음과 같은 2개의 열벡터와 2개의 행벡터를 갖는다.

Arow1=(a,b)A_{row1}=(a,b)
Arow2=(c,d)A_{row2}=(c,d)
Acol1=(a,c)A_{col1}=(a,c)
Acol2=(b,d)A_{col2}=(b,d)

행렬의 연산

행렬 간 덧셈

A=[abcd],B=[efgh]A = \begin{bmatrix}a&b\\c&d\\ \end{bmatrix}, B = \begin{bmatrix}e&f\\g&h\\ \end{bmatrix}

A+B=[a+eb+fc+gd+h]A+B = \begin{bmatrix}a+e&b+f\\c+g&d+h\\ \end{bmatrix}

행렬과 스칼라 곱셈

A=[abcd]A = \begin{bmatrix}a&b\\c&d\\ \end{bmatrix}

kA=[kakbkckd]k*A = \begin{bmatrix}ka&kb\\kc&kd\\ \end{bmatrix}

행렬의 전치

행렬의 전치는 행렬의 열과 행을 바꾸는 것을 말한다.

A=[abcdef]A = \begin{bmatrix}a&b&c\\d&e&f\\ \end{bmatrix}

AT=[adbecf]A^T = \begin{bmatrix}a&d\\b&e\\c&f\\ \end{bmatrix}

행렬 간 곱셈

A=[abcd],B=[efgh],C=[ijkl]A = \begin{bmatrix}a&b\\c&d\\ \end{bmatrix}, B = \begin{bmatrix}e&f\\g&h\\ \end{bmatrix}, C = \begin{bmatrix}i&j\\k&l\\\end{bmatrix}

행렬 간 곱셈은 AB와 BA가 다르다. 즉, 교환법칙이 성립하지 않는다.

AB=[ae+bgaf+bhce+dgcf+dh]A*B = \begin{bmatrix}ae+bg&af+bh\\ce+dg&cf+dh\\ \end{bmatrix}

BA=[ae+cfbe+dfag+chbg+dh]B*A = \begin{bmatrix}ae+cf&be+df\\ag+ch&bg+dh\\ \end{bmatrix}

결합법칙은 성립한다.

(AB)C=[ae+bgaf+bhce+dgcf+dh][ijkl](A*B)*C = \begin{bmatrix}ae+bg&af+bh\\ce+dg&cf+dh\\ \end{bmatrix}*\begin{bmatrix}i&j\\k&l\\\end{bmatrix}

=[aei+bgi+afk+bhkaej+afl+bgj+bhlcei+cfk+dgi+dhkceg+cfl+dgj+dhl]=\begin{bmatrix}aei+bgi+afk+bhk&aej+afl+bgj+bhl\\cei+cfk+dgi+dhk&ceg+cfl+dgj+dhl\\ \end{bmatrix}

A(BC)=[abcd][ei+fkaf+bhgi+hkgj+hl]A*(B*C) = \begin{bmatrix}a&b\\c&d\\\end{bmatrix}*\begin{bmatrix}ei+fk&af+bh\\gi+hk&gj+hl\\\end{bmatrix}

=[aei+bgi+afk+bhkaej+afl+bgj+bhlcei+cfk+dgi+dhkceg+cfl+dgj+dhl]=\begin{bmatrix}aei+bgi+afk+bhk&aej+afl+bgj+bhl\\cei+cfk+dgi+dhk&ceg+cfl+dgj+dhl\\ \end{bmatrix}

행렬 간 곱셈에서는 행렬의 곱을 전치한 결과는 순서를 바꾼 후 각각 전치해 곱한 결과와 일치한다.

(AB)T=BTAT(A*B)^T = B^T*A^T

2x2 정방행렬 A와 2차원 벡터 (x,y)(x,y)의 열벡터 간 곱은 다음과 같다.

A[xy]=[abcd][xy]=[ax+bycx+dy]A*\begin{bmatrix}x\\y\\ \end{bmatrix} = \begin{bmatrix}a&b\\c&d\\ \end{bmatrix}*\begin{bmatrix}x\\y\\ \end{bmatrix} = \begin{bmatrix}ax+by\\cx+dy\\ \end{bmatrix}

여기서 알 수 있는 것은 행렬 곱의 결과는 2차원 벡터 공간의 선형 변환과 동일하다는 것이다.
따라서 2x2 정방행렬 AA선형 변환에 대응되는 함수고, A[xy]A*\begin{bmatrix}x\\y\\ \end{bmatrix}는 선형변환으로 새로운 벡터를 만들어내는 것이다. 또, 벡터에 선형 변환을 적용하는 연산은 오른쪽에서 왼쪽으로 이루어진다.

2x2 정방행렬 AABB의 곱연산은 합성함수에 대응된다. 예를 들어 변환을 원하는 v\overrightarrow{v}에 선형 변환에 대응되는 2x2 정방행렬 AABB를 차례로 연산하면, 식은 아래와 같다.

BAvB*A*\overrightarrow{v} (연산은 오른쪽에서 왼쪽으로 이루어짐)

=[efgh][abcd][xy]=\begin{bmatrix}e&f\\g&h\\ \end{bmatrix}*\begin{bmatrix}a&b\\c&d\\ \end{bmatrix}*\begin{bmatrix}x\\y\\ \end{bmatrix}

profile
게임 클라이언트

0개의 댓글