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 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)의 미지수 갯수가 몇개 안된다면 어떤 알고리즘을 쓰든지 계산 속도는 큰 차이는 없다. 하지만, 미지수가 수 천개 아니면 수십만개가 된다면 문제는 달라진다. 식 (3)의 왼쪽 행렬(A)의 특성을 파악해서 식 (4)의 사다리꼴 형태를 만들 수 있는 특별한 알고리즘(algorithm)을 찾아야 한다. 이와 같이 사다리꼴 형태 찾는 알고리즘이 행렬 이론 적용의 핵심이 된다. 이런 측면에서 [그림 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}$의 여인자는 $\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)이라 한다. 또한 수치 계산이 용이한 사다리꼴 형태로 만든다는 뜻은 행렬 구조를 상삼각 행렬이나 하삼각 행렬로 바꾸기를 의미한다.
행렬 이론에서 중요한 또 하나의 행렬은 대칭 행렬(對稱行列, symmetric matrix)이다. 물리학에서 나타나는 행렬은 대칭성을 가지는 경우가 대부분이다. 대칭 행렬을 정의하기 위해 전치 행렬(자리바꿈 행렬, 轉置行列, transpose)을 생각해보자.

                       (29)

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

                       (30)

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

                       (31)

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

                       (32)

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

                       (33)

대칭 행렬과 비슷하지만, 다음 관계를 만족하는 행렬은 반대칭 행렬(反對稱行列, skew-symmetric matrix)이라 한다.

                       (34)

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

                       (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)가 된다. LAPACK에서는 주로 열 우선 순서로 행렬의 원소를 저장한다.

[그림 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)이라고도 한다. 엄격 대각 지배 행렬은 당연히 약한 대각 지배 행렬도 된다.
행렬의 대각합(對角合, trace) $\operatorname{tr}({\bf A})$은 말 그대로 모든 대각선 원소 $a_{ii}$의 단순 합으로 정의한다.

                       (41)

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

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


   1. 기본(basics)   

[행렬 항등식]

                       (1.1)

                       (1.2)


   2. 대각합(trace)   

[행렬 원소의 곱]

                       (2.1)

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

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

                       (2.2)

식 (2.2)의 오른쪽 식에서 $j = k$ 조건을 만족하도록 모든 대각선 원소를 모으면 식 (2.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.

[다음 읽을거리]

댓글 32개 :

  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)이 차이날 수 있어서 완전 똑같지는 않아요.

      삭제

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