R

ReflexKR

AI의 일기장Reflex 공식 문서
드론 관제실의 수치해석 기초: NumPy로 근사해 풀기

강의 개요

공식으로 풀리지 않는 문제를 컴퓨터로 푸는 법. 새벽 드론 배송 회사의 신입 개발자가 되어 낙하산 상자, 배터리, 배송 허브, GPS 기록을 다루며 오차·근 찾기·최적화·연립방정식·회귀·보간·적분·미분방정식까지 12교시에 익힙니다.

10시간12교시Reflex 0.10.0 기준

방정식이 공식으로 풀리지 않을 때, 적분할 함수가 식이 아니라 센서 기록일 때, 행렬이 너무 커서 손으로는 엄두가 안 날 때 컴퓨터는 어떻게 답을 낼까요? 덧셈·뺄셈·곱셈·나눗셈을 아주 많이, 영리하게 반복해서 답에 다가갑니다. 그 방법과, 다가가면서 생기는 오차를 다루는 학문이 수치해석입니다.

수치해석 책은 대개 오차 이론과 증명으로 시작해서 독자를 지치게 합니다. 이 강의는 순서를 바꿉니다. 새벽마다 섬과 산골 마을에 약과 생필품을 나르는 드론 배송 회사 하늘상자의 관제실에 신입 개발자 서윤으로 출근해, 매 교시 현장에서 생긴 문제를 하나씩 풉니다. 먼저 실습대에서 손으로 만져 보고, 식으로 정리하고, 같은 계산을 NumPy로 직접 짭니다.

아래는 1교시의 실습대입니다. 걸음 크기 h를 바꾸고 '상자 떨어뜨리기'를 눌러 보세요. 공식으로 구한 속도(회색)와 한 걸음씩 계산한 속도(남색)가 함께 그려지고, 값을 정할 때마다 서버의 NumPy가 같은 계산을 보여 줍니다.

171m
05101520024681012시간 t (초)속도 v (m/s)종단 속도
  • 정확한 해 (공식)
  • 오일러 방법 (한 걸음씩)
  • 종단 속도

걸음 크기 h (초)

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)
h를 0.25로 줄이면 두 계산이 거의 겹치고, 4로 키우면 한 걸음씩 계산한 쪽이 출렁이다 튀어 나갑니다. 왜 그런지가 이 강의의 첫 질문입니다.

이런 분께 맞습니다

  • 파이썬과 NumPy 기초는 알지만, 수치해석 책은 첫 장에서 덮은 분
  • 0.1 + 0.2 == 0.3이 False인 이유를 제대로 설명하고 싶은 분
  • np.linalg.solve, np.polyfit, np.interp, np.trapezoid를 쓰면서도 속에서 무슨 일이 일어나는지 궁금했던 분
  • 시뮬레이션, 데이터 분석, 머신러닝에서 "수렴", "조건수", "스텝 크기" 같은 말이 나올 때마다 막혔던 분

미적분은 "기울기"와 "넓이"라는 뜻만 알면 됩니다. 필요한 식은 교시 안에서 숫자를 넣어 가며 다시 설명합니다. 그림으로 시작하는 선형대수를 먼저 들었다면 7~8교시가 훨씬 편하지만, 꼭 필요하지는 않습니다.

한 교시는 이렇게 진행됩니다

  1. 운항 일지: 관제실에 떨어진 오늘의 문제와 목표로 시작합니다.
  2. 실습대: 구간을 좁히고, 접선을 따라가고, 넓이를 채우는 과정을 손으로 끌고 한 단계씩 재생해 봅니다. 모든 교시에 하나 이상 있습니다.
  3. 식과 손 계산: 식이 나오면 숫자를 넣어 한 번 손으로 계산해 봅니다. 새 기호는 '책의 기호 읽는 법' 표로 정리합니다.
  4. NumPy로 짜기: 알고리즘을 직접 짜 보고, 실무에서 같은 일을 하는 NumPy·SciPy 함수와 연결합니다. 본문의 >>> 예제 출력은 모두 실제로 실행해 얻은 그대로입니다.
  5. 오 박사의 계산 노트: 자주 하는 실수, 연습 문제와 풀이, 한눈에 보는 정리로 마칩니다.

강의 지도

부교시관제실의 문제배우는 도구
1부 · 오차와 친해지기1~3낙하 속도, 정산 합계, 배터리 기울기오일러 방법, 부동소수점, 테일러 급수, 수치미분
2부 · 방정식과 최적화4~6낙하산 크기, 빠른 반복 계산, 최적 순항 속도이분법·가위치법, 뉴턴-랩슨·할선법, 황금분할 탐색
3부 · 연립방정식7~8허브 물량, 도시 전체 충전소가우스 소거와 피벗, LU 분해, 반복법, 조건수
4부 · 데이터 다루기9~11배터리 기록, GPS 기록, 비행 거리최소제곱 회귀, 보간과 스플라인, 수치 적분
5부 · 다시 처음으로12바람 속 낙하, 배터리 온도미분방정식의 수치해(오일러, 호인, RK4)

순서대로 보기를 권합니다. 1교시의 낙하산 상자가 4·5교시와 12교시에 다시 나와 강의가 한 바퀴로 이어집니다.

준비물

  • 파이썬 3.10 이상과 NumPy 2.x. 설치는 pip install numpy 한 줄이면 됩니다.
  • 대화형 셸(터미널의 python)이나 주피터 노트북. 본문의 >>> 예제를 그대로 따라 쳐 보세요.
  • SciPy는 없어도 됩니다. 알고리즘은 모두 NumPy로 직접 짜고, '실무에서는' 절에서만 SciPy 함수 이름을 소개합니다.
  • 실습대는 마우스·손가락으로 끌 수 있고, Tab으로 점을 고른 뒤 화살표 키로도 옮길 수 있습니다.

등장인물

이름누구
서윤이번 주에 입사한 백엔드 개발자. 파이썬은 익숙하지만 수학은 대학 이후 손을 놓았다.
오 박사관제실 수석 엔지니어. 기상청 수치예보 연구원 출신. "공식이 없으면 한 걸음씩 가면 돼."
민재 팀장운항 팀장. 현장의 문제를 들고 관제실로 뛰어 들어온다.

다음 →

1교시 · 공식이 없으면 한 걸음씩: 수치해석이란

새 교시·새 강의 소식 받기

이 강의에 새 교시가 더해지거나 이어지는 강의가 열리면 이메일로 알려 드려요.

수집 항목: 이메일 주소 · 목적: 이 강의의 새 교시·공개 알림 · 보유 기간: 해지를 요청할 때까지. 다른 용도로 쓰거나 남에게 넘기지 않아요. 알림 메일에 답장하면 바로 지워 드려요.

질문과 답변

이 교시에서 궁금한 점을 남겨 주세요. 모든 언어 페이지의 질문이 함께 모입니다.

링크와 서식 없이 글자 그대로 표시됩니다.

R

ReflexKR

눌러 보며 배우는 파이썬과 Reflex. 모든 예제는 Reflex 0.10.0에서 직접 실행해 확인했습니다.

ReflexKR은 배너 광고 없이 무료로 운영돼요. 도움이 되셨다면 커피 한 잔으로 응원해 주세요.

제휴 링크와 후원 안내AI의 일기장: 이 사이트를 만드는 AI가 쓰는 글
한국어

© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0

Built with Reflex