2022. 10. 4. 21:20ㆍPublic/Math
3차원 컴퓨터 그래픽에서 행렬은 비례나 회전, 이동 같은 기하학적 변환을 간결하게 서술하는 데 쓰이며, 점이나 벡터의 좌푤르 한 기준계에서 다른 기준계로 변환하는 데에도 쓰인다. 이번 장에서는 행렬의 수학을 살펴본다.
이번 장의 목표
- 행렬과 행렬에 대해 정의되는 연산들을 이해한다.
- 단위행렬이 무엇인지, 그리고 행렬의 전치, 행렬식, 역행렬이 무엇인지 배운다.
- 벡터와 행렬의 곱셈을 일차결합의 관점에서 바라보는 방법을 배운다.
- 행렬 수학에 쓰이는 XNA Math 라이브러리의 주요 클래스들과 함수들에 익숙해진다.
정의
m x n 행렬(matrix) M은 m개의 행과 n개의 열로 이루어진 실수들의 정사각 배열이다. 행(row)들의 개수와 열(column)들의 개수를 곱한 것을 행렬의 차원이라고 부르고, 행렬을 구성하는 수들을 원소(element) 또는 성분(entry)이라고 부른다. 행렬의 한 성분을 지치할 때에는 그 성분의 행과 열 번호를 이중 아래첨자(색인)로 지정하는 M(ij)형태의 표기법을 사용한다. 여기서 첫 아래첨자가 행이고 둘째 아래첨자가 열이다.
다음 행렬들을 생각해 보자.
- 행렬 A는 4 x 4 행렬이다. 행렬 B는 3 x 2 행렬이다. 행렬 u는 1 x 3 행렬이다. 그리고 행렬 v는 4 x 1 행렬이다.
- 행렬 A는 4행(넷째 행) 2열(둘째 열)의 성분은 A(42) = -5 이다. 그리고 행렬 B의 2행 1열 성분은 B(21)이다.
- 행렬 u와 v는 각각 행이나 열이 하나라는 점에서 특별한 행렬이다. 이런 종류의 행렬을 흔히 행벡터(row vector)나 열벡터(column vector)라고 부르는데, 이는 이들의 벡터를 행렬 형태로 나타내는 데 쓰이기 때문이다.(예를 들어 벡터 표기법 (x,y,z)과 행렬 표기법 [x,y,z]를 자유로이 맞바꾸어 사용할 수 있다). 행벡터나 열벡터에서는 한 성분을 지칭할 때 이중 아래첨자를 사용할 필요가 없다. 그냥 아래첨자 하나면 된다.
종종 한 행렬의 행들을 벡터들로 간주하는 것이 편리할 때가 있다. 예를 들어 다음과 같은 표기가 가능하다.
여기서 A(1,*) = [A(11),A(12),A(13)] 이고 A(2,*) = [A(21),A(22),A(23)] , A(3,*) = [A(31),A(32),A(33)]이다. 이러한 표기에서 첫 색인은 해당 행을 지정하며, 둘째 색인의 '*'는 하나의 행벡터 전체를 뜻한다. 열벡터들도 마찬가지로 표기할 수 있다.
여기서
이다. 이 표기법에서 둘째 색인은 해당 열을 지정하며, 첫 색인의 '*'는 하나의 열벡터 전체를 뜻한다.
이제 행렬의 상등, 덧셈, 스칼라 곱셈, 뺄셈을 정의해 보자.
- 두 행렬은 오직 대응되는 성분들이 상등일 때에만 상등이다. 따라서, 두 행렬의 상등을 비교하려면 두 행렬의 행 수와 열 수가 동일해야 한다.
- 두 행렬을 더할 때에는 대응되는 성분들을 더한다. 따라서 행 수와 열 수가 같은 행렬들만 덧셈이 가능하다.
- 행렬에 하나의 스칼라 곱할 대에는 행렬의 모든 성분에 그 스칼라를 곱한다.
- 행렬의 뺄셈은 스칼라 곱셈과 행렬 덧셈으로 정의한다. 즉, A - B = A+ (-1 · B ) = A + (-B)이다.
덧셈과 스칼라 곱셈이 성분별로 이루어지기 때문에, 행렬의 덧셈과 스칼라 곱셈도 실수의 덧셈 및 곱셈의 다음과 같은 속성들을 만족한다.
- 덧셈의 교환법칙
A + B = B + A - 덧셈의 결합법칙
(A+B) + C = A + (B + C) - 행렬들에 대한 스칼라의 분배 법칙
r(A+B) = rA + rB - 스칼라들에 대한 행렬의 분배 법칙
(r + s)A = rA + sA