지금까지는 함수 하나를 다뤘습니다. 이 강의에서는 함수를 이어 붙이고 되돌립니다. 두 함수를 차례로 적용하는 것이 합성이고, 적용한 것을 원래대로 돌리는 것이 역함수입니다.
이 두 조작은 뒤에서 가장 무겁게 쓰입니다. 신경망은 층마다 함수를 적용해 겹겹이 합성한 하나의 함수이고, 그 학습에 쓰는 연쇄법칙(41강)은 합성함수를 미분하는 규칙입니다. 로그(14강)는 지수함수의 역함수로 정의되고, 역행렬(72강)은 선형변환의 역함수입니다. 그래서 여기서 합성과 역의 구조를 정확히 잡아 두면 뒤가 훨씬 수월합니다. 이 강의도 문제를 먼저 풀고 풀이에서 개념을 끌어냅니다.
문제.f(x)=x2(정의역은 모든 실수)에 역함수가 있는지 판정하세요. 없다면 어떻게 고쳐야 생기는지 말하세요.
생각의 실마리. 역함수가 있다면 f−1(4)가 무엇이어야 하는지 생각해 봅니다. 4로 가는 입력을 모두 찾아보고, 그중 무엇을 골라야 할지 정할 수 있는지 확인합니다.
풀이.f(2)=4이고 f(−2)=4입니다. 역함수가 있다면 f−1(4)는 2여야 하기도 하고 −2여야 하기도 합니다. 9강의 정의에 따라 함수는 값이 하나여야 하므로 이런 함수는 존재할 수 없습니다. 또 f−1(−1)은 제곱해서 −1이 되는 실수가 없으므로 정의할 수조차 없습니다.
두 문제를 각각 고칩니다. 첫째 문제는 정의역을 x≥0으로 좁혀 2와 −2 중 하나만 남기면 해결됩니다. 둘째 문제는 공역을 y≥0으로 좁혀 도달하지 않는 값을 없애면 해결됩니다. 그러면 f:[0,∞)→[0,∞)가 일대일대응이 되고 역함수는 f−1(x)=x입니다.
이 문제에서 배우는 것: 역함수의 존재 조건.
함수 f:X→Y에 역함수가 존재할 필요충분조건은 f가 일대일대응인 것입니다. 두 조건이 각각 무엇을 막는지 분명합니다.
일대일이 아니면 한 값으로 가는 입력이 둘 이상이라 역함수의 값이 하나로 정해지지 않습니다. 9강 정의의 "하나씩" 조항이 깨집니다.
위로가 아니면 도달하지 않는 y가 있어 그 자리에서 역함수의 값이 없습니다. "빠짐없이" 조항이 깨집니다.
실제 문제에서는 공역을 치역으로 잡는 것이 보통이므로 위로 조건은 자동으로 만족되고, 일대일인지만 확인하면 됩니다. 그래서 10강에서 본 가로선 판정이 곧 역함수 존재 판정이 됩니다.
일대일이 아닌 함수도 정의역을 잘라 내면 역함수를 갖게 만들 수 있습니다. 이때 어느 쪽을 남기는지에 따라 역함수가 달라지므로 반드시 밝혀야 합니다. x2에서 x≥0을 남기면 역함수가 x이고 x≤0을 남기면 −x입니다. 16강에서 삼각함수의 역함수를 정의할 때도 같은 방식으로 구간을 잘라 냅니다.
바로 확인.
확인 3-1. (기초) f(x)=∣x∣(정의역은 모든 실수)에 역함수가 있는지 판정하세요. 답. 없습니다. 풀이.f(3)=f(−3)=3이라 일대일이 아닙니다.
확인 3-2. (표준) f(x)=x2−4x+5의 정의역을 어떻게 잡으면 역함수가 생기는지 말하세요. 답.x≥2 또는 x≤2로 잡으면 됩니다. 풀이. 표준형이 (x−2)2+1이므로 축이 x=2입니다. 축을 넘어가면 대칭인 두 입력이 같은 값을 가지므로 한쪽만 남겨야 합니다.
확인 3-3. (표준) f(x)=x1(정의역은 x=0)에 역함수가 있는지 판정하고 있다면 구하세요. 답. 있으며 f−1(x)=x1로 자기 자신입니다. 풀이.a1=b1이면 a=b이므로 일대일이고, 치역이 y=0으로 정의역과 같습니다. f(f(x))=1/x1=x이므로 자기 자신이 역함수입니다.
생각의 실마리. 역함수는 입력과 출력의 역할을 맞바꾼 것입니다. y=f(x)를 x에 대해 풀면 무엇이 나오는지 봅니다. 9강 문제 12와 10강 심화 3에서 이미 같은 계산을 했습니다.
풀이.y=x−32x+1을 x에 대해 풉니다. 양변에 x−3을 곱하면
y(x−3)=2x+1⟹yx−3y=2x+1⟹(y−2)x=3y+1
입니다. y=2이면 x=y−23y+1입니다. 이제 문자 이름만 바꿔 쓰면
f−1(x)=x−23x+1
입니다. 원래 함수의 정의역이 x=3이고 치역이 y=2이므로, 역함수의 정의역은 x=2이고 치역은 y=3입니다. 검산으로 f(4)=19=9이고 f−1(9)=728=4로 되돌아옵니다.
이 문제에서 배우는 것: 역함수를 구하는 절차와 그래프.
역함수를 구하는 절차는 세 단계입니다.
일대일인지 확인합니다. 아니면 정의역을 잘라 냅니다.
y=f(x)를 x에 대해 풉니다.
x와 y의 이름을 맞바꿔 씁니다. 이름을 바꾸는 것은 관례일 뿐 수학적 내용은 2단계에서 끝납니다.
그래프에는 분명한 특징이 있습니다. 점 (a,b)가 f의 그래프 위에 있다는 것은 f(a)=b라는 뜻이고, 이것은 f−1(b)=a와 같은 말이므로 점 (b,a)가 f−1의 그래프 위에 있습니다. 좌표를 맞바꾼 점 (b,a)는 원래 점을 직선 y=x에 대해 접어 옮긴 자리입니다. 따라서
f의그래프와f−1의그래프는직선y=x에대해대칭입니다.
이 대칭성에서 한 가지가 더 따라 나옵니다. f와 f−1의 그래프가 만나는 점이 있다면 대개 직선 y=x 위에 있으므로, 교점을 구할 때 f(x)=x를 먼저 풀어 보는 것이 빠릅니다. 다만 이것이 항상 옳지는 않으며 그 예외는 심화 5에서 다룹니다.
바로 확인.
확인 4-1. (기초) f(x)=4x−8의 역함수를 구하세요. 답.f−1(x)=4x+8 풀이.y=4x−8에서 x=4y+8입니다.
확인 4-2. (표준) f(x)=x2+1(x≥0)의 역함수와 그 정의역을 구하세요. 답.f−1(x)=x−1이며 정의역은 x≥1입니다. 풀이.y=x2+1에서 x2=y−1이고 x≥0이므로 x=y−1입니다. 원래 함수의 치역이 y≥1이므로 역함수의 정의역이 그것입니다.
확인 4-3. (표준) f(x)=x+1x의 역함수를 구하세요. 답.f−1(x)=1−xx 풀이.y(x+1)=x에서 (y−1)x=−y이므로 x=y−1−y=1−yy입니다.
문제 13. (표준) f(x)=5x+2일 때 f−1(17)을 역함수를 구하지 않고 계산하세요. 답.3 풀이.5x+2=17에서 x=3입니다.
문제 14. (표준) f(x)=3x, g(x)=x+4일 때 (f∘g)−1(x)를 구하세요. 답.3x−4 풀이.(f∘g)(x)=3x+12이므로 역함수는 3x−12=3x−4입니다. 순서 뒤집힘으로 g−1(f−1(x))=3x−4로도 같습니다.
문제 15. (표준) f(x)=ax+b이고 f−1(x)=2x−3일 때 a와 b를 구하세요. 답.a=2, b=3 풀이. 역함수의 역함수가 원래 함수이므로 y=2x−3를 x에 대해 풀면 x=2y+3입니다. 따라서 f(x)=2x+3입니다.
문제 16. (심화) f(x)=x+1x−1일 때 (f∘f)(x)를 구하세요. 답.−x1 풀이.f(f(x))=x+1x−1+1x+1x−1−1입니다. 분자와 분모에 x+1을 곱하면 (x−1)+(x+1)(x−1)−(x+1)=2x−2=−x1입니다. 정의역은 x=−1이고 x=0입니다.
문제 17. (심화) 문제 16의 f에 대해 (f∘f∘f∘f)(x)를 구하세요. 답.x 풀이. 문제 16에서 (f∘f)(x)=−x1입니다. 이것을 한 번 더 자기 자신과 합성하면 −−1/x1=x입니다. 즉 네 번 합성하면 항등함수가 됩니다. 이런 함수를 주기가 4라고 말합니다.
문제 18. (심화) f(x)=x2−2x+3(x≥1)과 그 역함수의 그래프가 만나는지 판정하세요. 답. 만나지 않습니다. 풀이. 표준형이 (x−1)2+2이고 정의역이 축의 오른쪽이므로 이 구간에서 f는 증가함수입니다. 증가함수이면 심화 5에서 보듯 교점이 직선 y=x 위에만 생길 수 있으므로 f(x)=x를 풉니다. x2−3x+3=0인데 판별식이 9−12=−3<0이라 실근이 없습니다. 실제로 f(x)−x=x2−3x+3=(x−23)2+43이고 이 값은 언제나 양수이므로 f의 그래프가 직선 y=x보다 항상 위에 있습니다. 대칭인 f−1의 그래프는 언제나 아래에 있으므로 두 그래프는 만나지 않습니다.
드릴에서는 합성을 계산하고 역함수를 구했습니다. 이 절에서는 그 규칙들이 왜 성립하는지를 확인합니다. 역함수의 유일성과 순서 뒤집힘을 증명하고, 그래프 대칭성의 근거를 밝힙니다. 마지막 문항은 f−1이라는 기호를 잘못 읽는 방식을 반례로 잡아냅니다.
심화 1. (유일성) 함수 f의 역함수가 존재한다면 하나뿐임을 보이세요. 답. 두 역함수를 가정하고 합성하면 둘이 같아집니다. 풀이.g와 h가 모두 f의 역함수라고 합시다. f의 치역 안의 임의의 y를 잡습니다. f가 위로이므로 f(x)=y인 x가 정의역 안에 있습니다. 역함수의 정의에서 g(y)=g(f(x))=x이고 마찬가지로 h(y)=h(f(x))=x입니다. 따라서 모든 y에서 g(y)=h(y)이므로 두 함수가 같습니다. 남는 것. 유일성이 보장되기 때문에 f−1이라는 하나의 기호를 쓸 수 있습니다. 만약 역함수가 여럿일 수 있다면 "그 역함수"라고 말할 수 없고 매번 어느 것인지 밝혀야 합니다. 정의역을 잘라 역함수를 만들 때 어느 쪽을 남겼는지 밝혀야 하는 이유도 같습니다. 자른 결과가 다르면 아예 다른 함수의 역함수이기 때문입니다.
심화 2. (순서 뒤집힘 증명) f와 g가 모두 역함수를 가질 때 (f∘g)−1=g−1∘f−1임을 정의로 보이세요. 답. 양쪽으로 합성해 항등함수가 나옴을 확인하면 됩니다. 풀이.h=g−1∘f−1로 두고 h가 f∘g의 역함수 조건을 만족하는지 봅니다. 먼저 h((f∘g)(x))=g−1(f−1(f(g(x))))입니다. 안쪽에서 f−1(f(⋅))이 항등이므로 g−1(g(x))=x가 됩니다. 다음으로 (f∘g)(h(y))=f(g(g−1(f−1(y))))인데 안쪽에서 g(g−1(⋅))이 항등이므로 f(f−1(y))=y입니다. 두 조건이 모두 성립하므로 h가 역함수이고, 심화 1의 유일성에 의해 (f∘g)−1=h입니다. 남는 것. 증명이 "가운데부터 상쇄된다"는 구조로 이루어집니다. 이 구조는 함수의 성질이 아니라 결합법칙과 항등원과 역원만 쓰므로, 같은 구조를 갖는 다른 대상에서도 그대로 성립합니다. 행렬에서 (AB)−1=B−1A−1이 나오는 이유가 이것입니다.
심화 3. (그래프 대칭의 근거) f와 f−1의 그래프가 직선 y=x에 대해 대칭임을 좌표로 보이세요. 답. 점 (a,b)와 (b,a)가 y=x에 대해 서로 접어 옮긴 자리이기 때문입니다. 풀이. 점 (a,b)가 f의 그래프 위에 있다는 것은 f(a)=b라는 뜻이고, 역함수의 정의에서 이것은 f−1(b)=a와 같은 말이므로 점 (b,a)가 f−1의 그래프 위에 있습니다. 이제 두 점 (a,b)와 (b,a)의 관계를 봅니다. 두 점을 잇는 선분의 중점은 (2a+b,2a+b)로 직선 y=x 위에 있고, 선분의 기울기는 b−aa−b=−1이라 기울기가 1인 직선 y=x와 수직입니다. 중점이 직선 위에 있고 선분이 직선과 수직이므로 두 점은 그 직선에 대해 대칭입니다. 남는 것. 그래프 대칭은 그림으로 보면 당연해 보이지만, 근거는 "역함수가 좌표를 맞바꾼다"는 정의 하나입니다. 12강에서 다룰 대칭이동의 언어로 말하면 y=x에 대한 대칭이동이 x와 y를 맞바꾸는 조작이고, 역함수를 구할 때 문자 이름을 바꿔 쓰는 절차가 정확히 그 조작입니다.
심화 4. (증가하면 역함수도 증가) f가 증가함수이면 f−1도 증가함수임을 보이세요. 여기서 증가한다는 것은 a<b이면 f(a)<f(b)라는 뜻입니다. 답. 역함수가 감소한다고 가정하면 원함수의 증가와 모순됩니다. 풀이. 먼저 증가함수는 일대일입니다. a=b이면 둘 중 하나가 작고 그에 따라 함숫값의 대소가 정해지므로 함숫값이 같을 수 없기 때문입니다. 이제 f의 치역에서 p<q인 두 값을 잡고 f−1(p)=a, f−1(q)=b라 둡니다. 만약 a≥b이면 f가 증가하므로 f(a)≥f(b), 즉 p≥q가 되어 가정에 어긋납니다. 따라서 a<b이고 f−1도 증가합니다. 남는 것. 이 성질 덕분에 증가함수는 정의역을 자르지 않아도 역함수를 갖습니다. 13강의 지수함수가 증가함수이므로 14강에서 로그를 곧바로 역함수로 정의할 수 있는 것이 그 예입니다. 감소함수에서도 같은 논증으로 역함수가 감소함이 나옵니다.
심화 5. (y=x 위가 아닌 교점) f와 f−1의 그래프가 만나는 점이 반드시 직선 y=x 위에 있지는 않음을 예로 보이세요. 답.f(x)=−x3에서 점 (1,−1)과 (−1,1)이 반례입니다. 풀이.f(x)=−x3은 실수 전체에서 일대일이고 역함수는 f−1(x)=−3x입니다. f(1)=−1이므로 점 (1,−1)이 f의 그래프 위에 있고, f−1(1)=−1이므로 같은 점 (1,−1)이 f−1의 그래프 위에도 있습니다. 그런데 이 점은 y=x 위에 있지 않습니다. 반면 f(x)=x를 풀면 −x3=x에서 x=0뿐이므로, 이 방정식만 풀었다면 교점 (1,−1)과 (−1,1)을 놓쳤을 것입니다. 남는 것. "f와 f−1의 교점은 y=x 위에 있다"는 말은 f가 증가함수일 때만 보장됩니다. 감소하는 함수에서는 y=−x 방향으로 마주 보는 교점이 생길 수 있습니다. 문제 18에서 f(x)=x를 풀어 교점을 찾은 것은 그 함수가 해당 구간에서 증가했기 때문에 정당했으며, 결론적으로 교점이 없다는 것까지 확인했습니다.
심화 6. (기호 오해 깨기) f(x)=x+2에 대해 f−1(x)와 f(x)1를 각각 구하고, 두 기호를 혼동하면 어떤 잘못이 생기는지 설명하세요. 답.f−1(x)=x−2이고 f(x)1=x+21로 전혀 다릅니다. 풀이. 역함수는 y=x+2를 x에 대해 풀어 x=y−2이므로 f−1(x)=x−2입니다. 반면 함숫값의 역수는 x+21입니다. x=0에서 앞은 −2이고 뒤는 21로 완전히 다릅니다. 혼동하면 정의역부터 어긋납니다. f−1은 실수 전체에서 정의되지만 f(x)1는 x=−2에서 정의되지 않습니다. 지수 표기의 −1이 거듭제곱을 뜻하는 다른 자리와 겹쳐 생기는 혼동이며, 함수 이름 뒤에 붙은 −1은 언제나 역함수를 뜻한다고 약속되어 있습니다. 남는 것. 같은 기호가 문맥에 따라 다른 뜻을 갖는 일은 수학에서 드물지 않습니다. f−1이 역함수인지 역수인지는 f가 함수 이름인지 값인지로 갈립니다. 16강에서 삼각함수의 역함수를 다룰 때 이 혼동이 특히 자주 일어나므로, 지금 구분을 확실히 해 둡니다.
import numpy as np
f = lambda x: 2*x + 3
g = lambda x: x - 1
# 문제 1: 합성은 순서에 따라 다릅니다
print(f(g(2.0)), g(f(2.0))) # 5.0 6.0
# 문제 5: (f∘g)^{-1} = g^{-1}∘f^{-1} 인지 확인
fi = lambda y: (y - 3)/2
gi = lambda y: y + 1
x = np.linspace(-5, 5, 1001)
comp_inv = (x - 1)/2 # (f∘g)(x) = 2x+1 의 역
print(np.allclose(comp_inv, gi(fi(x)))) # True
print(np.allclose(comp_inv, fi(gi(x)))) # False
# 문제 11: f 와 f^{-1} 을 합성하면 항등함수인지 확인
F = lambda x: (3*x - 2)/(x + 4)
Fi = lambda y: (4*y + 2)/(3 - y)
x = np.array([-1.0, 0.0, 1.0, 2.0, 5.0])
print(np.allclose(Fi(F(x)), x)) # True
# 문제 17: f 를 네 번 합성하면 항등함수인지 확인
h = lambda x: (x - 1)/(x + 1)
x = np.array([0.5, 2.0, 3.0, -4.0])
print(np.allclose(h(h(h(h(x)))), x)) # True
두 번째 블록에서 첫 출력이 True이고 둘째가 False인 것이 순서 뒤집힘 규칙의 확인입니다. 순서를 바꾸면 다른 함수가 되므로 역함수 관계가 깨집니다.