행렬의 기초 - 행렬과 행렬의 곱셈

이번 글에서는 벡터(vector)들의 연산을 효율적으로 표현하기 위해서 행렬(matrix)를 정의하고 그 성질을 살펴볼 예정이다.
먼저 행렬의 정의는 숫자나 함수(function), 연산자(operator)들의 2차원 배열(array)을 의미한다. 사각 격자에 원하는 대상을 집어넣으면 된다.
행렬을 맨처음 만들게 된 계기는 사실 연립 방정식(simultaneous equation)을 풀기위해서 였다. 다음과 같은 두 개의 연립 방정식을 생각해보자.
평범하게 연립 방정식을 푸는 방법은 두 식 중 원하는 식을 한 변수에 대한 식으로 고친 다음 나머지 식에 대입하는 방식을 이용한다. 하지만 변수의 개수가 많아지면 이 방법은 상당히 풀이가 복잡해진다.

하지만 이 식들을 다음과 같이 표현해보자.
식 (3)과 같이 연립 방정식을 표현하는 방식이 행렬과 벡터를 이용한 표현 방법인데 이 방법을 이용하면 연립 방정식에 대한 관점을 바꿀 수 있다.
식 (3) 형태는

잠시 우리가 다루려는 행렬의 성분이 전부 실수(real number)인 경우를 생각해보자. 식 (3)에서와 같이 사각형 격자를 만들 수 있으며 크기는 얼마든지 더 크게 만들 수 있다.
따라서 세로로
여기서 행렬의 특정 성분만 보고 싶을 수 있다. 몇 번째 가로줄과 몇 번째 세로줄에 있는지 알면 정확한 성분을 지칭할 수 있고 우리는 여기서 몇 번째 가로줄인가를 얘기할 때 행(row)이라고 하며 몇 번째 세로줄인가는 열(column)이라고 한다.
가령 식 (4)에서
또한 한 줄로만 이루어진 행렬을 생각해 볼 수 있는데 사실 이는 벡터와 전혀 다르지 않음을 알 수 있다. 이러한 종류에 대해선 나중에 텐서(Tensor)로 더 일반화 해서 생각할 수 있다.
근데 한 줄을 행으로 뽑는가 열로 뽑는가에 따라서 벡터의 모양은 좀 다를 수 있다. 그래서 행으로 뽑는 벡터를 행 벡터(row vector), 열로 뽑는 벡터를 열 벡터(column vector)라고 부르기도 한다.

여기서 잠시 식 (3)과 식 (1), (2)의 관계를 통해 행렬이 어떻게 벡터를 변환시키는지 그 연산 법칙을 유추해 볼 수 있다. 먼저
여기서 주의해야 할 점은 변환 행렬의 열의 개수와 변환되는 백터의 행의 개수는 일치해야 한다.
그렇다면

이번엔
그런데 매번 식 (8)과 같이 쓰기는 힘들 것이다. 특히 다루고자 하는 차원이 높아지면 높아질 수록 손으로 쓰기조차 버거워진다. 따라서 식 (8)의 우변의 결과 벡터를 다음과 같이 합 기호(summation)을 이용해서 간략화 해보자.
식 (8)에서 행렬을
이제
아인슈타인(Einstein)이 사용한 표현법에 의해 합 기호를 빼고 간단하게

지금까지 행렬이 벡터를 변환하는 과정으로 봤다. 근데 벡터를 지금 행이나 열이 1개인 행렬로 봤었다. 따라서 이 과정은 행렬과 행렬의 곱셈으로 생각할 수 있다.
따라서 이번엔 이 과정을 일반화시켜서 행렬간의 곱셈을 만들어 볼 수 있다. 벡터의 연산에서와 마찬가지로
행렬과 벡터의 연산을 응용해서 다음과 같이 행렬
식 (12)에서 사용한 행렬
마지막 식은 아인슈타인 표기법을 따른 것이다.