2011년 6월 11일 토요일

행렬(行列, Matrix)

[경고] 아래 글을 읽지 않고 "행렬"을 보면 바보로 느껴질 수 있습니다.
1. 좌표계 기반 벡터


[선형 대수학 소개]

[그림 1] $m \times n$ 행렬의 정의(출처: wikipedia.org)

[그림 1]과 같이 숫자를 사각형으로 배치하고 꺽쇠로 닫으면 행렬(行列, matrix)이라 한다. '에이, 이게 뭐야! 나도 할 수 있겠네!'라고 생각할 수 있지만 우리가 보는 [그림 1]의 행렬은 현대 수학 중에서 가장 중요한 부분이다. 그래서, 행렬의 어원도 어머니(mother), 자궁(womb)을 뜻하는 라틴어(Latin) 마트릭스(matrix)이다. 다양한 수학 이론의 자궁(matrix) 역할을 하는 개념을 행렬(matrix)이라 생각할 수 있다. 미분적분(微分積分學, calculus)이 중요하다는 사람도 있지만 컴퓨터(computer)를 고려하면 단연 중요한 부분은 행렬 이론이다. 미분적분학은 연속 함수(連續函數, continuous function)를 다루기 때문에 컴퓨터로 처리하려면 반드시 이산화(離散化, discretization)를 해야 한다. 그러면 그다음의 처리 과정은 대부분 행렬 기반으로 처리된다. 문제를 풀기 위해 반복 기법을 이용할 수도 있지만 해답의 정확도와 속도면에서는 행렬이 월등하다. 반복이 필요한 현대 암호학에서도 행렬은 빼놓을 수 없는 부분이다. 단, 행렬의 계산 속도가 빨라야 한다. 보통 초보자가 설계한 코드로는 많이 부족하다. 그래서, 컴퓨터를 고려한 현대 수학에서는 행렬이 대세이다. 빠른 행렬 코드를 가지고 있어야 수학 분야 선진국이라 할 수 있다. 애석하게도 대한민국은 행렬을 많이 사용하지만 새로운 행렬 코드 개발에는 매우 인색해서 한국산(Made in Korea)은 아직 없다. 현재 많이 사용하는 공개된 행렬 코드는 미국산(Made in USA)LAPACK(Linear Algebra Package)이다.

[그림 2] 에셜론에서 운영하는 하드웨어 시스템으로 믿고 있는 장치(출처: wikipedia.org)

하지만 LAPACK이 현재 존재하는 행렬 코드중에서 최고라고 할 수는 없다. 절대 공개되지 않는 빠른 행렬 코드는 반드시 존재한다. 대표적인 예가 미국이 운영하고 있다고 믿고 있는 에셜론(Echelon)이다. 에셜론이라는 말은 계층 혹은 사다리꼴 형태로 번역할 수 있는 말이다. 이 말이 수학에서 쓰인다면 연립 방정식(聯立方程式, simultaneous equations)을 쉽게 풀 수 있도록 사다리꼴 형태로 바꾼 모양을 의미한다. 연립 방정식과 행렬의 관계를 이해하기 위해 다음 과정을 사용한다. 먼저 어떤 시스템 특성을 아래 연립 방정식으로 근사화할 수 있다고 가정한다.

                          (1)

[그림 1]과 같은 행렬 정의에 의해 식 (1)은 다음 행렬로 동일하게 표현할 수 있다.

                          (2)

여기서 $\bf x$와 $\bf b$는 열 벡터(column vector), 행렬 ${\bf A}$의 차원(dimension)은 3행 3열 혹은 $3 \times 3$이라 정의한다. 식 (1)보다는 식 (2)가 대수(代數, algebra)적으로 잘 정리된 느낌이 든다. 식 (2)는 다음과 같은 붙임 행렬(augmented matrix)로 표현할 수도 있다.

                           (3)

식 (3)의 붙임 행렬을 잘 조작하면 동등한 특성을 가진 다음 붙임 행렬을 생성할 수 있다.

                          (4)

식 (4)의 붙임 행렬을 식 (3)의 사다리꼴 형태(echelon form)라고 부른다. 이 명칭은 행렬의 생긴 모양이 [그림 3]과 같은 사다리꼴(trapezoid)과 같아서 붙여졌다.

[그림 3] 사다리꼴의 모양(출처: wikipedia.org)

식 (2)의 미지수 개수가 몇 개 안된다면, 어떤 알고리즘(algorithm or algorism)을 쓰든지 계산 속도는 큰 차이 없다. 하지만 미지수가 수천개 혹은 수십만개인 경우는 문제의 수준이 달라진다. 식 (3)의 왼쪽 행렬($\bf A$)의 특성을 파악해서 식 (4)와 같은 사다리꼴 형태를 만들 수 있는 특별한 알고리즘을 찾아야 한다. 이와 같이 사다리꼴 형태 찾는 알고리즘이 행렬 이론 적용의 핵심이다. 또한 사다리꼴 형태의 유용성을 음미하면서 [그림 2]에 보인 에셜론이란 이름의 의미를 또렷하게 파악할 수 있다. 결국 사다리꼴 형태의 마지막식을 시작으로 식 (4)의 답을 아래처럼 손쉽게 계산한다.

                       (5)

이런 정도 이해를 바탕으로 행렬 연산을 하나하나 정의한다. 행렬 연산에서는 행렬 ≡ 연립 방정식이라는 유추만 기억하면 된다. 왜냐하면 [그림 1]과 같은 행렬은 식 (1)과 같은 연립 방정식을 우아하게 표현하기 위해 1850년실베스터 36세, 조선 철종 원년에 실베스터James Joseph Sylvester(1814–1897)가 도입한 개념이기 때문이다. 행렬을 사용하기 위한 사칙 연산은 다음과 같이 정의된다.

  • 곱셈
