Loading [MathJax]/jax/output/CommonHTML/jax.js

ABOUT ME

오타, 오류 등등 지적은 환영합니다

Today
Yesterday
Total
  • 행렬의 기초 - 행렬과 행렬의 곱셈
    수리물리 2023. 2. 12. 22:19
    반응형

    이번 글에서는 벡터(vector)들의 연산을 효율적으로 표현하기 위해서 행렬(matrix)를 정의하고 그 성질을 살펴볼 예정이다.

     

    먼저 행렬의 정의는 숫자나 함수(function), 연산자(operator)들의 2차원 배열(array)을 의미한다. 사각 격자에 원하는 대상을 집어넣으면 된다.

     

    행렬을 맨처음 만들게 된 계기는 사실 연립 방정식(simultaneous equation)을 풀기위해서 였다. 다음과 같은 두 개의 연립 방정식을 생각해보자.

    ax+by=m

    cx+dy=n

     

    평범하게 연립 방정식을 푸는 방법은 두 식 중 원하는 식을 한 변수에 대한 식으로 고친 다음 나머지 식에 대입하는 방식을 이용한다. 하지만 변수의 개수가 많아지면 이 방법은 상당히 풀이가 복잡해진다.

     

     

    하지만 이 식들을 다음과 같이 표현해보자.

    (abcd)(xy)=(mn)

     

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

     

    식 (3) 형태는 xy를 성분으로 가지는 벡터가 어떤 행렬에 의해 mn을 성분으로 가지는 벡터로 변환(transform)된 것이다. 이제 우리는 변환 행렬(transformation matirx)의 성질을 이용해서 원래 벡터를 찾아낼 수 있다.

     

     

    잠시 우리가 다루려는 행렬의 성분이 전부 실수(real number)인 경우를 생각해보자. 식 (3)에서와 같이 사각형 격자를 만들 수 있으며 크기는 얼마든지 더 크게 만들 수 있다.

     

    따라서 세로로 m개 성분을 가로로 n개 성분을 가지는 행렬을 생각해보자. 이 행렬의 성분의 개수는 전부 m×n개이며 우리는 m×n 행렬이라고 부른다.

    (A11A12A13A1nA21A22A23A2nAm1Am2Am3Amn)

     

    여기서 행렬의 특정 성분만 보고 싶을 수 있다. 몇 번째 가로줄과 몇 번째 세로줄에 있는지 알면 정확한 성분을 지칭할 수 있고 우리는 여기서 몇 번째 가로줄인가를 얘기할 때 행(row)이라고 하며 몇 번째 세로줄인가는 열(column)이라고 한다.

     

    가령 식 (4)에서 A23은 2행 3열에 있는 성분을 의미한다. 많은 경우 A라는 어떤 행렬의 αβ열 성분은 Aαβ로 표현한다.

     

    또한 한 줄로만 이루어진 행렬을 생각해 볼 수 있는데 사실 이는 벡터와 전혀 다르지 않음을 알 수 있다. 이러한 종류에 대해선 나중에 텐서(Tensor)로 더 일반화 해서 생각할 수 있다.

     

    근데 한 줄을 행으로 뽑는가 열로 뽑는가에 따라서 벡터의 모양은 좀 다를 수 있다. 그래서 행으로 뽑는 벡터를 행 벡터(row vector), 열로 뽑는 벡터를 열 벡터(column vector)라고 부르기도 한다.

     

     

    여기서 잠시 식 (3)과 식 (1), (2)의 관계를 통해 행렬이 어떻게 벡터를 변환시키는지 그 연산 법칙을 유추해 볼 수 있다. 먼저 3×3 행렬의 경우 어떤 변환을 만드는지 생각해보자.

    (A11A12A13A21A22A23A31A32A33)(xyz)=(A11x+A12y+A13zA21x+A22y+A23zA31x+A32y+A33z)

     

    여기서 주의해야 할 점은 변환 행렬의 열의 개수와 변환되는 백터의 행의 개수는 일치해야 한다. m×n 행렬은 n차원 벡터만 변환이 가능하다. 다음과 같은 연산은 정의되지 않는다.

    (A11A12A13A21A22A23A31A32A33)(xy)

     

    그렇다면 1×n 행렬과 n×1 열 벡터의 연산도 생각해 볼 수 있으며 이는 사실 내적(inner product)과 동일함을 알 수 있다.

    (a1a2a3an)(b1b2b3bn)=a1b1+a2b2+a3b3++anbn

     

     

    알버트 아인슈타인

    이번엔 m×n 행렬이 n차원 벡터를 변환시키는 경우로 일반화 시켜보자.

    (A11A12A13A1nA21A22A23A2nA31A32A33A3nAm1Am2Am3Amn)(x1x2x3xn)=(A11x1+A12x2+A13x3++A1nxnA21x1+A22x2+A23x3++A2nxnA31x1+A32x2+A33x3++A3nxnAm1x1+Am2x2+Am3x3++Amnxn)

     

    그런데 매번 식 (8)과 같이 쓰기는 힘들 것이다. 특히 다루고자 하는 차원이 높아지면 높아질 수록 손으로 쓰기조차 버거워진다. 따라서 식 (8)의 우변의 결과 벡터를 다음과 같이 합 기호(summation)을 이용해서 간략화 해보자.

    (A11x1+A12x2+A13x3++A1nxnA21x1+A22x2+A23x3++A2nxnA31x1+A32x2+A33x3++A3nxnAm1x1+Am2x2+Am3x3++Amnxn)=(ni=1A1ixini=1A2ixini=1A3ixini=1Amixi)

     

    식 (8)에서 행렬을 A, 변환되는 벡터를 x, 변환된 행렬을 y라고 표현하면 다음과 같다.

    Ax=y

     

    이제 yj번째 성분을 식 (9)를 이용해서 표현하면 다음과 같다.

    yj=ni=1Ajixi

     

    아인슈타인(Einstein)이 사용한 표현법에 의해 합 기호를 빼고 간단하게 yj=Ajixi로 표현하기도 한다. 상대성 이론(relativistic theory)에서 많이 사용되는 표현법이며 한쪽 항에 문자가 2개 있다면 합 기호가 생략된 것으로 간주한다.

     

     

    지금까지 행렬이 벡터를 변환하는 과정으로 봤다. 근데 벡터를 지금 행이나 열이 1개인 행렬로 봤었다. 따라서 이 과정은 행렬과 행렬의 곱셈으로 생각할 수 있다.

     

    따라서 이번엔 이 과정을 일반화시켜서 행렬간의 곱셈을 만들어 볼 수 있다. 벡터의 연산에서와 마찬가지로 m×n 행렬은 n×l 형태의 행렬하고만 곱할 수있다. 따라서 앞에 있는 행렬의 열과 뒤에 있는 행렬의 행이 일치해야 한다.

     

    행렬과 벡터의 연산을 응용해서 다음과 같이 행렬 AB의 곱을 만들자.

    (A11A12A1nA21A22A2nAm1Am2Amn)(B11B12B1lB21B22B2lBn1Bn2Bnl)=(A11B11++A1nBn1A11B12++A1nBn2A11B1l++A1nBnlA21B11++A2nBn1A21B12++A2nBn2A21B1l++A2nBnlAm1B11++AmnBn1Am1B12++AmnBn2Am1Bl1++AmnBnl)=(nj=1A1jBj1nj=1A1jBj2nj=1A1jBjlnj=1A2jBj1nj=1A2jBj2nj=1A2jBjlnj=1AmjBj1nj=1AmjBj2nj=1AmjBjl) 

     

    식 (12)에서 사용한 행렬 AB의 곱을 C라 하면 Cm×l 행렬이 되며 성분은 다음과 같이 일반화해서 표현할 수 있다.

    Cij=(AB)ij=kAikBkj=AikBkj

    마지막 식은 아인슈타인 표기법을 따른 것이다.

     

     

    반응형

    댓글

Designed by Tistory.