작성자: admin 작성일시: 2016-05-17 11:37:04 조회수: 1916 다운로드: 81
카테고리: 기초 수학 태그목록:

행렬의 성질

중요 개념

  • 양-한정, 양-반한정
  • 놈, 프로베니우스 놈
  • 대각 성분, 트레이스 트릭
  • 행렬식, 마이너, 코팩터

행렬의 부호

행렬은 여러 개의 숫자로 이루어져 있으므로 행렬 전체의 부호는 정의하기 어렵다. 하지만 행렬에서도 실수의 부호와 비슷한 특성이 존재한다. 바로 행렬의 양-한정(positive definite) 특성이다.

영 벡터가 아닌 모든 벡터 $x$ 에 대해 다음 부등식이 성립하면 행렬 $A$ 가 양-한정(positive definite)이라고 한다.

$$ x^T A x > 0 $$

만약 이 식이 등호를 포함한다면 양-반한정(positive semi-definite)이라고 한다.

$$ x^T A x \geq 0 $$

예를 들어 단위 행렬은 양-한정이다. 벡터 $x$는 영 벡터가 아니라는 점에 주의한다.

$$ x^TI x = \begin{bmatrix} x_1 & x_2 & \cdots & x_N \end{bmatrix} \begin{bmatrix} 1&0&\cdots&0\\ 0&1&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&1\\ \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_N \end{bmatrix} = x_1^2 + x_2^2 + \cdots + x_N^2 > 0 $$

다음과 같은 행렬도 양-한정이다.

$$ A = \begin{bmatrix} 2&-1&0\\-1&2&-1\\0&-1&2 \end{bmatrix} $$

이는 다음과 같이 증명할 수 있다.

모든 벡터 $x^T = [x_1 \; x_2 \; x_3]$에 대해

$$ \begin{align} x^TA x &= \begin{bmatrix} x_1 & x_2 & x_3 \end{bmatrix} \begin{bmatrix} 2&-1&0\\-1&2&-1\\0&-1&2 \end{bmatrix} \begin{bmatrix} x_1\\x_2\\x_3 \end{bmatrix} \\ &= \begin{bmatrix} (2x_1-x_2)&(-x_1+2x_2-x_3)&(-x_2+2x_3) \end{bmatrix} \begin{bmatrix} x_1\\x_2\\x_3 \end{bmatrix} \\ &= 2{x_1}^2 - 2x_1x_2 + 2{x_2}^2 - 2x_2x_3 + 2{x_3}^2 \\ &= {x_1}^2+(x_1 - x_2)^{2} + (x_2 - x_3)^{2}+{x_3}^2 \end{align} $$

이 성립한다. 그리고 이 값은 제곱의 합으로 이루어져 있기 때문에 $x_1 = x_2 = x_3 = 0$ 인 경우를 제외하고는 항상 0보다 크다.

$$ {x_1}^2+(x_1 - x_2)^{2} + (x_2 - x_3)^{2}+{x_3}^2 > 0 $$

연습 문제 1

다음 행렬을 양-한정, 양-반한정 혹은 아무것도 해당되지 않는지 판단하라.

$$ \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix} $$

행렬의 크기

부호와 마찬가지로 행렬의 크기를 정의하는 것도 어렵다. 하지만 하나의 행렬에 대해 하나의 실수를 대응시키는 놈(norm), 대각 성분(trace), 행렬식(determinant)이란 연산은 행렬의 크기와 비슷한 의미를 가진다.

행렬 놈

행렬의 놈(norm)은 행렬 $A$에 대해 다음과 같이 정의되는 숫자이다. 보통 $\Vert A \Vert_p$ 로 표기한다. $p$는 1, 2 또는 무한대($\infty$)이다.

$$ \Vert A \Vert_p = \left( \sum_{i=1}^M \sum_{j=1}^N |a_{ij}|^p \right)^{1/p} $$

이 중 $p=2$인 경우가 많이 쓰이므로 $p$ 값 표시가 없는 경우는 $p=2$인 놈이라고 생각하면 된다. 이 경우에는 프로베니우스 놈(Frobenius norm)이라고 불리며 $\Vert A \Vert_F$이라고 표기하기도 한다.

$$ \Vert A \Vert = \Vert A \Vert_F = \sqrt{\sum_{i=1}^M \sum_{j=1}^N a_{ij}^2} $$