[그림 4] 행렬의 곱셈 정의(출처: wikipedia.org)

행렬은 식 (1)과 같은 연립 방정식을 멋지게 풀기 위해 도입한 개념이므로 연산 정의는 식 (2)와 같이 곱셈부터 시작한다. 행렬 곱셈인 [그림 4]의 과정을 수식으로 쓰면 아래와 같다.

                       (6)

여기서 $a_{ik}, b_{kj}, c_{ij}$는 행렬 ${\bf A}, {\bf B}, {\bf C}$의 원소이다. 예를 들어, $a_{ik}$는 행렬 $\bf A$의 $i$번째 행, $k$번째 열의 원소이다.

  • 덧셈과 뺄셈
행렬의 덧셈과 뺄셈은 식 (1)과 같은 연립 방정식을 서로 더하거나 빼는 과정을 의미한다. 그래서, 다음과 같이 덧셈과 뺄셈을 정의한다.

                        (7)

  • 상수배
행렬의 상수배는 식 (1)과 같은 연립 방정식을 상수로 곱하는 과정을 의미해서 아래로 정의한다.

                        (8)

  • 나눗셈
지금까지 논의한 곱셈과 상수배 정의를 이용하면 행렬의 나눗셈을 표현할 수 있다. 행렬의 나눗셈을 구하면 식 (1)의 연립 방정식 해답을 구할 수 있다. 식 (6)과 같은 곱셈을 기반으로 나눗셈을 정의한다.

                        (9)

식 (6)에 적당한 행렬 ${\bf A}^{-1}$을 곱해서 식 (9)와 같이 나눗셈을 정의할 수 있다. 적당한 행렬 ${\bf A}^{-1}$은 행렬 $\bf A$와 곱해져서 단위 행렬(單位行列], unit matrix) 혹은 항등 행렬(恒等行列], identity matrix)을 만들 수 있어야 한다. 단위 행렬은 대각선 원소가 1이고 이외는 모두 0인 정방 행렬(正方行列, square matrix: 행과 열의 수가 같음)을 의미한다. 단위 행렬인 경우는 아래 관계식이 성립한다.

                        (10)

식 (10)을 이용하면 단위 행렬의 원소 $I_{ij}$는 크로네커 델타(Kronecker delta)를 이용해 쉽게 표현할 수 있다.

                       (11)

식 (9)의 마지막식[${\bf A}^{-1}{\bf A}$ = ${\bf I}$]처럼 어떤 행렬 $\bf A$에 곱해져서 단위 행렬을 만들 수 있는 행렬은 행렬 $\bf A$의 역행렬(逆行列, inverse matrix)이라 부른다[1]. 행렬 $\bf A$의 원소를 이용해서 역행렬을 계산한다. 식 (9)의 마지막식[${\bf A}^{-1}{\bf A}$ = ${\bf I}$]을 참고하면 아래 관계가 반드시 성립해야 한다.

                       (12)

여기서 행렬 $\bf A$의 원소는 $a_{ij}$, $\bf A$의 역행렬[${\bf A}^{-1}$] 원소는 $A_{ij}$라 정의한다. 표기법상 행렬[$\bf A$]은 알파벳을 굵고 진하게 쓰고 행렬의 원소[$a_{ij}$]는 이런 장식없이 그냥 쓴다. 그냥 봐서는 역행렬 원소 $A_{ij}$를 구할 수 없다. 정보가 좀 필요하다. 뭔가 하면 행렬식(行列式, determinant)이다. 행렬식의 영어 의미는 식 (1)과 같은 연립 방정식의 답을 구할 수 있는가 결정해주는 판별식이다. 이름은 행렬식이지만[영어는 행렬식이 아닌 판별식임을 기억한다.] 행렬이 제안되기 훨씬 이전에 제안되어 충분한 연구가 진행된 개념이다. 그러므로, 행렬 증명에 행렬식을 쓰더라도 문제는 없다. 행렬식은 행(行, row)에 대한 라플라스 전개(Laplace expansion)를 이용해 다음처럼 표현할 수 있다.

                       (13)

여기서 $C_{ij}$는 행렬 $\bf A$의 여인자(餘因子, cofactor), $M_{ij}$는 원소 $a_{ij}$의 소행렬식(小行列式, minor)이다. 행렬 원소 $a_{ij}$의 여인자 $C_{ij}$는 $\operatorname{cof}(a_{ij})$라고 표기하기도 한다. 예시로써 소행렬식 $M_{23}$을 아래와 같이 계산할 수 있다.

                      (14)

즉, $M_{23}$은 2행과 3열 원소 전체를 식 (14)처럼 삭제한 후 계산하는 행렬식이다. 다시 식 (12)로 돌아가서 식 (12)와 (13)을 비교한다. 그러면 아주 놀라운 사실을 발견할 수 있다. 역행렬의 원소를 여인자가 되도록 하면 대각선에서는 값이 있고 나머지에서는 0이 되도록 할 수 있다.

                       (15)

식 (15)에서 $i \ne j$인 경우가 0이 됨은 당연하다. 왜냐하면, $i \ne j$인 경우 여인자 $C_{ki}$는 $j$열 원소를 포함하고 있고 $a_{kj}$도 $j$열 원소를 가지므로 $C_{ki}$와 $a_{kj}$의 열이 서로 중복되어 행렬식 관점에서 당연히 0이 되어야 한다. 반대로 $i$ = $j$ 경우는 여인자 $C_{ki}$가 $i$열 원소를 배제하고 있으므로 0이 될 필요는 없다. 이렇게 쉽게 역행렬을 정의할 수 있는 이유는 행렬식이 매우 잘 정의되었기 때문이다. 따라서 역행렬은 행렬식을 이용하여 다음으로 정의할 수 있다.

                       (16)

