드론 관제실의 수치해석 기초: NumPy로 근사해 풀기
·
강의 개요
1
공식이 없으면 한 걸음씩: 수치해석이란
2
0.1 + 0.2가 0.3이 아닌 날: 컴퓨터 속 실수
3
근사의 대가: 테일러 급수와 절단 오차
4
구간을 반으로: 이분법과 가위치법
5
접선을 타고 내려가기: 뉴턴-랩슨과 할선법
6
가장 멀리 나는 속도: 1차원 최적화
7
배송 허브 세 곳의 물량 맞추기: 가우스 소거와 피벗
8
지도가 커지면: LU 분해, 반복법, 조건수
9
센서 기록에 선 긋기: 최소제곱 회귀
10
비어 있는 시각 채우기: 보간과 스플라인
11
얼마나 날았나: 수치 적분
12
처음 문제로 돌아가기: 미분방정식의 수치해
공식으로 풀리지 않는 문제를 컴퓨터로 푸는 법. 새벽 드론 배송 회사의 신입 개발자가 되어 낙하산 상자, 배터리, 배송 허브, GPS 기록을 다루며 오차·근 찾기·최적화·연립방정식·회귀·보간·적분·미분방정식까지 12교시에 익힙니다.
0:00–0:50
공식이 없으면 한 걸음씩: 수치해석이란
0:50–1:40
0.1 + 0.2가 0.3이 아닌 날: 컴퓨터 속 실수
1:40–2:30
근사의 대가: 테일러 급수와 절단 오차
2:30–3:20
구간을 반으로: 이분법과 가위치법
3:20–4:10
접선을 타고 내려가기: 뉴턴-랩슨과 할선법
4:10–5:00
가장 멀리 나는 속도: 1차원 최적화
5:00–5:50
배송 허브 세 곳의 물량 맞추기: 가우스 소거와 피벗
5:50–6:40
지도가 커지면: LU 분해, 반복법, 조건수
6:40–7:30
센서 기록에 선 긋기: 최소제곱 회귀
7:30–8:20
비어 있는 시각 채우기: 보간과 스플라인
8:20–9:10
얼마나 날았나: 수치 적분
9:10–10:00
처음 문제로 돌아가기: 미분방정식의 수치해
방정식이 공식으로 풀리지 않을 때, 적분할 함수가 식이 아니라 센서 기록일 때, 행렬이 너무 커서 손으로는 엄두가 안 날 때 컴퓨터는 어떻게 답을 낼까요? 덧셈·뺄셈·곱셈·나눗셈을 아주 많이, 영리하게 반복해서 답에 다가갑니다. 그 방법과, 다가가면서 생기는 오차를 다루는 학문이 수치해석입니다.
수치해석 책은 대개 오차 이론과 증명으로 시작해서 독자를 지치게 합니다. 이 강의는 순서를 바꿉니다. 새벽마다 섬과 산골 마을에 약과 생필품을 나르는 드론 배송 회사 하늘상자의 관제실에 신입 개발자 서윤으로 출근해, 매 교시 현장에서 생긴 문제를 하나씩 풉니다. 먼저 실습대에서 손으로 만져 보고, 식으로 정리하고, 같은 계산을 NumPy로 직접 짭니다.
아래는 1교시의 실습대입니다. 걸음 크기 h를 바꾸고 '상자 떨어뜨리기'를 눌러 보세요. 공식으로 구한 속도(회색)와 한 걸음씩 계산한 속도(남색)가 함께 그려지고, 값을 정할 때마다 서버의 NumPy가 같은 계산을 보여 줍니다.
t = 12초
공식: 15.66 m/s
오일러: 15.66 m/s
차이: 0 m/s (0%)
종단 속도 √(gm/cd) = 15.66 m/s
걸음이 너무 커서 오일러 방법이 종단 속도를 넘어 출렁입니다.
NumPy로 확인하기
실습대에서 값을 정할 때마다, 서버의 NumPy가 같은 숫자로 계산한 결과입니다.
>>> import numpy as np
>>> g, m, cd, h = 9.81, 12, 0.48, 1
>>> t = np.linspace(0, 12, 13)
>>> v = np.zeros_like(t)
>>> for i in range(len(t) - 1):
... v[i + 1] = v[i] + (g - cd / m * v[i]**2) * h
...
>>> np.round(v, 2)
array([ 0. , 9.81, 15.77, 15.63, 15.67, 15.66, 15.66, 15.66, 15.66,
15.66, 15.66, 15.66, 15.66])
>>> exact = np.sqrt(g * m / cd) * np.tanh(np.sqrt(g * cd / m) * t)
>>> np.round(exact, 2)
array([ 0. , 8.7 , 13.3 , 14.95, 15.45, 15.6 , 15.64, 15.66, 15.66,
15.66, 15.66, 15.66, 15.66])
# 가장 크게 벌어진 곳의 차이 (m/s)
>>> np.round(np.abs(v - exact).max(), 3)
np.float64(2.474)0.1 + 0.2 == 0.3이 False인 이유를 제대로 설명하고 싶은 분np.linalg.solve, np.polyfit, np.interp, np.trapezoid를 쓰면서도 속에서 무슨 일이 일어나는지 궁금했던 분미적분은 "기울기"와 "넓이"라는 뜻만 알면 됩니다. 필요한 식은 교시 안에서 숫자를 넣어 가며 다시 설명합니다. 그림으로 시작하는 선형대수를 먼저 들었다면 7~8교시가 훨씬 편하지만, 꼭 필요하지는 않습니다.
>>> 예제 출력은 모두 실제로 실행해 얻은 그대로입니다.| 부 | 교시 | 관제실의 문제 | 배우는 도구 |
|---|---|---|---|
| 1부 · 오차와 친해지기 | 1~3 | 낙하 속도, 정산 합계, 배터리 기울기 | 오일러 방법, 부동소수점, 테일러 급수, 수치미분 |
| 2부 · 방정식과 최적화 | 4~6 | 낙하산 크기, 빠른 반복 계산, 최적 순항 속도 | 이분법·가위치법, 뉴턴-랩슨·할선법, 황금분할 탐색 |
| 3부 · 연립방정식 | 7~8 | 허브 물량, 도시 전체 충전소 | 가우스 소거와 피벗, LU 분해, 반복법, 조건수 |
| 4부 · 데이터 다루기 | 9~11 | 배터리 기록, GPS 기록, 비행 거리 | 최소제곱 회귀, 보간과 스플라인, 수치 적분 |
| 5부 · 다시 처음으로 | 12 | 바람 속 낙하, 배터리 온도 | 미분방정식의 수치해(오일러, 호인, RK4) |
순서대로 보기를 권합니다. 1교시의 낙하산 상자가 4·5교시와 12교시에 다시 나와 강의가 한 바퀴로 이어집니다.
pip install numpy 한 줄이면 됩니다.python)이나 주피터 노트북. 본문의 >>> 예제를 그대로 따라 쳐 보세요.| 이름 | 누구 |
|---|---|
| 서윤 | 이번 주에 입사한 백엔드 개발자. 파이썬은 익숙하지만 수학은 대학 이후 손을 놓았다. |
| 오 박사 | 관제실 수석 엔지니어. 기상청 수치예보 연구원 출신. "공식이 없으면 한 걸음씩 가면 돼." |
| 민재 팀장 | 운항 팀장. 현장의 문제를 들고 관제실로 뛰어 들어온다. |
새 교시·새 강의 소식 받기
이 강의에 새 교시가 더해지거나 이어지는 강의가 열리면 이메일로 알려 드려요.
R
ReflexKR
눌러 보며 배우는 파이썬과 Reflex. 모든 예제는 Reflex 0.10.0에서 직접 실행해 확인했습니다.
ReflexKR은 배너 광고 없이 무료로 운영돼요. 도움이 되셨다면 커피 한 잔으로 응원해 주세요.
© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
질문과 답변
이 교시에서 궁금한 점을 남겨 주세요. 모든 언어 페이지의 질문이 함께 모입니다.