놈은 모든 크기의 행렬에 대해서 정의할 수 있으므로 벡터에 대해서도 정의할 수 있다. 벡터의 놈의 제곱은 그 벡터의 제곱합과 같다.

$$ \Vert x \Vert^2 = \sum_{i=1}^N x_{i}^2 = x^Tx$$

따라서 벡터의 제곱합을 최소화(가장 작게 만드는 것)하는 것은 놈을 최소화하는 것과 같다.

NumPy에서는 linalg 서브패키지의 norm 명령으로 행렬의 놈을 계산할 수 있다.

In:
A = (np.arange(9) - 4).reshape((3, 3))
A
Out:
array([[-4, -3, -2],
       [-1,  0,  1],
       [ 2,  3,  4]])
In:
np.linalg.norm(A)
Out:
7.745966692414834

대각 성분

대각 성분(trace)은 정방 행렬에 대해서만 정의되며 다음과 같이 대각 원소들의 합으로 계산된다.

$$ \operatorname{tr}(A) = a_{11} + a_{22} + \dots + a_{NN}=\sum_{i=1}^{N} a_{ii} $$

대각 성분은 다음과 같은 성질을 지닌다.

$$ \text{tr} (cA) = c\;\text{tr} (A) $$$$ \text{tr} (A^T) = \text{tr} (A) $$$$ \text{tr} (A + B) = \text{tr} (A) + \text{tr} (B)$$$$ \text{tr} (AB) = \text{tr} (BA) $$$$ \text{tr} (ABC) = \text{tr} (BCA) = \text{tr} (CAB) $$

특히 마지막 성질은 트레이스 트릭(trace trick) 이라고 하여 이차 형식(quadratic form)의 미분을 구하는데 유용하게 사용된다.

이차 형식의 트레이스 트릭 공식은 다음과 같다.

$$ x^TAx = \text{tr}(x^TAx) = \text{tr}(Axx^T) = \text{tr}(xx^TA) $$

이 식은 원래의 트레이스 트릭 수식의 $A$, $B$, $C$ 에 각각 $x^T$, $A$, $x$를 대입한 것이다. 이차 형식은 스칼라 값이기 때문에 대각 성분을 취해도 원래의 값과 같다.

NumPy에서는 linalg 서브패키지의 trace 명령으로 trace를 계산할 수 있다.

In:
np.trace(np.eye(3))
Out:
3.0

연습 문제 2

$x$, $A$가 각각 크기가 2 인 벡터, 크기가 2x2 인 정방 행렬일 때 이차 형식의 트레이스 트릭이 성립함을 보인다.

행렬식

정방 행렬 $A$의 행렬식(determinant)은 $\text{det}(A)$라는 기호 또는 $|A|$라는 기호로 표기한다.

행렬식은 다음과 같이 코팩터 확장(cofactor expansion) 이라고 불리는 재귀적인 방법으로 정의된다. } $$ \det(A) = \sum_{i=1}^N \left\{ (-1)^{i+j_0}M_{i,j_0} \right\} a_{i,j_0} = \sum_{j=1}^N \left\{ (-1)^{i_0+j} M_{i_0,j} \right\} a_{i_0,j} $$

이 식에서 $a_{i,j}$는 $A$의 $i$행, $j$열 원소이다. 즉, 행렬에서 임의의 행 $i_0$ 하나를 선택하거나 임의의 열 $j_0$ 하나를 선택한 다음 이 값에 가중치 $(-1)^{i+j_0}M_{i,j_0}$ 또는 $ (-1)^{i_0+j} M_{i_0,j}$를 곱하여 더한 것이다.

가중치로 사용된 $M_{i,j}$은 마이너(minor)라고 하며 정방 행렬 $A$ 에서 $i$행과 $j$열을 지워서 얻어진 (원래의 행렬보다 크기가 1만큼 작은) 행렬의 행렬식이다. 마이너 값도 행렬식이므로 마찬가지로 위의 식을 이용하여 구해야 한다. 이렇게 점점 작은 행렬의 행렬식을 구해야 하기 때문에 이 식을 재귀적(recursive)이라고 한다.

마이너에 $(-1)^{i+j}$를 곱한 값을 코팩터(cofactor) $C_{i,j}$ 라고 한다. 코팩터를 사용하여 위 식을 다시 표현하면 다음과 같다.

$$ \det(A) = \sum_{i=1}^N C_{i,j} a_{i,j} = \sum_{j=1}^N C_{i,j} a_{i,j} $$

예를 들어 다음과 같은 행렬을 생각해보자.

