오류에 대한 지적이나 질문, 토의 환영합니다. 자유롭게 댓글 남겨주세요!.!
선형대수 (Linear Algebra) (1): 선형시스템 기초
선형시스템 (Linear System)
선형시스템 복습: 초/중등 교과과정
선형대수(Linear Algebra)의 목표
- 어떠한 연립 일차방정식(선형 시스템: Linear System) 문제라도
정형적인 방법으로 표현하고 해결하는 방법을 배우는 것이 목표입니다.
Ax=b
<=> A−1Ax=A−1b
<=> x=A−1b
선형 시스템의 구성 요소
- 3개의 선형방정식, 3개의 미지수으로 구성된 연립일차방정식을 3(식) X 3(미지수) 선형시스템이라고 합니다.
- 3x+y+z=4 ~ E1
- x−2y−z=1 ~ E2
- x+y+z=2 ~ E3
=> 이 방정식들을 각각 선형방정식 (Linear Equation) 이라고 합니다.
위 식을 모두 만족하는 미지수(unknown, variable) x, y, z를 구하는 것이 목표입니다.
선형시스템: Ax=b, 연립일차방정식의 대수적 표현
선형시스템을 Ax=b 로 표현하기
- 미지수를 열벡터로 x로 표현한다.
- 선형시스템의 선형방정식에 대해 다음을 수행한다.
2.1 계수를 모아 A의 행벡터로 표현한다.
2.2 상수를 모아 b에 표현한다.
-
Ex 1)
3x1+x2=4
x1−2x2=1
- 미지수를 열벡터로 표현한다. x=[x1x2]
2.1 계수를 모아 A의 행벡터로 표현한다. A=[3 11−2]
2.2 상수를 모아 b에 표현한다. b=[41]
최종: Ax=b <=> [3 11−2][x1x2]=[41]
-
Ex 2)
x1+2x2−x3=3
x2+2x3−x4=2
x3+2x4−x5=5
- x=⎣⎢⎢⎢⎢⎢⎡x1x2x3x4x5⎦⎥⎥⎥⎥⎥⎤
- A=⎣⎢⎡1 2 −3 0 0 0 1 2 −1 0 0 0 1 2 −1 ⎦⎥⎤
- b=⎣⎢⎡325⎦⎥⎤
=> Ax=b <=> ⎣⎢⎡1 2 −3 0 0 0 1 2 −1 0 0 0 1 2 −1 ⎦⎥⎤⎣⎢⎢⎢⎢⎢⎡x1x2x3x4x5⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎡325⎦⎥⎤
정리
-
m×n의 선형시스템 Ax=b
-
식은 행이고, 행은 식이다. (선형방정식 - row)
-
m은 선형방정식의 개수이다
-
n은 미지수의 개수이다.
-
A는 m×n 행렬이다.
-
x는 n−벡터이다
-
b는 m−벡터이다.
실습: 행렬과 벡터의 코딩 및 연산
행렬 코딩
import numpy as np
A = np.array([[3, 1, 1], [1, -2, -1], [1, 1, 1]])
print(A)
print(np.shape(A))
[[ 3 1 1]
[ 1 -2 -1]
[ 1 1 1]]
(3, 3)
벡터 코딩
b = np.array([4, 1, 2])
print(b)
print(np.shape(b))
[4 1 2]
(3,)
역행렬 구하기
A_inv = np.linalg.inv(A)
print(A_inv)
print(np.shape(A_inv))
[[ 5.00000000e-01 -7.40148683e-17 -5.00000000e-01]
[ 1.00000000e+00 -1.00000000e+00 -2.00000000e+00]
[-1.50000000e+00 1.00000000e+00 3.50000000e+00]]
(3, 3)
역행렬을 이용한 선형시스템 Ax=b의 해 구하기
x = A_inv @ b
print(x)
print(np.shape(x))
[ 1. -1. 2.]
(3,)
결과 검출
bb = A @ x
print(np.shape(bb))
print(bb)
if np.linalg.norm(b - bb) < 1e-3:
print('Ok')
else:
print('something wrong')
(3,)
[4. 1. 2.]
Ok

이 글은 프로그래머스 스쿨 인공지능 데브코스 과정에서 공부한 내용을 바탕으로 정리한 글입니다.