식 (9)와는 다르게 역행렬을 반대편에도 곱한다.

                       (17)

식 (17) 증명에는 열(列, column)에 대한 라플라스 전개도 동일하다는 행렬식의 성질을 이용해야 한다.

행렬의 나눗셈 정의를 통해 역행렬의 다양한 성질을 아래와 같이 증명할 수 있다.

           (18)

              (19)    

역행렬은 매우 유용한 개념이기 때문에, 주어진 행렬에 대한 역행렬은 딱 하나만 있으면 좋겠다. 우리의 희망대로 역행렬의 유일성(uniqueness of inverse matrix)이 있는지 알아본다. 먼저 역행렬이 하나 더 존재한다고 가정한다. 기존 역행렬 ${\bf A}^{-1}$와 다른 새로운 역행렬을 $\bf B$라 한다. 그러면 다음 행렬 관계가 성립한다.

                       (20)

식 (20)에 의해 하나 더 존재하는 역행렬 $\bf B$는 ${\bf A}^{-1}$과 동일하다. 이와 같이 역행렬의 유일성은 매우 쉽게 증면된다. 행렬의 연산자적 특성을 알아보기 위해 행렬의 교환 법칙과 결합 법칙을 살펴본다.

                        (21)

                       (22)

행렬의 곱셈 정의인 식 (6)을 고려하면 교환 법칙이 일반적으로 성립하지는 않음을 쉽게 증명할 수 있다. 결합 법칙 증명을 위해 식 (22)의 좌변과 우변을 식 (6)으로 표현한다.

                       (23)

스칼라(scalar)의 분배 법칙으로 인해 식 (23)의 첫째식과 둘째식은 항상 같다. 그래서, 행렬의 결합 법칙이 증명된다. 식 (23)과 동일한 방법으로 식 (24)의 행렬 분배 법칙도 증명 가능하다.

                        (24)

행렬 이론에 등장하는 다양한 행렬을 모양이나 특성에 따라 정의한다. 식 (10)의 항등 행렬(identity matrix) $\bf I$를 일반화하면 아래와 같이 대각 행렬(diagonal matrix) $\bf D$를 정의할 수 있다.

                       (25)

대각 행렬은 대각선 방향으로만 원소가 있기 때문에 행렬의 사칙 연산이 매우 간단해진다.

          (26)

대각 행렬은 단위 행렬의 일반화로 볼 수 있다.
식 (4)와 같은 사다리꼴 형태의 행렬은 삼각 행렬(三角行列, triangular matrix)이라 한다. 삼각 행렬은 원소가 놓여있는 위치에 따라 상삼각 행렬(上三角行列, upper triangular matrix) $\bf U$와 하삼각 행렬(下三角行列, lower triangular matrix) $\bf L$로 구분한다.

                       (27)

                       (28)

삼각 행렬의 대각선 원소가 모두 $0$이면, 이 행렬은 더 구체적으로 엄격 삼각 행렬(strictly triangular matrix)이라 한다. 엄격 삼각 행렬은 엄격 상삼각 행렬(strictly upper triangular matrix)엄격 하삼각 행렬(strictly lower triangular matrix)이 가능하다. 또한 수치 계산이 용이한 사다리꼴 형태로 만든다는 뜻은 행렬 구조를 상삼각 행렬이나 하삼각 행렬로 바꾸기를 의미한다.
행렬 이론에서 중요한 또 하나의 행렬은 대칭 행렬(對稱行列, symmetric matrix) ${\bf A}_\text{sym}$ 혹은 $\bf S$이다. 물리학에서 나타나는 행렬은 대칭성을 가지는 경우가 대부분이다. 대칭 행렬을 정의하기 위해 전치 행렬(자리 바꿈 행렬, 轉置行列, transpose) ${\bf A}^T$를 생각한다.

                        (29)

전치 행렬이 가진 재미있는 성질은 행렬 곱셈에서 나타난다. 식 (6)의 행렬 곱셈 정의를 이용해 행렬 곱의 전치 행렬을 아래와 같이 계산한다.

                       (30)

식 (30)과 (18)을 이용하면 전치 행렬의 역행렬을 아래와 같이 정의할 수 있다.

                        (31)

전치 행렬 개념을 이용하면 식 (16)으로 정의한 역행렬을 좀더 우아하게 표현할 수 있다.

                        (32)

여기서 ${\rm adj}({\bf A})$는 행렬 $\bf A$의 딸림 행렬(adjugate or adjoint matrix)이다. 전치 행렬은 식 (29)처럼 행렬의 행과 열을 서로 바꾸기 때문에 대칭 행렬을 다음과 같이 정의할 수 있다.

                        (33)

대칭 행렬과 비슷하지만, 다음 관계를 만족하는 행렬 ${\bf A}_\text{skew}$는 반대칭 행렬(反對稱行列, antisymmetric matrix)혹은 꼬인 대칭 행렬(skew-symmetric matrix)이라 한다.

                       (34)

식 (34)에 의해 반대칭 행렬의 대각선 원소(diagonal element)는 항상 0이다. 행과 열 번호를 바꾼 비대각선 원소(off-diagonal element)를 보면, 원소의 크기는 같고 부호는 반대이다. 또한 임의의 행렬 $\bf A$는 대칭 행렬과 반대칭 행렬의 합으로 분해할 수 있다.

                       (35)

대칭과 반대칭 행렬은 일반 행렬의 특별한 경우라고 생각할 수도 있지만, 식 (35)는 행렬 속에 숨은 본질이 대칭성과 반대칭성이라는 함의를 보여준다.

[그림 5] 행 벡터의 예시(출처: wikipedia.org)

[그림 6] 열 벡터의 예시(출처: wikipedia.org)

