4. 행렬 성질
대칭행렬 (Symetric Matrix)
대칭 행렬은 자신의 전치 행렬이 원래의 자기 자신과 같은 행렬이다. 즉,
대칭행렬을 이루기 위해선 원소의 row index와 column index가 반대로 바뀌어도 동일한 원소를 가져야 한다.
대칭 행렬을 이루기 위한 또 다른 조건은 정방 행렬이어야 한다는 것이다. 즉, 행렬의 행 크기가 열 크기가 동일해야 한다.
여기서,
단위행렬(unit matrix, 또는 항등행렬(identity matrix))
대각성분이 모두 1이고, 나머지 요소돌은 모두 0인 대칭 행렬을 의미한다. 대칭행렬이므로 정방행렬이다.
단위 행렬과 벡터의 곱은 벡터에 스칼라 1을 곱하는 것과 같다. 즉, 곱셈 연산 전후로 벡터 값에 변화가 없다.
단위행렬은
앞선 챕터에서 다뤘던 행렬곱에서는 좌항의 행렬을 계수로, 우항의 벡터를 변수로 이해하였다.
이러한 관점에 따라 단위 행렬과 벡터의 곱을 이해하면 다음 그림과 같다.
이러한 단위 행렬의 성질은 역행렬과 직교행렬의 특성을 설명할 때 다시 언급된다.
대각행렬(diagonal matrix)
대각행렬은 대각 성분을 제외한 원소들이 모두 0이라는 점에서는 동일하나, 대각성분이 1이 아닌 값도 될 수 있다. 즉, 단위 행렬은 대각 행렬의 일종이라고도 이해할 수 있다.
대각성분벡터(주대각선)로 대각행렬을 표기하는 방법은 다음과 같다. 이때
대각행렬의 대각성분을 이루는 벡터(
역행렬(Inverse Matrix)
역행렬은 같은 꼴의 정방행렬
역행렬은 정방행렬이어야 하며, 어떠한 정방행렬에 있어 역행렬은 오직 하나만 존재한다.
모든 정방행렬이 역행렬을 가지는 것은 아니며, 이러한 행렬을 특이행렬(Singular Matrix) 이라고 칭한다. 역행렬을 갖는 행렬은 가역행렬(Non Singular Matrix)이라고 부르기도 한다.
역행렬에 대한 표기는
역행렬을 본격적으로 이해해보기 전에, 헹렬식에 대해 알아보자.
행렬식 (determinant)
행렬식이란, 정방행렬에 하나의 수를 대응시키는 함수를 의미한다. 행렬을 통해 연립일차방정식의 해(크래머 공식)를 구하기 위해 고안되었다고 한다. 그 외에도 고윳값을 계산할 떄도 등장하는 용어다. 역행렬에서 행렬식에 대해 다루는 이유는, 행렬식을 통해 역행렬의 존재성을 판별하기 때문이다.
이차정사각행렬에서 기하학적으로 행렬식을 이해하면, 평면상에서 행렬의 열벡터를 표현했을때, 각각의 종점을 연장하여 평행사변형을 만들었을 때의 넓이가 행렬식의 값과 같다.
삼차정사각행렬에서의 행렬식의 값도 마찬가지로, 3차원 공간상에 표현된 평행육면체의 부피와 같다. 2X2 정방행렬에서의 행렬식은 다음과 같다
2X2 정방행렬에서의 행렬식 연산은 간단하다. 대각선을 이루는 원소들끼리 곱하고, 이들을 더하기만 하면 된다.
3X3 정방행렬에서의 행렬식 연산은 좀 복잡하다. 두 가지 방법으로 구해볼 수 있다.
전개 방식
행렬에서 마지막 열을 제외한 나머지 열을 마지막 열의 다음에 붙여준다
이 상태에서 다음 연산을 진행해준다.
그 다음엔 반대로 구한다.
마지막으로 앞서 구한 두 값을 뺀다.
여인수와 소행렬
앞서 짧게 소개한 전개 방식은 사실 여인수전개를 통한 계산을 간단히 한 것이다.
소행렬을 통한 계산을 위해선 소행렬과 여인수전개의 개념을 먼저 숙지해야 한다.
소행렬 (minor determinant)
소행렬이란, 특정 열과 행을 제거하고 만든 부분행렬에 대한 행렬식을 의미한다.
행렬에 제외되는 행, 열을 아래첨자로 표기하면 된다. 또는 소행렬에 절댓값 기호를 취해서 나타내는 방법도 있다.
위 식은 i행, j열의 원소들을 제하고 남은 부분에 대한 행렬식을 의미한다. 그림으로 나타내면 다음과 같다.
여인수(cofactor)와 여인수전개
여인수전개는 여인수로 행렬식을 구하는 방법을 의미한다. 라플라스 전개라고 부르기도 한다.
여인수는 소행렬에 (-1)^(i+j)를 곱한 값을 의미한다. 식으로 나타내면 다음과 같다.
여인수 전개에서는 어떠한 행, 열에 대해 여인수 전개를 진행해도 동일한 값이 도출된다. 따라서, 한 행이나 열이 모두 동일한 값이거나 0이 많이 포함된 경우, 이 행/열에 대해 여인수 전개를 진행하면 매우 효율적으로 계산을 진행할 수 있다.
여인수전개는 4x4, 5x5 등 모든 차원의 정방행렬에 대해 적용될 수 있다.
다음은 3X3 행렬에서 여인수전개로 행렬식 값을 구한 과정을 나타낸 그림이다.
위 그림대로 식들을 전개하면 다음의 식을 얻을 수 있다.
실제 값을 대입하면 다음의 결과를 얻을 수 있다.
코드상으로 구현하면, 5X5 에서 4X4, 3X3 ... 으로 점차 줄어들어 쉽게 계산할 수 있는 2X2의 소행렬로 나눠 계산한 후, 다른 계산 결과와 합쳐 나가는 방식을 취할 것이다. 이처럼 자기 자신을 더 작게 나누어 계산 가능한 사이즈로 나눠 계산한 후 원래의 상태로 거슬러 올라가며 합쳐나가는 알고리즘은 재귀적 프로그래밍으로 구현했을 때 효과적이다. 하지만 대체로 텐서 연산 관련 라이브러리에 잘 구현되어 있다.
파이썬 상에서 행렬식은 구하고자 한다면, 복잡한 구현 없이 다음의 코드로 쉽게 구할 수 있다.
X = np.array([[1,2,4],[2,-1,3],[0,5,1]])
np.linalg.det(X)
행렬식과 역행렬
행렬식을 알아본 이유는, 행렬식을 통해 정방행렬에 역행렬이 존재하는지를 확인할 수 있기 때문이다.
역행렬이 존재하기 위해선, 행렬식의 값이 0이 아니어야 한다. 즉,
역행렬을 구하는 수식은 다음과 같다.
직교형렬 (Orthogonal Matrix)
직교 행렬은 정방행렬이면서 행벡터, 열벡터가 모두 수직이어야 한다. 또한, 열벡터, 행벡터의 크기가 1이어야 한다.
즉, 직교행렬은 행렬의 열이 정규직교벡터(Orthogonal Vector)로 이뤄진 행렬을 의미한다.
또한, 직교행렬의 전치행렬과 직교 행렬의 곱은 단위행렬이다. 즉,
직교행렬과 벡터의 곱의 크기는 벡터의 크기와 같다. 이는 아래의 식으로 증명 할 수 있다.
직교행렬과 직교행렬의 곱은 직교행렬이다. 이는 직교행렬이 각도와 길이, 내적을 보존하는 행렬이기 때문이다.