수능 수학, 코딩의 눈으로 직관 뚫기
[코딩X수학 개념 #8] 함수(Function) : 수학의 $f(x)$ 마법 상자와 코딩의 def, 수능 그래프 해석의 치트키
안녕하세요! 평면 위의 모든 정수 좌표를 샅샅이 스캔하는 이중 반복문의 논리로 수능 준킬러 격자점 문항을 파괴했던 지난 7화 내용, 다들 감탄하셨을 겁니다. 평면 위의 점들을 자유자재로 다룰 수 있게 되었다면, 이제 수능 수학 전체 점수의 70% 이상을 지배하는 절대적인 몸통을 마주할 시간입니다.
그 주인공은 바로 중학교 학창 시절부터 고3 미적분까지 우리를 끈질기게 따라다니는 함수(Function)입니다. 수능 시험지에서 "최고차항의 계수가 1인 삼차함수 $f(x)$가 다음 조건을 만족할 때..."라는 문구를 보면 가슴이 답답해지곤 하죠.
수학 교과서에서는 함수를 두 집합 사이의 '대응 관계'라는 다소 딱딱한 말로 정의하지만, 코딩의 시각을 빌리면 함수는 아주 명쾌한 '재사용 가능한 마법의 계산기 상자'가 됩니다. 수학의 $f(x)$ 기호 뒤에 숨겨진 본질을 코딩의 def 키워드로 완벽하게 해체해 보겠습니다.
1 수학의 $f(x)$ 기호가 코딩의 def 함수로 변신하는 과정
우리가 수학 시간에 마주하는 $y = f(x)$라는 식의 본질은 무엇일까요? 정의역($x$)이라는 재료를 함수라는 마법 상자($f$)에 집어넣으면, 정해진 규칙에 따라 요리되어 치역($y$)이라는 최종 결과물이 튀어나오는 메커니즘입니다.
코딩에서도 이 마법 상자를 똑같이 만듭니다. 파이썬에서는 '정의하다'라는 뜻의 define에서 이름을 딴 def라는 키워드를 사용하여 나만의 함수 상자를 설계합니다.
🧩 수학 교과서 기호와 코딩 구조의 1:1 매칭
- 1. 입력값 (정의역 $x$) : 수학의 독립변수 $x$ ➡️ 코딩 함수의
매개변수(Parameter) - 2. 대응 규칙 (함수 $f$) : 수학의 $f(x) = \dots$ ➡️ 코딩의
def 함수명(x):과 내부 수식 - 3. 출력값 (치역 $y$) : 수학의 종속변수 $y$ ➡️ 코딩 함수의 결과 반환 명령어
return
2 실전 파이썬: 수능 다항함수 $f(x) = x^3 - 3x$ 상자 조립하기
수학Ⅱ 극대·극소 단원에 단골로 등장하는 삼차함수 $f(x) = x^3 - 3x$를 파이썬 코드로 직접 설계하고, 함수에 다양한 값을 대입(대응)시키는 과정을 시각적으로 확인해 보겠습니다.
# [단계 1] def를 사용해 'f'라는 이름의 삼차함수 상자를 정의합니다. def f(x): # 입력된 x를 가지고 y = x^3 - 3x 수식을 계산합니다. y = x**3 - 3*x # 계산된 결괬값 y를 상자 밖으로 뱉어냅니다(return). return y # [단계 2] 수능 시험지에서 하듯 함수에 숫자를 대입해 봅니다. result1 = f(1) # f(1)의 값 계산 ➡️ 1^3 - 3(1) = -2 result2 = f(2) # f(2)의 값 계산 ➡️ 2^3 - 3(2) = 2 result3 = f(-1) # f(-1)의 값 계산 ➡️ (-1)^3 - 3(-1) = 2 print("f(1)의 값은:", result1) print("f(2)의 값은:", result2) print("f(-1)의 값은:", result3)
🧐 소름 돋는 코딩 규칙 세밀하게 뜯어보기
① return이 가지는 수학적 의미 :
코딩 함수에서 가장 중요한 키워드가 바로 return입니다. 상자 안에서 아무리 열심히 계산해도 바깥으로 값을 뱉어내지 않으면 그 함수는 죽은 상자입니다. 수학에서 $f(1)$을 구했을 때 칠판에 -2라고 적어두는 행위 자체가 코딩에서는 값을 반환하는 return 연산입니다.
② 일대일 대응과 함수의 조건 :
위 코드에 f(2)를 넣으면 컴퓨터는 언제나 예외 없이 정확히 2라는 하나의 값만 도출합니다. 입력값 하나에 오직 하나의 출력값만 매칭되는 성질, 즉 수학의 기본 정의인 '함수의 성립 조건'이 컴퓨터 프로그램의 제어 흐름 속에서 완벽하게 구현되고 있는 것입니다.
3 이 개념이 수능 수학 그래프 변별력 문항을 풀 때 왜 강력한 무기가 될까?
수능 수학 22번이나 미적분 30번 같은 초고난도 문항의 단골 주제는 늘 '합성함수($g(f(x))$)의 해석'이나 '새롭게 정의된 함수'입니다. 수많은 복합 조건들이 얽혀있어 손도 대지 못하고 찍는 학생들이 대다수입니다.
하지만 코딩의 눈으로 함수 상자의 메커니즘을 정립한 학생들은 합성함수 $g(f(x))$를 만났을 때 웅장한 기호에 쫄지 않습니다. 구조적으로 바라보기 때문입니다. "아, $x$라는 재료를 먼저 $f$라는 상자에 통과시키고, 거기서 return되어 나온 결괬값을 다시 $g$라는 상자의 정의역(입력값)으로 집어넣는 이중 조립식 구조구나!"라고 직관적으로 뚫어냅니다.
나아가 수2 미분단원의 "함수 $f(x)$가 실수 전체의 집합에서 미분가능할 때" 같은 조건을 만나면, 뇌가 자동으로 '입력값의 모든 범위(정의역)에서 에러(TypeError) 없이 항상 부드러운 연산 결과가 리턴되는 알고리즘 회로'를 떠올립니다. 함수를 고정된 수식이 아니라 살아 움직이는 시스템(대응 관계)으로 인지하는 순간, 수능 출제자가 함수 그래프를 아무리 비틀고 꼬아놓아도 축의 변화와 변수 간의 역학 관계를 자로 잰 듯 정확하게 추적해 내는 압도적인 그래프 직관력이 장착됩니다.
🎯 8화 수능 도약을 위한 핵심 노트
1. 수학의 $y = f(x)$는 코딩의 def 함수명(x): 상자와 본질이 완벽하게 일치한다.
2. 함수 상자의 생명은 입력받은 정의역을 요리하여 최종 치역을 뱉어내는 return(값의 반환)에 있다.
3. 함수의 대응 메커니즘을 이해하면 수능 킬러 주제인 '합성함수' 및 '구간별 정의된 함수'의 그래프를 구조적으로 해석하는 눈이 열린다!
다음 시간(9화) 예고:
독립된 함수 상자를 만드는 법을 완벽히 마스터했습니다. 그렇다면 이 함수 상자가 자기 자신을 스스로 다시 호출하여 무한한 수열의 규칙을 만들어내면 어떻게 될까요? 고등학교 수학Ⅰ 수열 단원의 끝판왕이자 수능 준킬러 단골 소스인 [수열의 귀납적 정의]와 코딩의 가장 아름다운 예술, [재귀 함수(Recursion)]의 소름 돋는 연결고리를 9화에서 낱낱이 파헤쳐 보겠습니다. 다음 시간에 만나요!
