문서의 각 단락이 어느 리비전에서 마지막으로 수정되었는지 확인할 수 있습니다. 왼쪽의 정보 칩을 통해 작성자와 수정 시점을 파악하세요.

함수 | |
정의 | 두 집합 사이의 관계를 나타내는 수학적 개념으로, 첫 번째 집합의 각 원소에 두 번째 집합의 원소를 단 하나씩 대응시키는 규칙 |
표기 | f: X → Y f(x) = y |
구성 요소 | 정의역 공역 치역 |
주요 유형 | 일대일 함수 전사 함수 일대일 대응 항등 함수 상수 함수 |
관련 분야 | 수학 컴퓨터 과학 물리학 |
상세 정보 | |
역함수 | 함수 f: X → Y가 일대일 대응일 때, Y의 각 원소 y에 대해 f(x)=y인 X의 원소 x를 대응시키는 함수 f⁻¹: Y → X |
합성함수 | 두 함수 f: X → Y와 g: Y → Z가 주어졌을 때, X의 원소 x에 대해 g(f(x))를 대응시키는 함수 g∘f: X → Z |
함수의 역사 | 17세기 라이프니츠가 '함수'라는 용어를 처음 사용[1] 18세기 오일러가 현대적 함수 개념의 기초를 마련[2] 19세기 디리클레가 현대적 함수 정의 제시[3] |
컴퓨터 과학에서의 함수 | 입력값을 받아 특정 연산을 수행하고 결과값을 반환하는 서브루틴 또는 프로시저 재사용성과 모듈화를 위한 핵심 개념 |

함수는 수학의 기본 개념 중 하나로, 두 집합 사이의 특별한 관계를 나타낸다. 구체적으로, 첫 번째 집합인 정의역의 각 원소에 대해 두 번째 집합인 공역의 원소를 정확히 하나씩 대응시키는 규칙이다. 이 대응 관계는 보통 f: X → Y와 같이 표기하며, 정의역의 원소 x에 대응되는 공역의 원소는 f(x)로 나타낸다.
함수의 구성 요소로는 입력값의 집합인 정의역, 출력값이 속할 수 있는 집합인 공역, 그리고 실제로 대응되는 출력값들의 집합인 치역이 있다. 함수는 이러한 대응 규칙에 따라 다양한 유형으로 분류되는데, 대표적으로 각 입력값이 서로 다른 출력값을 가지는 일대일 함수, 공역의 모든 원소가 대응되는 전사 함수, 그리고 이 두 성질을 모두 만족하는 일대일 대응이 있다. 또한 모든 입력값에 대해 같은 값을 출력하는 상수 함수와 입력값을 그대로 출력하는 항등 함수도 중요한 기본 함수이다.
함수의 개념은 수학의 여러 분야를 넘어 컴퓨터 과학과 물리학 등 다양한 학문 분야에서 핵심적인 도구로 활용된다. 컴퓨터 과학에서는 프로그래밍에서의 함수가 이 수학적 개념에서 유래하였으며, 물리학에서는 자연 현상을 수학적으로 모델링하는 데 필수적이다.