행렬은 벡터(vector)의 모임이라 생각할 수 있다. [그림 5]처럼 동일한 행을 가진 원소는 행 벡터(row vector), [그림 6]처럼 동일한 열을 가지면 열 벡터(column vector)가 된다. 행 벡터의 차원은 $1 \times n$, 열 벡터의 차원은 $m \times 1$이다. [그림 5]와 같이 행 벡터를 $m$개 쌓으면, [그림 1]에 있는 차원이 $m \times n$인 행렬을 만들 수 있다. 마찬가지로 [그림 6]처럼 열 벡터를 $n$개 붙이면 $m \times n$ 행렬이 된다. [그림 6]에 소개한 행 혹은 열 벡터를 이용하면, 2차원인 행렬 원소를 [그림 7]처럼 일관되게 1차원 순서로 정렬할 수 있다. 행 벡터를 우선하여 번호를 붙이는 방식은 행 우선 순서(row-major order)라 부른다. 열 벡터를 기준으로 번호를 붙이면 열 우선 순서(column-major order)가 된다. 쉽게 말해 행과 열 우선 순서는 각각 행렬을 행과 열 벡터의 배열(array)로 본다. 포트란(Fortran: IBM 수학 공식 번역 체계, The IBM Mathematical Formula Translating System)으로 작성한 LAPACK에서는 주로 열 우선 순서[= 열 벡터의 배열]로 행렬의 원소를 저장한다. 그래서 열 우선 순서를 포트란 순서(Fortran order)로 부르기도 한다. 반면에 C 언어(C language)의 2차원 배열(array)은 행 벡터의 배열인 행 우선 순서로 자료를 저장한다. 예를 들어, i행 j열의 원소 a[i][j]는 지시자(pointer)인 행 벡터 a[i]를 찾아간 후 j번째 원소에 접근한다. 이런 관점에서 행 우선 순서를 포트란 순서에 대비되는 C 순서(C order)로 명명할 수 도 있다.

[그림 7] 행 혹은 열 우선 순서(출처: wikipedia.org)

행렬은 벡터를 포함하므로, 벡터의 내적(inner product)외적(outer product)을 행렬로 표현할 수 있다. 실수와 복소 영역에서 $n$차원 벡터의 내적은 행렬을 이용해 다음처럼 각각 재정의할 수 있다.

                       (36)

                       (37)

여기서 $\bf x$, $\bf y$는 $n$차원 열 벡터, $(\cdot)^*$는 켤레 복소수(complex conjugate)를 의미한다. 마찬가지로 3차원 위치 벡터(position vector)에 대한 외적을 행렬의 곱으로 다시 표현할 수 있다.

                       (38)

여기서 $\bf x$, $\bf y$는 3차원 열 벡터, ${\bf C}({\bf x})$는 $\bf x$로 만외적 행렬(cross-product matrix)이다.
식 (25)와 같은 대각 행렬은 아니지만 유사한 특성을 가진 행렬은 대각 지배 행렬(diagonally dominant matrix)이라 한다[2]. 대각 지배 행렬은 모든 행에 대해 다음 부등식이 성립한다.

                       (39)

여기서 $a_{ij}$는 행렬 $\bf A$의 원소, $\bf A$의 차원은 $n \times n$이다. 식 (39)에서 등식이 빠져서 대각선 원소가 나머지 원소의 합보다 항상 크면 엄격 대각 지배 행렬(strictly diagonally dominant matrix)이라 한다.

                       (40)

식 (40)과 구별되는 식 (39)의 조건을 만족하는 행렬은 약한 대각 지배 행렬(weakly diagonally dominant matrix)이라고도 한다. 엄격 대각 지배 행렬은 당연히 약한 대각 지배 행렬도 된다. 대각 지배 행렬은 행과 열 개수가 매우 큰 행렬의 역행렬이나 행렬식(determinant) 특성을 판정할 때 유용한 개념이다. 예를 들어, 엄격 대각 지배 행렬은 항상 역행렬이 존재하고 행렬식도 $0$이 아니다. 즉, 대형 행렬의 행렬식을 직접 계산할 필요 없이 식 (40)처럼 대각선 원소와 나머지 비대각선 원소의 합만 구해도 행렬식이 $0$인지 아닌지 쉽게 파악할 수 있다. 또한 대형 행렬로 구성된 연립 방정식을 풀 때 많이 쓰는 행렬의 반복법(iterative method of matrix)에도 대각 지배 행렬 개념이 유용하다. 반복을 통해 근사하는 현재 연립 방정식 해의 수렴성은 고유치(eigenvalue)의 크기나 대각 지배 행렬 등으로 판정할 수 있다.
행렬의 대각합(對角合, trace) $\operatorname{tr}({\bf A})$은 말 그대로 모든 대각선 원소 $a_{ii}$의 단순 합으로 정의한다.

                       (41)

여기서 $a_{ij}$는 행렬 $\bf A$의 원소, $\bf A$의 차원은 $n \times n$이다. 유치해보이는 대각합은 재미난 성질을 많이 가지고 있다. 대각합이 놀랍도록 신기하게 쓰이는 경우는 행렬의 고유치(eigenvalue)이다. 행렬의 모든 고유치의 합은 대각합과 정확히 같아진다. 근 찾기(root searching or finding)로 구하는 고유치의 합이 행렬의 대각합과 같기 때문에, 고유치의 특성을 식 (41)로 유추할 수 있다.

여러 방식으로 정의한 다양한 종류의 행렬은 스칼라(scalar) 혹은 벡터(vector)와 확연히 다른 다음과 같은 성질을 가지고 있다. 


   1. 기본(basics)   

[행렬 항등식]

                       (1.1)

                       (1.2)

[반대각 행렬(anti-diagonal matrix)]

                       (1.3a)

                       (1.3b)

                       (1.3c)

