[week2/day2] 선형대수 - 행렬연산

승준·2021년 4월 27일
0

선형대수 - 행렬연산

들어가며

행렬의 종류를 구조화 다음 다음 그림과 같다.

행렬

행렬

행렬에서 가로줄을 행(row), 세로줄을 열(column)이라 한다. m개의 행과 n개의 열이 있는 다음과 같은 행렬을 m×nm\times n 행렬, m행 n열의 행렬, 또는 m by n 행렬이라 한다.

[311224]\begin{bmatrix} 3 &1\\ 1&-2\\ 2 &-4\\ \end{bmatrix}

다음과 같이 하나의 행 혹은 하나의 열을 가지는 특별한 행렬을 생각할 수 있따. 이들을 각가 행백터(row vector), 열벡터(column vector) 라 한다.

[2103] [13]\begin{bmatrix} 2 &1& 0& -3 \end{bmatrix} \ \begin{bmatrix} 1\\ 3 \end{bmatrix}

극단적으로 1×11\times 1 행렬을 생각할 수 있는데, 이는 스칼라(scalar)와 같다.

주대각 성분 (main diagonal entry)

행과 열의 번호가 같은 성분인 a11a22,...,anna_{11} a_{22}, ..., a_{nn} 을 주대각 성분이라고 한다.

단위행렬(unit matrix)

모든 주대각(main diagonal entry) 성분이 1이고, 나머지 entry가 0인 정방 행렬을 단위 행렬(unit matrix) 또는 항등행렬(identity matrix) 라고 한다.

I=[100010001]I = \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}

벡터 표기법

벡터는 아래의 x와 같이 볼드체 소문자로 표기한다.

x=[x1x2xn]x = \begin{bmatrix} x_1\\ x_2\\ \vdots \\ x_n \end{bmatrix}
주요 표기법
  • 벡터라고 하면 일반적으로 열벡터(column vector)를 말한다.
  • nn-벡터는 nn개의 스칼라(scalar)로 구성된 벡터를 말한다.

참고 - 스칼라와 벡터의 유래

스칼라 sealar

스칼라는 크기의 비율을 나타내는 라틴어 스칼라리스(scalaris)에서 유래한 단어로 실수 나 복소수 등의 수를 나타낸댜 스칼라는 ''곱해져서 크기를 줄이거나 키우는 것’이라는 의미를 갖는댜 선형대수학에서 스칼라는 행렬이나 벡터가 아닌 수를 가리킨다.

벡터vector

벡터는 운반하거나 전달하는 사람 또는 개체를 나타내는 라틴어 벡토르(vector)에서 유래한 단어이댜

행렬의 곱

행렬 CC의 각 요소(Entry) CijC_{ij}는 '곱의 왼쪽 행렬 AAii번째 행벡터' 와 '곱의 오른쪽 행렬 BBii번째 열벡터의' 내적(inner product)이다.

  • 따라서, 두 행렬의 곱 AB에 대해 A의 열 개수와 B의 행 개수는 일치해야 한다.
  • 일반적으로 교환법칙이 성립하지 않는다.
    • ABBAAB ≠ BA 이다. 왜냐하면 행과 열을 뽑아오는 방법이 다르기 때문이다.
  • 행렬의 곱은 병렬처리(parallel processing)으로 가속화 할 수 있다.

스칼라, 벡터, 행렬 그리고 텐서

스칼라

스칼라는 크기의 비율을 나타내는 라틴어 스칼라리스(scalaris)에서 유래한 단어로 실수 나 복소수 등의 수를 나타낸댜 스칼라는 ''곱해져서 크기를 줄이거나 키우는 것’이라는 의미를 갖는댜 선형대수학에서 스칼라는 행렬이나 벡터가 아닌 수를 가리킨다. 스칼라는 숫자 하나로 구성되어 있다.

스칼라를 벡터로 표현

이 스칼라를 벡터로 표현 하면 다음과 같다.

[7][7]

스칼라를 행렬로 표현

이를 더 확장하여 행렬로 표현하면 다음과 같다.

[7]1×1[7]_{1 \times 1}

벡터

벡터는 여러 숫자가 일열로 늘어선 구조이다. 일반적으로, 열벡터를 가르킨다.

x=[x1x2xn]x = \begin{bmatrix} x_1\\ x_2\\ \vdots \\ x_n \end{bmatrix}

벡터를 행렬로 표현