함수의 개념은 수학의 기본적인 구성 요소 중 하나이다. 함수는 두 집합 사이의 특별한 관계를 의미한다. 집합 X의 각 원소에 대해 집합 Y의 원소를 정확히 하나씩 대응시키는 규칙 또는 대응을 함수라고 정의한다. 이때 집합 X를 함수의 정의역이라 하고, 집합 Y를 공역이라고 한다. 함수는 주로 f, g와 같은 문자로 표시하며, 'f: X → Y'와 같이 정의역과 공역을 함께 명시하여 표현한다.
함수 f에 의해 정의역 X의 원소 x가 공역 Y의 원소 y에 대응될 때, 이를 'y는 x의 함숫값이다'라고 하며, 기호로는 f(x) = y로 나타낸다. 모든 함숫값 f(x)들의 집합을 함수의 치역이라고 하는데, 치역은 공역의 부분집합이다. 함수의 핵심은 정의역의 각 입력값에 대해 출력값이 오직 하나로 결정된다는 점에 있다. 하나의 입력에 두 개 이상의 출력이 연결되는 관계는 함수가 아니다.
이러한 함수의 개념은 수학 전반은 물론, 물리학에서 자연 현상을 수식으로 모델링하거나, 컴퓨터 과학에서 알고리즘과 프로그래밍의 기본 단위를 구성하는 데 광범위하게 활용된다. 함수는 변수들 사이의 의존 관계를 정량적으로 기술하는 강력한 도구 역할을 한다.
함수의 핵심 구성 요소 중 하나는 정의역이다. 정의역은 함수가 입력값으로 받아들이는 모든 원소들의 집합을 가리킨다. 표기법 f: X → Y 에서 X가 바로 정의역에 해당하며, 함수 f는 이 정의역 X의 각 원소 x에 대해 어떤 출력값을 지정한다.
함수의 또 다른 핵심 구성 요소는 공역이다. 공역은 함수의 출력값이 속할 수 있는 모든 원소들의 집합이다. 위 표기법에서 Y가 공역이다. 여기서 주의할 점은, 함수의 실제 출력값들이 모두 모인 집합인 치역은 공역의 부분집합이라는 것이다. 즉, 치역은 공역 안에 포함되며, 공역의 모든 원소가 실제로 출력값으로 사용되지 않을 수도 있다.
예를 들어, 실수에서 실수로 가는 함수 f(x) = x² 을 생각해보자. 이 함수의 정의역과 공역은 모두 실수 전체 집합으로 설정할 수 있다. 그러나 이 함수의 치역, 즉 실제 출력값들의 집합은 0 이상의 실수로, 공역인 모든 실수보다 작은 범위를 가진다. 이처럼 정의역, 공역, 치역은 함수의 구조를 이해하는 데 필수적인 개념이다.
함수를 표현하는 방법은 크게 세 가지로 나눌 수 있다. 첫째는 수식을 사용하는 방법이다. 예를 들어, 실수 집합에서 정의된 함수를 f(x) = 2x + 1과 같이 대수적 수식으로 명시적으로 나타낸다. 이는 가장 일반적이고 정밀한 표현 방식이다. 둘째는 그래프를 이용하는 방법이다. 좌표평면 위에 점들의 집합 (x, f(x))을 그려 시각적으로 함수의 성질, 예를 들어 증가/감소 구간이나 연속성 등을 파악할 수 있다. 셋째는 순서쌍이나 표를 나열하는 방법이다. 정의역과 공역이 유한집합일 때, {(1, 2), (2, 4), (3, 6)}과 같이 각 원소의 대응 관계를 직접 제시하거나 표로 정리할 수 있다.
이 외에도 함수를 표현하는 특수한 방식이 존재한다. 재귀적으로 정의된 함수는 자신을 이용하여 규칙을 서술하며, 컴퓨터 과학의 알고리즘은 함수의 계산 과정을 단계별로 기술한 것이라 볼 수 있다. 또한, 조건문을 포함한 분수함수 표현도 가능한데, 예를 들어 f(x) = { x (x ≥ 0), -x (x < 0) }과 같이 정의역의 부분에 따라 다른 규칙을 적용한다.
함수의 핵심 표기법으로는 f: X → Y가 있다. 이는 함수 f가 정의역 X에서 공역 Y로의 대응 관계임을 나타낸다. f(x)는 정의역의 원소 x에 대응되는 공역의 원소, 즉 함숫값을 의미하며, 모든 함숫값의 집합을 치역이라고 한다. 이러한 표기는 함수를 추상적 객체로 다루는 집합론과 범주론의 기초가 된다.

