01. 첫 번째 수업: 닿을 수 없는 절대 장벽, 유리 함수 (Rational Functions)
방 안의 공기청정기를 하나 틀면 미세먼지가 다 없어지는 데 $1$시간이 걸린다고 칩시다. 만약 똑같은 성능의 공기청정기를 $2$대 틀면? 절반($0.5$시간)만 걸리겠죠. $10$대 틀면? $\frac{1}{10}$시간 (단 $6$분!) 만에 순삭됩니다. 입력 원인인 기계 대수($x$) 가 커질수록, 결과 처리 시간($y$) 은 그만큼 미친 듯이 팍팍 쪼개져 나눗셈으로 줄어듭니다.
이것이 바로 가장 흔한 반비례 로직이자, 분모 바닥 구멍에 주인공 인물 변수 $x$ 가 쑤셔 박힌 기형적인 자판기, 유리 함수(Rational Functions) 의 정체입니다.
1. 분자가 아니라 분모($X$)에 엔진이 달렸다
가장 쌩얼을 생생하게 노출한 유리 함수 보스의 뼈대 수식 구조는 이렇습니다. \(y = \frac{1}{x}\)
자, 숫자 버튼을 한 번 눌러서 시뮬레이터를 굴려 볼까요?
- $X = 1$ 대입 $\rightarrow$ $\frac{1}{1}$ = $1$ 배출
- $X = 100$ 대입 $\rightarrow$ $\frac{1}{100}$ = $0.01$ 배출 (입력이 커지자마자 결과가 찰싹 소수점 바닥에 달라붙어 버렸습니다!)
여기까지는 그럴싸합니다. 그런데 이 반비례 자판기는 진짜 역대급 엽기적이고 끔찍한 에러 버그를 몸뚱어리 한가운데에 품고 있습니다. 수학계의 절대 금기, 판도라의 상자가 있죠.
2. 절대로 나누면 안 돼! ZeroDivideError 폭발 장벽
“그러면… 만약 이 $y = \frac{1}{x}$ 자판기의 입력 동전 구멍 $X$ 자리에 숫자 $0 (\text{Zero})$ 을 집어넣으면 어떻게 될까?”
컴퓨터 프로그래머라면 소스라치게 놀라 당장 플러그를 뽑을 소리입니다.
가령 케이크 1판을 $0$명에게 똑같이 나누어 준다는 개소리가 수학적으로 불가능하듯, 수학에서 분수의 분모(바닥 숫자) 자리에 $0$이 들어가는 순간 그 계산은 무한대($\infty$) 로 값이 에러 폭주해 버리며(계산 불능) 서버가 폭파(Crash) 되어 버립니다! 파이썬 에러 로그창에 뜨는 핏빛 빨간색 ZeroDivisionError 가 바로 이것입니다.
3. 영원히 닿지 못하는 방어막 레이저 (점근선 Asymptotes)
이 폭파 에러를 막기 위해 유리 함수 곡선 그래프는 미친듯한 생존 회피 본능을 발동합니다. $X$값이 조금씩 작아지면서 죽음의 함정 에러 존 (즉, $X = \mathbf{0}$ 인 시한폭탄 $Y$기둥 중심선 축) 쪽으로 조금씩 다가온다고 상상합시다.
- $x = 0.1 \rightarrow y = \frac{1}{0.1} = 10$
- $x = 0.001 \rightarrow y = 1000$
- $x = 0.000001 \rightarrow y = \mathbf{1000000}$ (백만)
허걱! 죽음의 중앙 0 점($X$축 가운데) 에 물리적으로 다가가면 다가갈수록, 이 곡선은 닿아서 폭파당하기 싫은 회피 본능 때문에 발작을 일으키며 수직 위쪽 하늘 $Y$축 끝(무한대 방향)으로 폭주 상승 탈선을 해버립니다! 절대, 우주가 천 번 멸망해도 중앙 $X=0$ 장벽(Y축 선 자체) 에 닿지 않습니다!
이렇게 유리 함수가 영원히 가까워지려고 따라만 다닐 뿐, 평생 영원토록 찔러 도달하지 못하고 우주공간 너머로 미끄러져 스쳐 지나가게 만드는 가상의 보이지 않는 투명 차단막 방어벽. 수학자들은 이것을 “점근선 (점점 가까워지는 선이라는 뜻, Asymptote)” 이라고 부릅니다.
가로 점근선과 세로 점근선이라는 십자가 형태의 투명 벽 2개에 가로막혀서 튕겨 솟아나가는 매끄럽고 신비로운 쌍곡선 두 가닥, 이것이 프로그래밍 에러를 회피하기 위해 $X$축을 찢어버린 유리 함수의 우아한 생존 본능 궤적 디자인입니다.