Numpilot
연재 · 손안의 수치해석

말로 설명하면, 폰이 풀어낸다

수치해석을 휴대폰에서 하겠다는 무모한 결정, 그리고 그것을 가능하게 만들기 위해 우리가 설계해야 했던 언어에 대한 기록.

핵심 요약 개발 중

수치해석은 원래 큰 화면이 필요한 작업이다. 그런데 지금의 기술은 한 문장으로 지시하고, 그 아래에서 복잡한 연산이 돌고, 다시 한눈에 읽히는 형태로 보고되는 방향으로 가고 있다.

번역, 검색, 코드 작성이 이미 그 길을 지났다. 사용자가 다루는 표면은 문장 한 줄로 얇아졌지만, 그 아래의 연산은 오히려 더 무거워졌다. Numpilot은 이 구조를 수치해석에 적용한다.

Step 01 · 말한다

질문은 한 문장으로

알루미늄 팬에 페놀수지 손잡이를 달면 손잡이가 뜨거워질까?

CAD 파일도, 격자 설정 화면도, 물성 테이블도 먼저 열지 않는다. 엔지니어가 동료에게 묻는 방식 그대로 쓴다.

Step 02 · 풀어낸다

복잡함은 아래로 내린다

  • 자연어 → DSL 번역
  • 형상·물성·경계조건 확정
  • 격자 생성, 지배방정식 이산화
  • 반복 계산과 수렴 판정
  • 결과 검증

이 단계는 줄어들지 않는다. 사용자 눈에 보이지 않게 옮겨질 뿐이다. 어디서 계산할지, 무엇을 포기할지가 이 연재의 중심 주제다.

Step 03 · 읽는다

답은 판단할 수 있는 크기로

  • 손잡이가 위험해지는가
  • 언제부터 그렇게 되는가
  • 어디를 바꾸면 달라지는가

수만 개 격자점의 온도장을 다 보여주는 것이 목적이 아니다. 질문에 대응하는 답만 남긴다.

얇아지는 것 — 사람이 감당하는 폭

  • 입력: 설정 화면 수십 개 → 문장 한 줄
  • 출력: 전체 결과장 → 판단에 필요한 몇 가지
  • 장비: 워크스테이션과 큰 화면 → 손안의 기기

얇아지지 않는 것 — 계산의 실체

  • 지배방정식과 경계조건
  • 격자와 반복 계산
  • 답이 맞다는 것을 확인하는 절차

그래서 이 연재는 계산을 줄이는 이야기가 아니다. 계산은 그대로 두고, 사람이 물리를 기술하는 언어를 새로 설계하는 이야기다. 문제 정의(1부)에서 DSL 설계(2부), 해석의 기초(3부), AI로의 확장(4부)을 지나 제품(5부)까지, 만들면서 겪은 판단을 순서대로 기록한다.

발행된 글 30편
01
1부 문제
해석 한 번 돌리는 데 왜 하루가 걸릴까

만들어보지 않고 아는 법 프라이팬을 새로 설계한다고 하자. 조건은 하나다. 손잡이가 뜨거워지면 안 된다. 가장 확실한 방법은 만들어서 구워보는 것이다. 그런데 손잡이를 1밀리미터 두껍게 하면 어떻게…

2026-07-24 · 8분
02
1부 문제
폰으로 해석한다는 무모한 생각

계산기의 계보 공학 계산이 어디서 이루어졌는지를 따라가 보면, 기계는 계속 작아졌다. 처음에는 건물만 한 컴퓨터였다. 계산을 하려면 그 방에 찾아가야 했다. 다음은 워크스테이션이었다. 연구실 한구석…

2026-07-25 · 9분
03
1부 문제
질문하는 사람과 계산하는 사람 사이의 거리

분업은 왜 생겼나 처음부터 해석이 별도의 직무였던 것은 아니다. 계산이 손으로 이루어지던 시절, 설계자와 계산자는 대체로 같은 사람이었다. 구조물을 그린 사람이 하중을 계산했다. 계산은 설계의 일부…

2026-07-26 · 8분
04
1부 문제
계산은 어디서 일어나야 하는가

서버로 보내면 되지 않나 폰의 성능이 부족하다는 이야기를 하면 대부분 같은 해결책을 떠올린다. "계산은 서버에서 하고, 폰은 결과만 받으면 되잖아." 맞는 말이다. 실제로 대부분의 모바일 서비스가 …

2026-07-27 · 8분
05
1부 문제
처음 만든 것, 그리고 왜 실패했나

가장 자연스러운 첫 시도 방향이 정해지고 나서 처음 만든 것은 화면을 옮긴 앱이었다. 기존 해석 프로그램이 무엇을 입력받는지는 이미 알고 있었다. 형상, 재료, 경계조건, 계산 설정. 그러니 그것들…

2026-07-28 · 9분
06
2부 언어의 문제 — DSL
사람은 물리를 어떻게 말하는가