여기서 ${\bf J}$는 교환 행렬(exchange matrix), $\bf I$는 단위 행렬이다. 대각 행렬이 대각선(diagonal)에만 원소를 가지는 성질과 비슷하게, 반대각 행렬(anti-diagonal matrix) ${\bf D}_\text{anti}$는 반대각선(anti-diagonal)에 원소가 배치되고 나머지 위치는 모두 0이다.

[반전치 행렬(anti-transpose)]

                       (1.4a)

                       (1.4b)

여기서 $n$은 행 혹은 열 개수, ${\bf A}^\bot$는 $\bf A$의 반전치 행렬(anti-transpose)이다. 반전치 행렬은 대각선이 아닌 반대각선(anti-diagonal)을 대칭선으로 삼아 원소를 전치한다.

                       (1.5)

[증명]
식 (1.5)의 좌변에 식 (1.4a)를 적용한 후 다시 식 (30)으로 간략화한다.
______________________________

행렬 곱의 반전치 연산은 식 (30)처럼 전치 연산과 동일하게 작용한다.

[직각 대칭 행렬(persymmetric matrix)]

                       (1.6a)

                       (1.6b)

여기서 $n$은 행 혹은 열 개수이다. 교환 행렬 $\bf J$는 반대각 행렬 ${\bf D}_\text{anti}$의 특별한 경우이며, 대칭이면서 직각 대칭도 된다. 그래서 $\bf J$를 곱해 대칭 행렬 $\bf S$를 직각 대칭 행렬(persymmetric matrix)로 바꿀 수 있다. 대칭 행렬 $\bf S$가 대각선[↘]에 대해 대칭이라면, 직각 대칭 행렬 ${\bf S}_\text{per}$은 대각선에 직각인 반대각선[↙] 기준으로 대칭이다. 직각 대칭 행렬의 유명한 예는 퇴플리츠 행렬(Toeplitz matrix)이다.

[쌍대칭 행렬(bisymmetric matrix)]

                       (1.7)

대칭과 직각 대칭을 동시 만족하는 행렬은 쌍대칭 행렬(bisymmetric matrix)이 된다. 단위와 교환 행렬은 쌍대칭 행렬의 대표적 예이다. 대칭 퇴플리츠 행렬(symmetric Toeplitz matrix)도 쌍대칭 행렬에 속한다.


   2. 대칭 행렬(symmetric matrix)   

[대칭 행렬 연산]
(a) 대칭 행렬 ${\bf A}, {\bf B}$에 대해 ${\bf A} \pm {\bf B}$도 대칭 행렬이다. 또한 $k{\bf A}$도 대칭 행렬이다.
(b) 대칭 행렬 ${\bf A}, {\bf B}$에 대해 ${\bf AB} + {\bf BA}$도 대칭 행렬이다.
(c) 대칭 행렬 ${\bf A}$의 거듭제곱 ${\bf A}^m$도 대칭 행렬이다.
(d) 대칭 행렬 ${\bf A}$의 역행렬 ${\bf A}^{-1}$도 대칭 행렬이다.
(e) 대칭 행렬 ${\bf A}, {\bf B}$가 ${\bf AB} = {\bf BA}$를 만족하면, $({\bf AB})^m = {\bf A}^m {\bf B}^m$이 성립한다.
(f) 대칭 행렬 ${\bf A}, {\bf B}$에 대해 ${\bf AB} = {\bf BA}$ $\Leftrightarrow$ $({\bf AB})^T = {\bf AB}$가 성립한다.
여기서 $k$는 스칼라이다.

[명제 (a)의 증명]
비대각선 원소에 대해 $a_{ij} \pm b_{ij}$ = $a_{ji} \pm b_{ji}$가 성립하므로, ${\bf A} \pm {\bf B}$는 대칭 행렬이다. 비슷하게 스칼라 $k$를 곱한 행렬 $k {\bf A}$의 비대각선 원소를 비교하면, $k {\bf A}$도 정확히 대칭 행렬이 된다.

[명제 (b)의 증명]
주어진 행렬에 전치 행렬을 취하고 식 (30)을 이용해서 계산하면 다음과 같다.

                  (2.1)

[명제 (c)의 증명]
행렬 ${\bf A}^2$ = ${\bf AA}$에 전치 행렬을 적용하면, $({\bf A}^2)^T$ = ${\bf A}^T {\bf A}^T$ = ${\bf AA}$이 성립한다. 이 과정을 계속 반복해서 더 높은 차수의 거듭제곱 관계식을 증명한다.

[명제 (d)의 증명]
역행렬의 전치 행렬에 대해, 식 (31)과 유사한 행렬 연산을 차례대로 사용한다.

                  (2.2)

[명제 (e)의 증명]
행렬의 곱 $\bf AB$의 제곱에 대해 $({\bf AB})^2$ = $\bf ABAB$ = $\bf AABB$ = ${\bf A}^2 {\bf B}^2$이 타당하다. 비슷한 방식으로 행렬의 곱에 대한 고차 거듭제곱은 각 행렬의 고차 거듭제곱의 곱으로 확장된다.

[명제 (f)의 증명]
교환 법칙의 우변을 이중 전치 행렬로 바꾸면 명제의 오른쪽 식이 증명된다.

                  (2.3)

마찬가지로 대칭 행렬의 곱 $\bf AB$에 대해 전치 행렬 연산을 써서 명제의 왼쪽 식을 유도한다.

                  (2.4)
______________________________

명제 (e)에서 조심할 부분이 하나 있다. 행렬 ${\bf A}, {\bf B}$가 대칭 행렬이라 하더라도 ${\bf AB}$가 대칭 행렬이라는 보장은 없다. 따라서 명제 (e)는 대칭 행렬 ${\bf AB}$에 대한 거듭제곱 관계식이 아니고, 두 대칭 행렬 ${\bf A}, {\bf B}$의 곱에 대한 공식이다.