$$ \begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix} $$

여기에서 임의의 행 또는 열을 선택한다. 행이든 열이든 상관없다.

만약 첫번째 열을 선택했다고 하면 이 행렬의 행렬식은 다음과 같이 계산한다.

$$ \begin{eqnarray} \det(A) &=& \left\{ (-1)^{1+1}M_{1,1} \right\} a_{1,1} + \left\{ (-1)^{2+1}M_{2,1} \right\} a_{2,1} + \left\{ (-1)^{3+1}M_{3,1} \right\} a_{3,1} \\ &=& M_{1,1} a_{1,1} - M_{2,1} a_{2,1} + M_{3,1} a_{3,1} \\ &=& M_{1,1} - M_{2,1} \times 4 + M_{3,1} \times 7 \end{eqnarray} $$

이 때 마이너 값 $M_{1,1}$, $M_{2,1}$, $M_{3,1}$는 각각 다음과 같은 행렬의 행렬식이다.

$M_{1,1}$은 원래의 행렬에서 $1$번째 행과 $1$번째 열을 지워서 만들어진 행렬의 행렬식이다.

$$ M_{1,1} = \det \left( \begin{bmatrix}5&6\\8&9\end{bmatrix} \right) $$

$M_{2,1}$은 원래의 행렬에서 $2$번째 행과 $1$번째 열을 지워서 만들어진 행렬의 행렬식이다.

$$ M_{2,1} = \det \left( \begin{bmatrix}2&3\\8&9\end{bmatrix} \right) $$

$M_{3,1}$은 원래의 행렬에서 $3$번째 행과 $1$번째 열을 지워서 만들어진 행렬의 행렬식이다.

$$ M_{3,1} = \det \left( \begin{bmatrix}2&3\\5&6\end{bmatrix} \right) $$

이 마이너 값 $M_{1,1}$, $M_{2,1}$, $M_{3,1}$는 마찬가지로 코팩터 공식을 이용해서 계산할 수 있다. 이렇게 재귀적으로 계산하다 보면 결국 크기가 스칼라인 경우에 도달하게 된다.

이 때 어떤 행을 선택하든 또는 어떤 열을 선택하는 최종적으로 계산된 행렬식의 값은 동일한 값을 가진다.

위의 정의를 사용하면 크기가 1, 2, 3인 정방 행렬의 행렬식은 다음과 같아진다.

  • 1×1 행렬의 행렬식
$$\det \left( \begin{bmatrix}a\end{bmatrix} \right) =a$$
  • 2×2 행렬의 행렬식 $$\det \left( \begin{bmatrix}a&b\\c&d\end{bmatrix} \right) =ad-bc$$

  • 3×3 행렬의 행렬식 $$\det \left( \begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix} \right) =aei+bfg+cdh-ceg-bdi-afh$$

NumPy에서는 linalg 서브패키지의 det 명령으로 행렬식을 계산할 수 있다.

In:
A = np.array([[1, 2], [3, 4]])
A
Out:
array([[1, 2],
       [3, 4]])
In:
np.linalg.det(A)
Out:
-2.0000000000000004

연습 문제 3

행렬식의 정의를 사용하여 2x2 행렬과 3x3 행렬의 행렬식이 위와 같아짐을 보인다.

행렬식은 다음과 같은 성질을 만족한다.

  • 전치행렬의 행렬식은 원래의 행렬의 행렬식과 같다.
$$ \det(A^{T}) = \det(A) $$
  • 단위 행렬의 행렬식은 1이다.
$$\det(I) = 1$$
  • 두 행렬의 곱의 행렬식은 각 행렬의 행렬식의 곱과 같다. $$\det(AB) = \det(A)\det(B)$$
  • 역행렬의 행렬식은 원래의 행렬의 행렬식 값이 역수와 된다. (역행렬에 대해서는 곧 설명한다.)
$$ \det(A^{-1}) = \dfrac{1}{\det(A)} $$

질문/덧글

pos. difinite 질문입니다 ngmt*** 2016년 5월 18일 1:49 오전

pos. difinite 의 예시를 설명하는 부분의 3x3 행렬 (x^T * M * x) 을 풀어 쓴 식에서 b와 c가 있는데, 이 두 변수는 어디에서 온 변수인가요?

답변 pos. difinite 질문입니다 관리자 2016년 5월 18일 9:11 오전

오타입니다. 수정하도록 하겠습니다.