02. 두 번째 수업: 속도가 휘어지는 총알, 무리 함수 (Irrational Functions)
자판기 중에는 아주 가학적인 엔진, 변수 $x$ 를 그 무시무시한 루트(Square Root, $\sqrt{\ }$) 기둥 창살 안에 통째로 구속해버린 감옥형 함수가 존재합니다. 이것을 우리는 무리 함수(Irrational Functions) 라고 부릅니다.
1. 허수(에러) 바이러스 방어선
가장 심플한 무리 함수의 구조는 이렇습니다. \(y = \sqrt{x}\)
루트 창살에 갇혔기 때문에, 이 자판기는 태어날 때부터 치명적인 설계 결함을 안고 시작합니다. 바로 음수(Minus) 를 절대 쑤셔 넣을 수 없다는 제약 입니다. 만약 누군가 숫자를 넣는 구멍 $X$ 에 과감하게 $-4$ 를 갈아 넣으면 어떻게 될까요? 결과는 $y = \sqrt{-4}$ 가 되면서, 루트 속살 파내기 에러인 ‘허수(Imaginary Number) $i$’ 라는 판타지 데이터가 결괏값 빈 픽셀 모니터 창을 치며 터져버립니다! 데카르트 실수 평면 그래프상에는 허수 축이 없기 때문에, 그래픽 카드 드라이버 에러가 나면서 점이 랜더링되지 않습니다.
이런 대참사를 막기 위해 무리 함수는 자판기 전원에 강제 리미터 (Domain Restriction) 시동 키를 하나 달아둡니다.
“이 함수의 입력 $X$ 는 무조건 0부터 양수 1, 2, 3 방향 진입로로만 켤 수 있다. 왼쪽(- 영역)은 쳐다보지도 마라!”
그래서 무리 함수의 궤적 그래프를 보면, $Y$축 왼쪽 영역에는 머리카락 한 줌의 선조차 그려지지 않는 유령 도시가 되고 맙니다. 무리 함수는 오로지 오른쪽 구역에서만 기생하는 ‘절반짜리’ 외팔이 곡선입니다.
2. 매트릭스 불릿 타임: 가속도의 한계 (반쪽 포물선)
$y = \sqrt{x}$ 기계를 켜고 우측으로 달려봅시다.
- $x = 0$ 이면 $\rightarrow y = 0$
- $x = 1$ 이면 $\rightarrow y = 1$
- $x = 4$ 이면 $\rightarrow y = 2$
- $x = 100$ 이면 $\rightarrow y = 10$
데이터를 보면 이상한 점이 느껴지나요? 1차 함수나 2차 함수는 엑셀을 밟으면 밟을수록 가속도($Y$) 성장이 미친 듯이 치솟았습니다. 하지만 무리 함수 녀석은 처음 출발할 때는 반짝 100미터 달리기 선수처럼 급상승하지만, 달리면 달릴수록 루트 체인(\sqrt{}) 이 잡아 끄는 무지막지한 무게 저항력 때문에, $X$축을 따라 수만 미터를 우측으로 뛰어가도 엑셀 가속도 밧데리는 방전되어 $Y$ 높이는 겨우 개미 뒷다리만큼씩 처절하게 느려지며 오릅니다.
방금 전 1부에서 배웠던 2차 함수 포물선 (위로 치솟던 로켓 궤적 $y = x^2$) 을 머릿속으로 떠올려보세요. 그 로켓을 땅으로 끌어 내려서 우측 $x$ 축 방향으로 옆으로 확 눕혀버린 다음, 위아래 반쪽 중 절반만 칼로 잘라 남긴 형체! 이것이 무리 함수의 정체입니다. “포물선의 역함수(누워있는 쌍둥이 절반) 버전” 인 것이죠!
게임 코드를 짤 때 시간에 지연을 주어 아주 서서히 저항을 주며 가속도를 브레이크 시키는 매트릭스 슬로 모션 카메라 연출(Easing Out 필터)에 이 지독하게 느려지는 루트 함수 모델을 적극적으로 사용하게 됩니다. 이 지독한 ‘느림’ 덕에, 이제 다음 장에서 만날 가장 강력한 폭주 함수 녀석의 파워가 더욱더 무시무시하게 느껴질 겁니다.