[$2 \times 2$ 대칭 행렬 곱의 대칭성]

                  (2.5)

[증명]
두 행렬을 곱한 후, 대칭성 조건을 비교해서 증명한다.
______________________________

만약 $a$ = $c$, $e$ = $g$라면, $b, f$에 관계없이 대칭성이 성립한다. 또한 식 (2.5)와 대칭 행렬 연산의 특성에 의해 식 (2.5)에 나온 두 행렬의 곱은 교환 법칙도 만족한다.

[직각 대칭 행렬]

                       (2.6a)

                       (2.6b)

                       (2.6c)

여기서 ${\bf S}$와 ${\bf S}_\text{per}$는 각각 대칭 및 직각 대칭 행렬, $\bf B$는 대칭이면서 동시에 직각 대칭인 쌍대칭 행렬이다. 교환 행렬 $\bf J$를 ${\bf S}_\text{per}$의 우측에 곱해도 대칭과 직각 대칭 관계를 만족한다.

[직각 대칭 행렬 연산]
(a) 직각 대칭 행렬 ${\bf A}$의 역행렬 ${\bf A}^{-1}$도 직각 대칭 행렬이다.

[명제 (a)의 증명]
역행렬 ${\bf A}^{-1}$은 $({\bf JS})^{-1}$ = ${\bf S}^{-1} {\bf J}$를 만족한다. 여기서 $\bf S$는 대칭 행렬이다. 대칭 행렬 $\bf S$의 역행렬은 다시 대칭 행렬이므로, ${\bf A}^{-1}$는 직각 대칭 행렬이다.
______________________________


   3. 대각 행렬(diagonal matrix)   

[교환 법칙]
행렬 $\bf A$는 대각 행렬  $\Leftrightarrow$  ${\bf DA} = {\bf AD}$
여기서 대각 행렬 $\bf D$의 대각선 원소 $d_i$는 항상 서로 다르다[혹은 지표 $i \ne j$이면, $d_i \ne d_j$이다].

[증명]
행렬 $\bf A$가 대각 행렬인 경우는 $\bf DA$와 $\bf AD$의 대각선 원소를 구해 비교하여서 명제의 오른쪽 식을 증명한다. 두 행렬 $\bf D$, $\bf A$가 교환 법칙을 만족하면, 비대각선 원소에 대해 다음 관계가 성립한다.

                       (3.1)

따라서 명제의 왼쪽 식이 유도된다.
______________________________

단위 행렬 $\bf I$처럼 대각선 원소 $d_i$가 모두 같다면, 행렬 $\bf A$는 대각 행렬이란 조건이 사라지고 임의의 행렬일 수 있다.

[반대각 행렬(anti-diagonal matrix)]

                       (3.2)

교환 행렬 $\bf J$가 곱해지는 위치에 따라 반대각 행렬의 원소가 나열되는 방향이 바뀐다.


   4. 대각합(trace)   

[행렬 원소의 곱]

                       (4.1)

여기서 $a_{ij}, b_{ij}$는 행렬 ${\bf A}, {\bf B}$의 원소, ${\bf A}, {\bf B}$의 차원은 $n \times n$이다.

[증명]
두 정방 행렬의 곱은 다음 성질을 가진다.

                       (4.2)

식 (4.2)의 오른쪽 식에서 $j$ = $k$ 조건을 만족하도록 모든 대각선 원소를 모으면 식 (4.1)이 된다.
______________________________

식 (4.1)에 의해 두 행렬 원소를 각각 곱해서 모두 더한 결과는 행렬 곱의 대각합과 완전히 동일하다.


[참고문헌]
[2] R. S. Varga, "On recurring theorems on diagonal dominance," Linear Algebra and its Applications, vol. 13, no. 1–2, pp. 1–9, 1976.

[다음 읽을거리]