일대일 함수는 정의역의 서로 다른 원소가 공역의 서로 다른 원소에 대응하는 함수이다. 즉, x1 ≠ x2이면 f(x1) ≠ f(x2)를 만족한다. 이를 단사 함수라고도 부른다. 일대일 함수는 공역의 원소 하나에 정의역의 원소가 최대 하나만 대응하므로, 함수 그래프를 가로로 그었을 때 한 점에서만 만나는 수평선 판정법으로 확인할 수 있다.
전사 함수는 공역의 모든 원소가 적어도 하나의 정의역 원소의 상인 함수이다. 즉, 공역과 치역이 일치하는 함수를 말하며, 이를 위로의 함수 또는 단사가 아닌 전사라고도 한다. 모든 y ∈ Y에 대하여 f(x) = y를 만족하는 x ∈ X가 존재한다는 조건을 만족해야 한다.
전단사 함수는 일대일 함수이면서 동시에 전사 함수인 함수를 의미한다. 즉, 정의역의 각 원소는 공역의 서로 다른 원소와 하나씩 짝지어지며, 공역의 모든 원소가 정의역의 어떤 원소와 정확히 하나씩 연결된다. 이는 두 집합 사이의 완벽한 짝짓기를 의미하며, 일대일 대응이라고도 불린다. 전단사 함수는 역함수가 존재하기 위한 필요충분 조건이다.
항등 함수는 정의역과 공역이 같은 집합일 때, 정의역의 각 원소를 그 자신에 대응시키는 함수이다. 즉, 집합 X에 대한 항등 함수는 정의역 X의 모든 원소 x에 대해 f(x) = x를 만족한다. 이 함수는 일대일 대응이면서 전사 함수인 특성을 가지며, 함수의 합성 연산에서 역함수와 마찬가지로 중요한 역할을 한다. 예를 들어, 어떤 함수 f와 항등 함수를 합성하면 원래 함수 f가 그대로 나온다.
상수 함수는 정의역의 모든 원소가 공역의 단 하나의 원소에만 대응되는 함수이다. 즉, 정의역 X의 모든 x에 대해 f(x) = c (c는 상수)를 만족한다. 이때 치역은 오직 그 상수 값 하나로만 이루어진 단원소 집합이 된다. 상수 함수는 일대일 함수가 아니며, 정의역의 서로 다른 원소들이 모두 같은 값을 가지므로 함수의 그래프는 수평선을 이룬다. 이러한 함수는 수학적 모델링에서 변하지 않는 고정된 값을 표현할 때 자주 사용된다.
이 두 함수는 함수의 기본적인 형태를 보여주는 중요한 예시이다. 항등 함수는 가장 단순하면서도 대칭적인 구조를, 상수 함수는 극단적으로 단순화된 대응 관계를 나타낸다. 이들은 더 복잡한 함수를 이해하거나 함수의 연산을 논할 때 기준점이 되는 역할을 한다.
다항 함수는 변수와 상수들의 덧셈, 뺄셈, 곱셈, 그리고 음이 아닌 정수 지수의 거듭제곱만으로 구성된 함수이다. 즉, 변수 x에 대한 다항식 f(x) = a_n x^n + a_{n-1} x^{n-1} + ... + a_1 x + a_0의 형태로 표현된다. 여기서 n은 음이 아닌 정수이며, 계수 a_i들은 실수 또는 복소수이다. 가장 간단한 다항 함수는 상수 함수와 일차 함수이며, 이차 함수는 포물선의 그래프를 그린다. 다항 함수는 미분과 적분이 용이하고, 모든 실수에서 연속 함수이며 무한번 미분 가능하다는 특징을 가진다.
유리 함수는 두 다항식의 비, 즉 분수 형태로 표현되는 함수이다. 일반적으로 R(x) = P(x) / Q(x)의 꼴이며, 여기서 P(x)와 Q(x)는 다항식이고 Q(x)는 영다항식이 아니다. 유리 함수의 정의역은 분모 Q(x) = 0을 만족시키는 x 값을 제외한 모든 실수이다. 이러한 점에서 함수 값이 정의되지 않거나 발산할 수 있으며, 이는 그래프상에서 점근선이나 특이점으로 나타난다. 유리 함수는 부분 분수 분해와 같은 기법을 통해 적분하거나 분석하는 데 활용된다.
초월 함수는 다항 방정식의 근으로 표현될 수 없는 함수를 말한다. 즉, 유리 함수를 포함하는 대수적 함수가 아닌 함수들이다. 대표적인 예로는 지수 함수, 로그 함수, 삼각 함수 (사인, 코사인, 탄젠트 등)가 있다. 이들은 과학과 공학 전반에서 매우 광범위하게 응용되며, 미적분학의 핵심적인 연구 대상이다. 예를 들어, 지수 함수는 방사성 동위원소의 붕괴나 인구 증가 모델링에, 삼각 함수는 파동 현상이나 주기 운동을 기술하는 데 필수적이다.
연속 함수는 직관적으로 말해 그래프가 끊어지지 않고 이어져 있는 함수를 의미한다. 수학적으로는 정의역의 한 점 a에서 극한값 lim_{x→a} f(x)가 존재하고, 그 값이 함수값 f(a)와 같을 때, 함수 f는 x=a에서 연속이라고 한다. 정의역의 모든 점에서 연속인 함수를 연속 함수라고 부른다. 연속성은 함수의 중요한 성질 중 하나로, 중간값 정리나 최대·최소 정리와 같은 여러 유용한 정리들이 성립하기 위한 기본 조건이 된다.
미분 가능 함수는 정의역 내의 특정 점에서 접선을 그릴 수 있는, 즉 국소적으로 선형으로 근사할 수 있는 함수를 말한다. 함수 f가 점 a에서 미분 가능하다는 것은 극한 lim_{h→0} [f(a+h) - f(a)] / h 가 존재한다는 것을 의미하며, 이 극한값을 도함수 f'(a)라고 정의한다. 함수가 정의역의 모든 점에서 미분 가능하면, 그 함수를 미분 가능 함수라고 한다. 모든 다항 함수는 실수 전체의 집합에서 미분 가능하다.
연속성과 미분 가능성 사이에는 밀접한 관계가 있다. 모든 미분 가능 함수는 연속 함수이지만, 그 역은 성립하지 않는다. 예를 들어, 절댓값 함수 f(x)=|x|는 x=0에서 연속이지만, 그 점에서 뾰족한 모양을 가지고 있어 접선을 정의할 수 없으므로 미분 가능하지 않다. 따라서 미분 가능성은 연속성보다 더 강한 조건이다. 이러한 성질들은 해석학의 기본 개념을 이루며, 물리학에서의 운동 분석이나 경제학에서의 최적화 문제 등 다양한 응용 분야의 기초가 된다.