다음과 같이 여러 모양의 행렬로 표현 할 수 있다. 즉, 표현하고자 하는 행렬의 모양은 응용문제에 따라 결정 된다.

행렬

행렬은 사각형 구조에 여러 숫자가 행과 열로 늘어선 구조이다.

[311224]\begin{bmatrix} 3 &1\\ 1&-2\\ 2 &-4\\ \end{bmatrix}

행렬을 벡터로 표현

위 행렬은 다음과 같이 6-벡터로 표현 할 수 있다. 즉, 행렬을 벡터로 변환할때, 행부터 혹은 열부터 읽은 것인지 응용문제에 따라 달라진다.

[312344] [312344]\begin{bmatrix} 3\\ 1\\ 2\\ 3\\ 4\\ 4 \end{bmatrix} \ \begin{bmatrix} 3\\ 1\\ 2\\ 3\\ 4\\ 4 \end{bmatrix}

텐서(tensor)

텐서는 스칼라, 벡터, 행렬을 아우르는 개념이다. 숫자가 늘어설 수 있는 방향이 kk개 이면 kk-텐서로 부른다.

  • 0-tensor : 스칼라
  • 1-tensor : 벡터
  • 2-tensor : 행렬

분할 행렬(Partitioned Matrix)

행렬을 조각(partition) 단위로 분할 하여 생각해도 무방하다. 이런 관점에서 본다면, 행렬은 부분 행렬(submatrix)로 이루어진 직사각형 구조로 확장해서 생각해 볼 수 있다. 이렇게 행렬을 구조족으로 보는 방법을 분할 행렬(partitioned matrix) 또는 블록 행렬(block matrix)라고 한다.

블록 행렬(Block matrix)

행렬의 특정 행과 열 사이를 경계로 나누어 부분행렬로 표현한 것을 블록행렬 또는 구획행렬이라고 한다.

다음은 행렬 AA를 부분행렬로 나누어 표현한 것이다. 여기서는 2행과 3행 사이, 3열과 4열 사이, 5열과 6열 사이를 분할한 것이다.

블록 행렬은 다음과 같이 분할된 각 부분행렬로 행렬 A를 표현한다.

이때 각 부분행렬은 다음과 같다.

분할행렬로 행렬 곱 이해하기

분할 행렬을 사용해서 마치 분배법칙을 사용하듯이 연산이 가능해진다.

  • 두 행렬의 곱 AB = C를 아래와 같이 matrix-column vector products로 볼 수 있다.
    AB=A[b1b2bn]=[Ab1Ab2Abn]=CAB = A \begin{bmatrix} b_1 & b_2 & \dots & b_n \end{bmatrix} = \begin{bmatrix} Ab_1 & Ab_2 & \dots & Ab_n \end{bmatrix} = C
    예를 들면, A2×3B3×2=C2×2A_{2 \times 3} B_{3 \times 2} = C_{2 \times 2} 을 다음과 같이 구조적으로 해석 할 수 있다.

  • 두 행렬의 곱 AB = C를 아래와 같이 row vector-matrix products로 볼 수 있다.
AB=[a1a2am]×B=[a1Ba2BamB]=CAB = \begin{bmatrix} a_1\\ a_2\\ \vdots\\ a_m \end{bmatrix} \times B= \begin{bmatrix} a_1B\\ a_2B\\ \vdots\\ a_mB \end{bmatrix} = C

​ 이는 다음과 같이 구조적으로 해석 할 수 있다.

위 예시를 정리하면 다음과 같다.

열벡터와 행벡터의 곱에 의한 행렬 곱의 표현

m×nm \times n 행렬 AAn×pn \times p 행령 B의 곱은 AA의 열벡터(column vector) aia_iBB의 행백터(row vector) bjTb_j^T 의 곱으로 다음과 같이 표현 할 수 있다.

AB=aab1T+a2b2T++anbnTAB = a_ab_1^T + a_2b_2^T + \dots + a_nb_n^T

여기서 행렬 A와 B는 다음과 같이 각각 열벡터와 행벡터로 분할 하여 표현한 것이다.

A=[a1a2an],[b1Tb2TbnT]A = \begin{bmatrix} a_1 & a_2 & \dots & a_n \end{bmatrix} , \begin{bmatrix} b_1^T \\ b_2^T \\ \vdots\\ b_n^T \end{bmatrix}
profile
내일을 기록하기 위해서 오늘을 기록합니다 🤗

0개의 댓글