06. 여섯 번째 수업: 파이썬 SymPy 치트키! 1초 만에 미분 머신 돌리기
당신이 만약 복잡한 다항함수 $f(x) = x^4 - 3x^3 + 5x^2 - 7$ 같은 기괴한 물리 역학 포물선의 “순간 스피드 도함수 마스터 지팡이” 를 얻기 원한다고 합시다. 이걸 종이 위에 극한 리미트 믹서기 공식 $\lim_{h \to 0} \frac{f(x+h)…}{h}$ 에 집어넣어 $(x+h)^4$ 을 죄다 $A+B$ 네제곱 전개 연산으로 손으로 찢어서 풀고 있다면, 연필심이 몇다스가 부러질 테고 뇌는 터져 버릴 것입니다.
파이썬에는 이런 기하학적 다항식이나 수식을 계산기처럼 숫자가 아닌, 알파벳 텍스트 $x$ 기호 껍데기 구조 모양 그대로 온전히 상속받아서 지지고 볶고 칼질 미분까지 대신 쳐주는 우주 최강의 기호 수학 해킹 모듈, SymPy(심파이) 가 마운트 되어 있습니다.
1. sympy.diff() : 미분 칼날 파이프라인 매크로
우리는 SymPy 모듈의 수식 라이브러리를 임포트(Import) 한 후, 던져 넣고 싶은 곡선 함수 스크립트를 작성하여 오직 diff(함수, 기준 변수) 이 짧은 명령어 단 한 줄만 클릭 런타임으로 입력하면 됩니다.
그러면 CPU는 $0.01$초 만에 복잡하고 더러운 Limit 에러를 다 우회 계산하여, 깔끔하게 정돈된 도함수 $f’(x)$ 결과물 수식식을 콘솔에 텍스트 레이아웃으로 프린트해 냅니다!
코드를 파싱 해봅시다. 우주를 지배하는 치트키 콘솔입니다!
# [Python Code] 파이썬 SymPy: 다항함수의 도함수 공장 자동화 렌더링
import sympy as sp
# 1. 텍스트 심볼 선언! "나는 x 라는 문자를 단순 텍스트가 아닌 수학 미지수 스칼라 뼈대로 인식하겠다!"
x = sp.Symbol('x')
# 2. 아주 복잡하고 더러운 고차원 오리지널 곡선 함수 f(x) 세팅 (롤러코스터 레일의 굴곡 맵 데이터)
# f(x) = x^4 - 3x^3 + 5x^2 - 7x + 10
f_x = x**4 - 3*x**3 + 5*x**2 - 7*x + 10
print("=== [원본 맵 데이터] 오리지널 함수 f(x) ===")
# pprint() 함수는 수식을 웹이나 수학책 포맷처럼 예쁘게 ^ 윗첨자를 살려 세로로 렌더링해줌
sp.pprint(f_x)
print("\n")
# =======================================================
# 3. 미분 치트 발동! (원본 맵 함수를 x 에 대해 미분 믹서기 칼질 처리!)
# 도함수 자판기 f'(x) 생성기 가동!
f_prime_x = sp.diff(f_x, x)
print("=== [해킹 성공] 미분되어 탄생한 도함수 자판기 f'(x) ===")
sp.pprint(f_prime_x)
# 4. 자판기 전원 on! "야 컴퓨터, 그럼 내가 x=2 위치를 달릴 때 내 순간 스피드 도출은 얼마냐?"
# .subs(x, 2) 뜻: x 라는 알파벳 구멍 슬롯 자리에 숫자 2 를 다이렉트로 투입 교체(Substitute) 하여 계산!
speed_at_2 = f_prime_x.subs(x, 2)
print("-" * 50)
print(f"★ [물리엔진 시뮬스캔] x=2 지점에서의 찰나의 순간 차 속도(미분계수 접선기울기): {speed_at_2} ★")
2. 콘솔 렌더링 출력 대기! 오토 미분 스캐너
=== [원본 맵 데이터] 오리지널 함수 f(x) ===
4 3 2
x - 3⋅x + 5⋅x - 7⋅x + 10
=== [해킹 성공] 미분되어 탄생한 도함수 자판기 f'(x) ===
3 2
4⋅x - 9⋅x + 10⋅x - 7
--------------------------------------------------
★ [물리엔진 시뮬스캔] x=2 지점에서의 찰나의 순간 차 속도(미분계수 접선기울기): 9 ★
경이롭지 않습니까?
pprint(f_prime_x)가 토해낸 결과를 보면, 원래 $4$제곱이던 오리지널 우주가, 미분 칼날을 쳐맞고 차수 레벨이 $\mathbf{-1}$ 다운그레이드 너프를 맞으며 $4x^3 - 9x^2 + 10x - 7$ 이라는 완벽한 다항식 도함수로 재탄생했습니다.- 뉴턴의 다항함수 공식 거듭제곱 치트 공식: “$f(x) = x^n$ 을 미분하면? 머리 위에 떠 있던 무거운 차수 모자 $n$ 을 바닥 앞으로 팍 곱하기로 떨구고, 자신은 머리 카운트를 $-1$ 깎는다! $\to \mathbf{n \cdot x^{n-1}}$” 이 인류 최고의 매크로 치트 마법이 Python SymPy 엔진 안에는 완전 자동화 시스템으로 박혀있다는 뜻입니다.
파이썬만 있다면 인간은 원론적인 리미트 노가다 증명 렌더링 연산에 CPU(두뇌) 과부하를 걸 필요가 전혀 없습니다. 우리는 그저 미분이라는 “순간 스피드 도출 툴” 을 이용해, 이 맵 지형의 절벽이 어느 시점에 가장 평평한 꼭대기 $\mathbf{Zero}$ 고도 속도로 평형을 맞추며 상승과 추락을 전환(극대, 극소 포인트 탐지) 하는지만 기획하면 될 일입니다!
과제로 이 도함수가 $\mathbf{0}$ 이 되는 지점 (순간 속력이 제로가 되는 커브의 꼭대기, 정점!) 을 어떻게 탐지하여 게임의 최고 랭크를 스캔할 수 있는지 숙고하며 미분 1부의 튜토리얼 과정을 마치겠습니다. 곧 이어질 미분 2부 적분 폭격에서 뵙겠습니다. 수고하셨습니다.