2부를 시작하며 1부에서 우리는 세 번 실패했다. 단계별 입력은 궁금증의 수명을 넘겼고, 문장을 그대로 받으니 예상과 다른 것들이 들어왔고, 정돈된 문장에도 상식이 잔뜩 생략되어 있었다. 그래서 2…

2026-07-29 · 9분
07
2부 언어의 문제 — DSL
\"알루미늄 팬\" 한마디에 생략된 것들

한 문장을 끝까지 분해하기 앞 편에서 사람 말에는 상식이 생략된다고 했다. 이 편에서는 그 규모를 실제로 세어본다. 문장 하나를 끝까지 분해해서, 계산기가 요구하는 값이 몇 개인지 확인해 보자. 대…

2026-07-30 · 9분
08
2부 언어의 문제 — DSL
DSL이란 무엇인가 — 좁은 언어의 힘

무엇이든 할 수 있는 언어의 문제 앞 편에서 결론이 이렇게 났다. 우리에게 필요한 것은 의도적으로 좁은 언어다. 그런데 좁다는 것은 보통 단점으로 여겨진다. 프로그래밍 언어를 고를 때 사람들은 "이…

2026-07-31 · 9분
09
2부 언어의 문제 — DSL
설계 ①: 무엇을 표현하고 무엇을 버릴까

기준을 먼저 정해야 했다 무엇을 뺄지 정하려면 기준이 필요하다. 우리가 세운 기준은 하나였다. "기본값을 합리적으로 정할 수 있는가." 이 기준이 나온 배경은 7편에서 세어본 그 숫자다. 사용자가 …

2026-08-01 · 10분
10
2부 언어의 문제 — DSL
설계 ②: 애매함을 어떻게 다룰까

정할 수 없는 것을 정해야 할 때 좁은 언어를 만들어도 입구에 들어오는 말은 여전히 애매하다. "플라스틱 손잡이" 플라스틱은 수백 가지다. 열전도율이 종류마다 다르고, 그 차이가 결과를 바꾼다. 그…

2026-08-02 · 9분
11
2부 언어의 문제 — DSL
설계 ③: 단위와 좌표계라는 함정

가장 흔하고 가장 조용한 실패 앞 편에서 애매함을 다뤘다. 이 편의 주제는 애매함이 아니라 오해다. 둘은 다르다. 애매함은 값이 정해지지 않은 상태다. 오해는 양쪽 다 명확한데 서로 다른 상태다. …

2026-08-03 · 9분
12
2부 언어의 문제 — DSL
자연어에서 DSL로 — 번역층의 구조

한 문장이 지나는 길 사용자가 문장을 쓴다. 그 문장이 계산 결과가 되기까지 어떤 경로를 지나는가. 이 편에서는 그 경로를 단계별로 따라간다. 각 단계가 무엇을 하고, 무엇이 검사되고, 어디서 실패…

2026-08-04 · 10분
13
2부 언어의 문제 — DSL
vibe coding이 바꾼 것, 그리고 바꾸지 못한 것

자연어로 지시한다는 방식 최근 몇 년 사이 프로그래밍 방식에 변화가 있었다. 코드를 직접 쓰는 대신 하고 싶은 것을 말로 설명하면 코드가 만들어지는 방식이다. 흔히 vibe coding이라 불린다.…

2026-08-05 · 9분
14
3부 계산의 기초
격자를 자른다는 것 (FDM)

3부를 시작하며 2부에서 계속 "복잡함을 아래로 내린다"고 말했다. 3부는 그 아래로 내려가는 이야기다. 내려가 보면 무엇이 있나. 격자를 자르고, 방정식을 대수적인 식으로 바꾸고, 수없이 반복 계…

2026-08-06 · 9분
15
3부 계산의 기초
열전달, 첫 번째 해석

문제를 끝까지 따라가기 이 편에서는 앞에서 계속 예로 든 프라이팬 문제를 처음부터 끝까지 따라간다. 개념 설명이 아니라 실제 과정이다. 문제는 이것이다. 알루미늄 팬에 플라스틱 손잡이. 바닥이 20…

2026-08-07 · 10분
16
3부 계산의 기초
경계조건이 결과를 바꾼다

가장 과소평가되는 부분 수치해석을 배울 때 사람들은 대개 방정식과 격자에 관심을 둔다. 어떤 기법을 쓰는지, 얼마나 촘촘히 나누는지. 그런데 실무에서 결과를 가장 많이 바꾸는 것은 그게 아니다. 경…

2026-08-08 · 9분
17
3부 계산의 기초
형상이 복잡해지면 (FEM)

FDM이 막히는 지점 14편의 방법은 격자를 규칙적인 사각형으로 자르는 것이었다. 판이나 원통 같은 단순한 형상에는 잘 맞는다. 그런데 형상이 이렇게 생겼다면 어떨까. 곡면이 있고, 구멍이 뚫려 있…

2026-08-09 · 9분
18
3부 계산의 기초
수렴한다는 것은 무슨 뜻인가

두 가지 다른 질문 15편에서 반복 계산으로 답을 찾았다. "온도가 거의 안 변하면 멈춘다"고 했다. 여기서 헷갈리기 쉬운 것이 있다. 계산을 멈춰도 되는지와, 그 답을 믿어도 되는지는 다른 질문이…