함수의 합성은 두 개 이상의 함수를 연결하여 새로운 함수를 만들어내는 연산이다. 주어진 두 함수 f: X → Y와 g: Y → Z가 있을 때, f의 공역이 g의 정의역의 부분집합이면 합성함수 g∘f: X → Z를 정의할 수 있다. 이 합성함수는 집합 X의 임의의 원소 x에 대해 (g∘f)(x) = g(f(x))의 값을 대응시킨다. 즉, 먼저 함수 f를 적용한 결과에 다시 함수 g를 적용하는 규칙이다.
함수의 합성은 결합 법칙을 만족한다. 세 함수 f, g, h에 대해 h∘(g∘f) = (h∘g)∘f가 성립하므로, 괄호 없이 h∘g∘f와 같이 표기할 수 있다. 그러나 교환 법칙은 일반적으로 성립하지 않는다. g∘f와 f∘g는 정의될 수 있는 조건 자체가 다르며, 정의된다 하더라도 그 결과가 서로 다른 함수가 되는 경우가 대부분이다.
함수의 합성은 수학의 여러 분야에서 기본적인 도구로 활용된다. 예를 들어, 미적분학에서 연쇄 법칙은 합성함수의 미분을 계산하는 핵심 공식이다. 또한, 군론이나 범주론과 같은 추상적인 대수학 구조에서도 함수의 합성은 핵심적인 연산으로 자리 잡고 있다.
컴퓨터 과학에서도 함수의 합성 개념은 중요하다. 함수형 프로그래밍 패러다임에서는 작은 순수 함수들을 합성하여 복잡한 프로그램을 구성하는 방식이 널리 사용된다. 이는 코드의 재사용성과 모듈성을 높이는 데 기여한다.
역함수는 주어진 함수의 대응 관계를 반대로 뒤집은 함수이다. 함수 f가 정의역 X에서 공역 Y로의 일대일 대응일 때, Y의 각 원소 y에 대해 f(x) = y를 만족하는 X의 원소 x가 유일하게 존재한다. 이때, y를 x에 대응시키는 새로운 함수를 f의 역함수라 하며, 기호로는 f⁻¹로 표기한다. 즉, f⁻¹(y) = x는 f(x) = y와 동치이다.
역함수가 존재하기 위한 필요충분조건은 원래 함수가 일대일 대응인 것이다. 함수가 일대일 함수이지만 전사 함수가 아니면, 공역을 치역으로 축소시킨 후에야 역함수를 정의할 수 있다. 예를 들어, 실수에서 실수로 가는 함수 f(x) = e^x는 일대일 대응이므로 역함수인 자연로그 f⁻¹(x) = ln(x)를 가진다.
역함수는 함수의 합성과 깊은 관련이 있다. 함수 f와 그 역함수 f⁻¹를 합성하면, 정의역과 공역 각각에서 항등 함수가 된다. 즉, f⁻¹(f(x)) = x (x ∈ X)이고, f(f⁻¹(y)) = y (y ∈ Y)가 성립한다. 이 성질은 역함수의 정의에서 직접적으로 도출된다.
역함수의 개념은 삼각 함수의 역함수인 역삼각함수, 지수 함수와 로그 함수의 관계, 그리고 행렬의 가역 행렬 등 수학의 다양한 분야에서 핵심적으로 활용된다. 또한, 암호화와 복호화, 좌표계 변환 등 실생활 문제를 푸는 데에도 응용된다.

