03. 세 번째 수업: $2$차 함수, 포물선으로 떨어지는 폭탄 궤적 (Quadratic)

정직하고 등속도로 영원히 상승하는 1차 함수 로켓 엔진은 우주에서는 맞을지 몰라도 지구에서는 불가능합니다. 지구에는 모든 물체를 바닥으로 끌어당기는 ‘중력’이 존재하니까요. 로켓이든 포탄이든 하늘 위로 빵 쏘아 올리면, 처음엔 미친 듯이 올라가다가 점점 힘이 빠지면서 정점을 찍고 다시 고개를 숙여 땅으로 곤두박질치는 U자형 타원 궤적을 그리게 됩니다.

이 아찔하고 매끄러운 중력의 궤적 곡선을 지배하는 수식, 그것이 바로 대왕 계급장 기호 제곱($^2$)을 단 “$2$차 함수 (Quadratic Function)” 입니다.


1. 머리통에 폭탄을 달고 있는 함수: $x^2$

2차 함수의 심장부에는 언제나 변수 $x$ 를 두 번 곱하는 무지막지한 증폭기 엔진, 제곱($^2$) 이 장착되어 있습니다.

\[f(x) = ax^2 + bx + c\]
  • 이 함수 기계에 숫자 $1$을 넣으면? $1^2 = 1$ 로 얌전하게 나옵니다.
  • $2$를 넣으면? $2^2 = 4$ 로 훌쩍 뜁니다.
  • $3$을 넣으면? $3^2 = \mathbf{9}$
  • $10$을 넣으면? $10^2 = \mathbf{100}$!

1차 함수처럼 정직하게 단 두 칸씩만 올라가지 않습니다. 입력값이 조금만 커져도, 결과는 제곱의 제곱으로 기하급수적 눈덩이처럼 불어나며 미친 듯이 수직 상승(폭발)해 버립니다.

2. 대사건: 마이너스(-) 입력도 양수로 구원받다

2차 함수가 만들어내는 진정한 마법의 궤적 곡선은 “마이너스 음수” 를 갈아 넣었을 때 벌어집니다.

기계에 $-3$ 을 집어넣으면 어떻게 될까요? 제곱 엔진을 돌리면 $(-3) \times (-3) = \mathbf{+9}$ 가 됩니다. $+3$ 을 넣었을 때도 파워점수는 $+9$ 였는데, 음수 $-3$을 넣었을 때도 똑같은 양수 파워 점수 $+9$ 로 튕겨 오릅니다.

이 점들을 좌표계에 찍어보면, 가운데 $Y$축 기둥을 중심으로 왼쪽과 오른쪽이 완벽한 데칼코마니 복사판처럼 생긴 “대칭형 U자 그릇 모양 (포물선, Parabola)” 이 눈앞에 펼쳐집니다!

3. 폭탄의 뿔 (꼭짓점) 찾기, 완전제곱식

2차 함수를 프로그래밍이나 물리 엔진에 적용할 때 가장 중요한 것은 결국 이거 하나입니다. “이 포물선 탄도학 무기가, 정확히 어느 하늘 제일 높은 위치(꼭짓점 좌표)에서 정점을 찍고 낙하를 시작하는가?”

이 가장 중요한 스나이퍼 타깃 포인트(꼭짓점) 좌표를 해킹해 내기 위해서, 수학자들은 복잡하게 퍼져있는 포탄 잔해 코드식($ax^2 + bx + c$) 을 억지로 억지로 우겨 넣어서 네모난 반듯한 압축 그릇 형태로 마사지하는 기법을 고안해 냈습니다. 이 압축 마사지 해킹 기술을 바로 ‘완전제곱식으로 묶기’ 라고 합니다.

\[\text{변환 후: } y = a(x - \mathbf{p})^2 + \mathbf{q}\]

코드를 위처럼 괄호로 예쁘게 리팩토링하는 데 성공했다면 축하합니다. 괄호 안의 반대 부호 $p$ 와 꼬리에 붙은 $q$ 숫자가, 바로 이 함수 로켓이 찍고 내려오는 최고점(혹은 최저점 바닥)의 좌표 타깃점 $(p, q)$ 입니다!

이처럼 세상의 데이터를 함수 덩어리로 묶으면 곡선의 최 정점과 최저점 타깃을 예측해 낼 수 있는 위대한 물리 엔진 치트키가 탄생합니다. 다음 장에서는 함수의 방향을 강제로 ‘역재생’ 해버리는 무시무시한 역함수 백트래킹(Backtracking) 기법을 살펴봅시다.

서브목차