2026-08-10 · 9분
19
3부 계산의 기초
폰의 한계와 타협 — 무엇을 포기했나

타협의 목록 지금까지 여러 편에 걸쳐 "이건 포기했다"는 이야기가 흩어져 나왔다. 이 편에서 한자리에 모은다. 왜 이런 정리가 필요한가. 자기 도구의 한계를 아는 것이 그 도구를 쓸 수 있게 만들기…

2026-08-11 · 9분
20
3부 계산의 기초
검증: 답이 맞다는 걸 어떻게 아는가

정답이 없는 문제의 채점 3부의 마지막 편이다. 그리고 이 연재에서 가장 중요한 질문을 다룬다. 13편에서 코드와 수치해석의 차이를 이야기했다. 코드는 실행하면 확인되지만 수치해석은 틀린 결과와 맞…

2026-08-12 · 10분
21
4부 AI로 넓히기
왜 AI인가 — 반복이 만드는 기회

4부를 시작하며 3부에서 전통적인 수치 계산을 다뤘다. 격자를 자르고 반복해서 풀고 검증하는 과정. 4부는 거기에 AI를 결합하는 이야기다. 그런데 순서를 분명히 해두고 싶다. AI가 앞에 오지 않…

2026-08-13 · 9분
22
4부 AI로 넓히기
PINN: 물리 법칙을 손실함수에 넣기

데이터만으로 배우면 생기는 문제 기계학습의 기본 방식은 이렇다. 예시를 많이 보여주고, 그 예시들에 잘 맞는 규칙을 찾게 한다. 물리 문제에 적용하면 이렇게 된다. 조건, 답 짝을 수만 개 보여주고…

2026-08-14 · 9분
23
4부 AI로 넓히기
왜 하필 푸리에인가

200년 전의 발상 19세기 초, 푸리에는 열이 퍼지는 현상을 연구하다 하나의 주장을 내놓았다. 아무리 복잡한 모양도, 단순한 파동 여러 개를 합친 것으로 표현할 수 있다. 당시 수학자들은 이 주장…

2026-08-15 · 9분
24
4부 AI로 넓히기
FNO: 답이 아니라 연산자를 배운다

무엇을 배우는가의 차이 이 편의 제목에 있는 "연산자"라는 말부터 풀어야 한다. 일반적인 기계학습은 숫자에서 숫자로 가는 관계를 배운다. 사진을 넣으면 "고양이"라는 답이 나오고, 조건 몇 개를 넣…

2026-08-16 · 10분
25
4부 AI로 넓히기
데이터가 자산이 되는 구조

순환을 만든다는 것 24편 마지막에서 순서를 정리했다. 전통 계산으로 서비스를 만들고, 사용 데이터에서 조건 분포를 파악하고, 그 범위에서 학습해 탐색 단계에 투입한다. 이 순서에는 구조가 하나 들…

2026-08-17 · 9분
26
4부 AI로 넓히기
틀린 답을 걸러내는 설계 — 신뢰의 문제

4부에서 가장 중요한 편 21편에서 이렇게 적었다. "빠른 답을 얻는 방법보다, 그 답을 믿을 수 있게 만드는 방법이 이 프로젝트의 성패를 가른다." 이 편이 그 이야기다. 24편에서 FNO의 위험…

2026-08-18 · 10분
27
4부 AI로 넓히기
단계적 확장 로드맵: 검증된 솔버에서 AI 해석으로

순서가 곧 설계다 4부의 마지막 편이다. 여기서는 새로운 기술을 소개하지 않고, 지금까지의 것들을 어떤 순서로 실제로 만들 것인지를 정리한다. 순서를 정하는 것은 부수적인 일처럼 보이지만 그렇지 않…

2026-08-19 · 9분
28
5부 제품과 앞으로
Numpilot 해부 — Solver Lab / Learn / Models / Projects

5부를 시작하며 지금까지 27편에 걸쳐 설계와 기술을 이야기했다. 5부에서는 그것이 실제 제품에서 어떤 모습인지 본다. 앱은 네 부분으로 되어 있다. Solver Lab, Learn, Models,…

2026-08-20 · 9분
29
5부 제품과 앞으로
교육이라는 또 하나의 축

왜 계산 도구가 교육으로 가나 앞 편 마지막에서 "한계를 가르치는 것이 기능의 일부가 되었다"고 했다. 이 편에서 그 이야기를 조금 더 한다. 처음에는 부수적인 것으로 보였는데, 진행하면서 이 축이…

2026-08-21 · 9분
30
5부 제품과 앞으로
개발자가 직접 해석하는 시대

30편을 지나 첫 편에서 프라이팬 손잡이 이야기로 시작했다. 만들어보지 않고 아는 방법에 대해. 그리고 서른 편을 지나며 여러 곳을 돌았다. 격자를 자르는 법, 언어를 설계하는 법, 애매함을 다루는…

2026-08-22 · 9분