행렬식의 이해

yoon·2021년 10월 12일
0

(*이 시리즈의 내용은 모두 '인공지능 100점을 위한 파이썬 수학' 서적의 내용을 정리한 것입니다. 사진과 같은 자료들 또한 출처가 위 책임을 밝힙니다.)

행렬은 괄호 안에 직사각형 형태로 수를 배열한 것이다. 크기와 모양이 같은 행렬들끼리 더하거나 빼는 연산을 할 수 있다.
수학적으로 행렬은 크기와 모양이 같아야만 더하거나 빼는 연산을 할 수 있는데, numpy에서 브로드캐스트라는 내부 기능이 적용되어 크기와 모양이 다르더라도 행 또는 열을 확정하여 크기와 모양을 같게 만든 후 연산이 가능해진다.

(1) 행렬의 곱셈

  • 앞의 행과 뒤의 열의 각 원소를 곱한 후 더한다.

C 행렬의 1행 1열 원소인 c1의 값은 A의 1행의 원소인 a1, a2와 B의 1열 원소인 b1, b3의 값을 각각 곱한 후 더한 값이다.(c1 = a1b1 + a2b3)

(2) 행렬의 계산과 선형대수

  • 선형대수에서 대표적인 것이 행렬이다.
  • 연립방정식을 풀 때 사용하는 방법이 선형대수.

포도, 귤, 사과, 배를 각각 1개 구입하고 2350원을 지불하였다. 다음날 순서대로 5개, 2개, 4개, 7개를 구입하고 10,600원을 지불하였고, 다시 다음날 귤 1개, 사과 1개, 배 2개를 구입하고 2450원을 지불했다. 다음날 5개, 2개, 2개, 3개를 구입하고 6800원을 지불하였다. 받은 영수증에는 포도, 귤, 사과, 배의 개별 가격이 기록되지 않은 채 총금액만 적혀있는데, 과일들의 개당 가격은 얼마일까?

  • 위 문제는 연립방정식 문제이며 행렬을 사용하여 쉽게 풀 수 있다. 포도, 귤, 사과, 배를 각각 W, X, Y, Z라고 하면,

W + X + Y + Z = 2350 --- 1
5W + 2X + 4Y + 7Z = 10600 --- 2
X + Y + 2Z = 2450 --- 3
5W + 2X + 2Y + 3Z = 6800 --- 4

위 식이 성립하고 이를 행렬식으로 정리하면,

  • 행렬을 이용해서 연립방정식을 푸는 방법은 찾아야 할 미지수가 많을수록 효율이 좋아진다.
  • 위 문제는 손으로 풀기엔 미지수가 4개이므로 어렵다. 따라서 2개인 간단한 경우를 우선적으로 푼다.

X + Y = 1100 --- 1
2X + 3Y = 2800 --- 2

(1) * 3 - (2) 하면 X = 500이고, X를 (1)에 넣어주면 Y = 600을 구할 수 있다. 이를 행렬을 이용하여 풀면,

문제는 AX = B의 형태가 된다.

  • A의 크기는 (2,2)이고 X의 크기는 (2,1)이다.
  • ()안의 숫자 중 앞의 숫자는 행, 뒤의 숫자는 열을 의미한다.
  • 두 행렬의 곱은 앞의 행렬의 열의 크기와 뒤의 행렬의 행의 크기가 동일할 때만 가능하다.

X를 구하기 위해 양쪽에 A의 역행렬을 곱해준다.(행렬의 경우 곱셈의 교환 법칙이 성립하지 않는다!) 즉, AB와 BA는 같지 않으며, A^(-1)AX = A^(-1)B가 되어야 한다.

위의 식을 풀면

위 그림과 같이 되며 계산하는 것은 numpy의 array를 사용한다.

profile
공부하자

0개의 댓글