05. 다섯 번째 수업: 영원히 깨지지 않는 피타고라스의 삼각 호흡 (Trig Identities)
삼각함수를 파고들다 보면 $\sin$, $\cos$, $\tan$ 끼리 서로가 서로의 몸으로 아바타처럼 막 변신하고 치환되는 기괴한 수식 증명 공식들을 마주치게 됩니다. 어지러워 미칠 노릇이죠! 하지만 파이썬 시뮬레이터나 물리 엔진 로직 퍼포먼스를 $100$배 높이는 리팩토링의 핵심이 바로 이들끼리의 ‘절대 변신 법칙, 삼각 항등식(Trigonometric Identities)’ 입니다.
1. 우주 최강의 주문: $\sin^2\theta + \cos^2\theta = 1$
어떤 개똥 같은 미친 각도 $92849^\circ$ 나 $-18\pi^\circ$ 를 집어넣든 상관없이 절대, 무슨 일이 있어도 박살 나지 않는 삼각함수 물리 엔진의 가장 위대한 핵심 치트키 기본 법칙 1번이 있습니다.
\[\sin^2(\theta) + \cos^2(\theta) = 1\]방금 우리가 1번 단원 단위원(Unit Circle) 챕터에서 그렸던 레이더망 그림을 그대로 떠올려 보십시오!
- 점 $P$ 가 쏘는 원점 직각 삼각형에서 가로축 밑변의 길이가 $\cos\theta$ 였습니다.
- 직각 삼각형에서 세로축 높이의 길이가 $\sin\theta$ 였습니다.
- 그리고 고정 빗변이자 둥근 반지름 레이다 뼈대는 항상 “$1$” 이었습니다.
이걸 수천 년 전 조상인 ‘피타고라스 형님 정리’ 공식에 고스란히 꼬나박아보세요! 피타고라스 논리 $\rightarrow$ $\text{밑변}^2 + \text{높이}^2 = \text{빗변}^2$ $\rightarrow$ 결과 $\rightarrow$ $\mathbf{\cos^2\theta + \sin^2\theta = 1^2 (1)}$ !!!
더 이상 증명이 필요 없는 기하학적 팩트입니다.
당신이 컴퓨터 시뮬레이터 로직 안에서 개복잡한 $(\sin\theta)^2$ 와 $(\cos\theta)^2$ 연산 루틴이 덧셈으로 동시에 돌아가는 코드를 목격했다면? 당장 코드 $10$줄을 전부 딜리트 한 다음 깨끗하게 숫자 상수 1 로 바꿔치기 퉁쳐도 무방하다는 무적의 데이터 최적화 치트키입니다!
2. 형제들의 연금술: $\tan = \frac{\sin}{\cos}$
탄젠트(Tangent, $\tan$) 가 혼자 하늘로 치솟는 기괴한 비율 값이라는 것은 앞장에서 배웠습니다. 그런데 이 녀석의 뱃속 비밀 레시피 내장코드 역추적을 해보면 아주 웃기지도 않습니다.
원래 탄젠트 $\tan$ 의 뜻이 $\mathbf{\frac{\text{높이}}{\text{밑변}}}$ 비율이었습니다. 그런데 원 위에서 $\text{높이} = \sin$, $\text{밑변} = \cos$ 잖아요?
결과적으로 $\tan(\theta) = \frac{\sin(\theta)}{\cos(\theta)}$ 이라는 아름다운 자가 분해 치환식이 성립됩니다!
이 말은 즉, 굳이 탄젠트를 처리하는 무거운 계산 함수 math.tan() 를 쓰지 않더라도 시스템 내에 이미 가지고 놀고 있는 사인과 코사인 결괏값 두 변수만 있으면 나눗셈 배율 1회로 탄젠트값을 즉석에서 제조 추출해 낼 수 있다는 연금술의 법칙입니다.
3. 리팩토링의 끝판왕: 함수 압축기
게임 속 수백만 개의 총알 파동을 계산하는 서버가 버벅대거나, 파이썬 인공지능 수식 레이어에서 미분 적분을 돌리다가 메모리가 터질 것 같나요? 이런 ‘항등식($\sec$, $\csc$, $\cot$, 반각, 배각 공식들)’이라는 치트키 데이터베이스를 이용해, 수식의 연산량을 줄이고 모조리 $\cos$ 이나 $\sin$ 단 하나 혹은 단순 상수 $1$ 이나 분수 기호 하나로 압축 렌더링을 시켜주는 것이 컴공과, 전자공학과 1학년이 밤을 새우는 공학수학의 묘미입니다. 코드를 길게 짤 필요 없습니다. 수학적 진리 항등식 공식 한 줄이 코드 성능을 빛의 속도로 이끕니다.