댓글 38개 :

  1. 잘 봤습니다 ^^.

    저도 정리를 했었는데,
    "선형 대수학(Linear Algebra) 간단한 정리들."
    http://blog.daum.net/kipid/8307157
    같이 참고해서 보세요. 저도 정리를 좀 더 잘하고 싶은데, 손이 너무 많이가서 제대로 하기가 힘드네요;;;

    답글삭제
    답글
    1. 선형 대수학 간단한 정리들 (Linear Algebra)
      http://kipid.tistory.com/entry/Linear-Algebra

      블로그를 옮기면서 링크가 바뀌었습니다.
      트랙백을 쏠려고 했는데, 안 켜 놓으신듯 하군요 -ㅇ-;;;

      삭제
    2. 정보 감사합니다, kipid님. 제쪽 링크를 변경했습니다.

      삭제
  2. 감사합니다. 저도 kipid님 블로그 방문해봐야겠네요.

    답글삭제
  3. 식 (15)에 대한 설명이 잘 이해가 가질 않습니다. 행렬식 관점에서 보면 i≠j일 때 당연히 0이라고 하는데 왜 당연히 0일까요...ㅠㅠ

    답글삭제
    답글
    1. 행렬식 관점으로 보셔야 합니다. ^^

      i가 j와 다른 경우 $C_{ki}$는 j열 정보를 가지고 있습니다. 이 상태에서 $a_{kj}$를 곱하면 j열 정보가 또 들어가기 때문에 행렬식 정의에 의해 0이 됩니다.

      삭제
  4. 와우......행렬에 대해서 답답했었는데....
    활명수같은 내용입니다...
    감사합니다.

    답글삭제
  5. 식(12)바로 아래 설명에서요.
    "여기서 행렬 A의 원소는 aij, A의 역행렬은 Aij라 정의한다."

    A의 역행렬은 Aij ==> A의 역행렬 원소는 Aij
    로 표기 하시는게 어떠실런지요?
    저같이 초자들이 처음 접할 때는 무자게 햇갈리 수 있을 거 같습니다.
    저의 경우에는 식(15) 위 설명을 보고 역행렬의 원소인지 알게 됬습니다.

    답글삭제
    답글
    1. 익명님, 지적 감사합니다. 본문을 다시 수정했습니다. ^^

      삭제
    2. 대충 아시겠지만, 재 수준이 솔직히 오타 이외에는 먼가 맞다 틀리다를 하기에는 좀 거시기 한데요. 몇일 동안 이해가 안가서 고민을 해보았는 식(15)의 첫줄
      A_ik = C_ki 는 아무래도 표현에 무리가 있지 않을까 합니다.
      과정을 설명하는 단초가 될 수는 있으나, 먼가 기호를 다르게 써야 하지 않을까 합니다.
      예를 들면, A_ik ==> C_ki 이렇게 하면 모를까.
      아니면 재가 아직 이해를 못하고 있던가요. T.T

      삭제
    3. 앗 편집하다가. 삭제를 해보렸네요.
      A_ik는 역행렬의 원소이고, C_ki는 여인자로 파악하고....

      궁금한게 있습니다.
      4x4 행렬식를 구한다면, Minor가 3x3이니 계산을 할 수 있을거 같은데요.
      5x5 행렬식를 구하면, minor가 4x4인데, 이게 다섯게가 생깁니다.
      그럼 minor 4x4를 행렬식 구하는 방힉으로 5번을 해서 행렬식을 구해야 하는건가요?

      삭제
    4. 1. 여인자도 숫자이기 때문에 식 (15)의 표현은 문제가 없습니다.

      2. 원론적으로는 소행렬식을 이용해 재귀적으로 계산하면 됩니다. 하지만 이건 이론적인 것이고 실제로는 LU 분해를 이용해 행렬식을 구합니다.

      삭제
    5. 식(16)(17)을 보면 A_ik = C_ki / |A| 이어서요.

      처음에 식(16)(17) 보지 않고, 식 12~15까지만 보고, 보고 이해가 안되서 4일동안 맨붕이었습니다. T.T
      그래서 무작정 식(16)으로 역핼렬을 구해보니 그때서야 아~
      아직 설명하신 내용을 다 이해한건 아니지만요.

      삭제
    6. LU 분해는 위에서 말씀히신 삼각행렬을 말씀하신건가요?

      삭제
    7. 예, 상하 삼각 행렬 분해법이 LU 분해입니다. LU 분해하면 행렬식이 바로 구해집니다.

      삭제
  6. 프로그래밍 하다가 막히는 부분이 많았는데 좋은 정보 감사합니다.

    답글삭제
    답글
    1. 행렬을 하려면 프로그래밍이 필수적이지요. 열심히 하세요. ^^

      삭제
  7. 전치행렬 31번 성질을 보면 A가 전치가 되면 A의 역행렬을 존재한다고 해석했는데, 이렇게 해석이 되면 모든 행렬은 전치가 되니까 모든 행렬이 역행렬이 존재한다고 결론이 나오는데. 제가 어디서 잘못된 걸 까요?

    답글삭제
    답글
    1. 그런 뜻이 아닌데요, 전자닌자님. -.-

      역행렬은 당연히 행렬식을 봐야 하고요, 본문에서는 전치 행렬의 역행렬을 구할 경우의 관계를 증명하고 있습니다.

      삭제
  8. 역행렬을 구할때, C(ij) 로 구해진,16번식 수반행렬을 쉽게 구하는방법 없을가요? 3x3 에서 1/det(A) 까지는 쉽게하겠는데,,, 수반행렬부터 너무 번거롭네요 ㅜㅜ 금융공학에서 이용하고있습니다

    답글삭제
    답글
    1. 수치 계산할 때는 행렬식이나 역행렬을 수학 관계식으로 직접 계산하지 않아요. 주로 가우스 소거법(Gaussian elimination)을 사용합니다.

      삭제
  9. 와우! 제가 바라던 내용이였습니다. 설명도 친절하시구.... 질문이 하나 있습니다. 내용과는 별 상관이 없긴합니다만..
    여러 물리 교양 서적에서 '행렬'을 양자역학의 기본 언어라고 하는걸 보고 행렬을 처음부터 다시 배우려고 이렇게 포스팅들을 보고 있는데 도무지 연관성이 보이지 않습니다. 책에서는 " '교환법칙'이 성립하지 않는다, 곱하는 순서가 중요함을 깨달은 하이젠베르크는... " 이렇게 얼버무려 버립니다.

    질문은, 양자를 어떻게 행렬로 표현하는지, 무슨 특성때문에 그러는지 궁금합니다.

    답글삭제
    답글
    1. 양자 역학은 파동-입자 이중성이 반드시 고려되어야 하므로, 이론 시작을 입자부터 할 수도 있고 파동부터 할 수도 있어요. (이 두 가지 접근법이 같다는 건 슈뢰딩거와 디랙이 각각 증명했어요.)
      입자는 이산적이므로 당연히 행렬 기반 역학을 정의하고(이게 하이젠베르크의 행렬 역학), 파동은 연속적이므로 파동 방정식(즉 슈뢰딩거 방정식) 정의가 필요합니다.

      삭제
  10. 안녕하세요. 혹시 행렬의 열공간과 행공간을 왜 따로 정의하는지 여쭤봐도 될까요? 행공간은 직관적으로 Ax 꼴일 때, x가 span하는 공간 내의 부분공간이라고 이해할 수 있는데, 열공간은 직관적으로 와닿지가 않네요.

    답글삭제
    답글
    1. 행렬은 행 벡터로 구성할 수도 있고 열 벡터로 해도 되기 때문입니다. 보통은 행렬 곱 $\bf A x$ 형태로 문제를 푸니까, $\bf A$의 행 벡터로 만드는 행 공간을 생각하면 됩니다. 하지만 행렬 $\bf A$ 앞에 행 벡터를 곱해서 ${\bf x}^T {\bf A}$로 행렬 곱을 정의할 수도 있어요. 이때는 열 벡터에 대한 열 공간을 도입해야 합니다.

      삭제
    2. 감사합니다! 전파거북이님!

      삭제
    3. 안녕하세요. 유튜브를 보다가 헷갈리는 부분이 있어서 질문 드립니다.

      https://www.youtube.com/watch?v=kYB8IZa5AuE&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab&index=3
      위의 영상 5:52를 보면 행렬을 열 벡터를 이용한 변환으로 표현했습니다.

      예를 들어서 2x2 행렬 A의 경우

      [ a_11 a_12 ] [x] = x[ a_11 ] + y[ a_12 ]
      [ a_21 a_22 ] [y] [ a_21 ] [ a_22 ]

      로 표현했는데요. 해석하자면 column[x y] 열 벡터가 기저벡터 e_x, e_y와 component x,y를 가져서 x*e_x + y*e_y로 표현될 경우,
      행렬에 의해 변환된 후에는 x*column[ a_11(e_x) a_21(e_y) ] + y*column[ a_12(e_x) a_22(e_y) ]로 새로운 기저로다가 표현됩니다.

      (위에서 괄호 안에 e_x와 e_y를 넣은 이유는 원래 기저벡터에 대하여 a_ij만큼의 가중치로 변환되었다는 의미에서 괄호로 표현했습니다.)

      그렇다면 행렬 A는 새로운 기저벡터 column[ a_11(e_x) a_21(e_y) ] 와 column[ a_12(e_x) a_22(e_y)]가 원래 기저백터 component 값 x와 y를 가지게 되는 일차변환을 표현하는데요.

      원통형이나 구 좌표계 변환에서는 기저벡터 변환행렬이 열공간으로 표현되지 않습니다.행공간으로 표현되죠. 이게 훨씬 직관적으로 와닿구요.. 근데 왜 변환을 열벡터로 이해해야 할까요? 열벡터로 변환을 이해하면 여러번 변환해도 변환 후 나오는 벡터가 원래 기저벡터에 대한 값으로 나오긴 하는데 그것 때문일까요?

      삭제
    4. 죄송합니다. 위의 행렬 표현이 이상하네요..


      [ a_11 a_12 ] [x] = x[ a_11 ] + y[ a_12 ]
      [ a_21 a_22 ] [y] = x[ a_21 ] + y[ a_22 ]

      입니다. 너무 중구난방으로 글을 쓴 거 같아서 죄송합니다..

      삭제
    5. 익명님, 질문이 이해가 안되는데요. 좌표계 선택에 관계없이 선형 대수학의 기본 개념은 그대로입니다.
      아래 링크에 있는 식 (15)를 보세요. 행렬 곱으로 데카르트와 원통 좌표계를 서로 전환할 수 있어요.

      https://ghebook.blogspot.com/2011/07/circular-cylindrical-coordinate-system.html

      삭제
    6. 감사합니다.

      네. 데카르트와 원통좌표계는 서로 변환할 수 있습니다. {e1,e2,e3}을 데카르트 좌표계 기저들의 집합이라고 하고, {q1,q2,q3}를 원통 좌표계 기저들의 집합이라고 하면, 데카르트 좌표계에서 원통좌표계로 변환하는 변환행렬 A의 첫번째 행벡터 A_i가 e_i에서 q_i의 변환을 표현합니다. 행벡터가 기저벡터의 변환을 표현하는 거죠.

      데카르트 좌표계에서 원통 좌표계로의 변환행렬을 예로 들면, A_1= [cosθ sinθ 0] 입니다. 이 열벡터가 q1으로의 변환을 표현합니다.

      반면 아래의 유튜브 채널 5:52을 보면 열벡터로 기저벡터의 변환을 표현합니다.
      https://www.youtube.com/watch?v=kYB8IZa5AuE&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab&index=3


      위의 유튜브 채널 방식대로 데카르트에서 원통좌표로 변환하는 변환행렬을 보면 열벡터인
      column [cosθ -sinθ 0]으로 기저가 이동하는 것이 됩니다. 근데 이건 아니죠.

      열벡터와 행벡터로 표현하는 변환에 대한 두 개의 표현방식이 있는데, 왜 서로 다른 두 표현방식을 쓰는지 궁금해서 질문드립니다. 좌표계 변환할 때는 행벡터로 표현하는 게 편하고, 벡터공간 전체의 변환을 표현할 때는 열벡터로 표현하는 게 편해서 그런 건가요?

      삭제
    7. 아닙니다, 익명님. 행 공간이든 열 공간이든 선택의 문제입니다. 두 공간은 전치 행렬 관계일 뿐이라서 거의 등가입니다. 정확히는 영 공간(nullity)이 차이날 수 있어서 완전 똑같지는 않아요.

      삭제
  11. 대각지배행렬 식 39는 왜 정의한건가요 언제 쓰나요? 물리학에서

    답글삭제
  12. 감사합니다. 선형대수를 다시 공부하고 있는데 어떤 교재보다 최고입니다. 많은 도움이 되었습니다.

    답글삭제
    답글
    1. 방문 감사합니다, 익명. 공부로 대박 나세요 ^^

      삭제
  13. 이런 블로그가 있다는 걸 이제 알았다니....! 대학원 과정인데 학부때 배운 수학을 거의 까먹어서 다시 공부중에 발견했습니다. 감사합니다 ~!~! 열심히 공부할게요!

    답글삭제

욕설이나 스팸글은 삭제될 수 있습니다. [전파거북이]는 선플운동의 아름다운 인터넷을 지지합니다.