컴퓨터 과학에서의 함수는 수학의 함수 개념에서 유래한 기본적인 프로그래밍 구성 요소이다. 프로그램 내에서 특정 작업을 수행하기 위해 설계된 독립적인 코드 블록으로, 입력값을 받아 처리한 후 결과값을 반환하는 역할을 한다. 이는 코드의 재사용성을 높이고, 프로그램을 논리적 단위로 모듈화하여 가독성과 유지보수성을 크게 향상시킨다.
함수는 일반적으로 함수명, 매개변수(인자), 반환값, 함수 본문으로 구성된다. 함수를 정의할 때는 수행할 작업을 기술하고, 필요 시 입력을 받을 매개변수를 선언하며, 작업 결과를 출력할 반환값의 유형을 지정한다. 이후 프로그램 어디서든 함수 이름을 호출함으로써 해당 코드 블록을 실행할 수 있다. 대부분의 현대 프로그래밍 언어는 이러한 함수 정의와 호출 기능을 지원한다.
함수의 사용은 소프트웨어 개발에서 필수적이다. 복잡한 문제를 작은 하위 작업으로 분해하여 각각을 함수로 구현하면, 전체 프로그램의 구조를 명확하게 만들 수 있다. 또한 동일한 작업을 여러 번 수행해야 할 때 같은 함수를 반복 호출하면 코드 중복을 방지할 수 있다. 이는 객체 지향 프로그래밍과 같은 패러다임에서도 메서드라는 형태로 핵심 개념으로 자리 잡고 있다.
함수의 개념은 알고리즘을 구현하는 데 있어 근간이 되며, 라이브러리나 API를 통해 미리 작성된 함수들을 활용함으로써 개발 효율성을 극대화한다. 더 나아가 함수형 프로그래밍 패러다임에서는 함수를 일급 객체로 취급하여 다른 함수의 인자나 반환값으로 사용하거나, 고차 함수를 구성하는 등 보다 추상화된 방식으로 활용하기도 한다.
컴퓨터 과학, 특히 함수형 프로그래밍에서 함수는 수학적 함수의 개념과 유사한 특성을 가진 순수 함수와 그렇지 않은 함수로 구분된다.
순수 함수는 동일한 인자에 대해 항상 동일한 결과를 반환하며, 프로그램의 상태를 변경하거나 외부 상태에 의존하지 않는 함수이다. 즉, 함수의 실행이 외부에 어떠한 부작용도 일으키지 않는다. 이는 함수의 출력이 오직 입력 값에만 의존함을 의미하며, 이 특성 덕분에 순수 함수는 예측 가능하고 테스트하기 쉬우며, 병렬 처리와 같은 최적화에 유리하다. 반면, 부작용을 가진 함수는 파일 입출력, 데이터베이스 조작, 전역 변수 수정, 화면 출력 등 함수 외부의 상태를 변경하거나 의존하는 작업을 수행한다.
순수 함수와 부작용의 개념은 소프트웨어 공학에서 프로그램의 신뢰성과 유지보수성을 높이는 데 중요한 역할을 한다. 순수 함수만으로 구성된 프로그램은 상태 변화를 최소화하여 버그 발생 가능성을 줄이고, 프로그램의 동작을 추론하기 쉽게 만든다. 많은 현대 프로그래밍 언어들은 이 두 개념을 명시적으로 지원하거나 장려하며, 프로그래머는 문제의 특성에 따라 순수 함수와 부작용을 적절히 조합하여 사용한다.

함수의 역사적 발전은 수학적 사고의 진화를 보여준다. 초기 개념은 고대 문명에서도 발견되지만, 현대적 의미의 함수는 17세기 미적분학의 발전과 함께 본격적으로 연구되기 시작했다. 라이프니츠는 1694년 논문에서 '함수'라는 용어를 처음 사용했으며, 이는 곡선과 관련된 기하학적 양을 지칭하는 것이었다. 이후 레온하르트 오일러는 1748년 저서 『무한해석입문』에서 함수를 "변수와 상수로 구성된 해석적 표현"으로 정의하며 함수 개념을 대수적 표현과 강하게 연결지었다. 19세기에 이르러 페터 디리클레는 1837년에 오늘날과 가장 가까운 현대적 정의, 즉 정의역의 각 원소에 공역의 유일한 원소를 대응시키는 임의의 규칙으로서의 함수 개념을 제시했다. 이는 함수를 단순한 공식이 아닌 보다 추상적인 관계로 이해하는 전환점이 되었다.
20세기에는 집합론의 발전과 함께 함수가 순수하게 집합 간의 관계로 엄밀하게 재정의되었다. 이 정의는 두 집합의 순서쌍으로 이루어진 특정 부분집합으로 함수를 규정한다. 이러한 공리화는 수학의 기초를 확립하는 데 결정적 역할을 했으며, 컴퓨터 과학을 포함한 현대 수학 전반에 걸쳐 함수가 근본적인 도구로 자리 잡는 토대를 마련했다. 함수 개념의 추상화는 수학의 여러 분야를 통합하고, 알고리즘과 계산 이론의 발전에 직접적인 영향을 미쳤다.
