13강 심화 5에서 막힌 곳이 있었습니다. 2x=3을 풀 때 밑을 통일할 수 없어 답을 적지 못했습니다. 이 강의에서 그 답을 적을 이름을 만듭니다. 지수함수가 일대일이므로 11강의 기준에 따라 역함수가 존재하고, 그 역함수를 로그라고 부릅니다.
로그는 이름을 붙이는 데 그치지 않습니다. 곱셈을 덧셈으로 바꾸는 성질 덕분에 큰 수의 계산을 다루기 쉽게 만들고, 지수적으로 변하는 양을 눈금이 고른 축 위에 펼쳐 놓습니다. 뒤에서 정보량과 엔트로피(465강), 최대가능도추정의 로그가능도(149강), 교차엔트로피 손실(236강)이 모두 로그로 쓰여 있습니다. 이 강의도 문제를 먼저 풀고 풀이에서 개념을 끌어냅니다.
생각의 실마리. 구하려는 값을 x로 두고 정의를 써서 지수 관계식으로 되돌립니다. 그 식의 양변에 밑이 2인 로그를 취하면 무엇이 나오는지 봅니다.
풀이.log48=x로 두면 정의에서 4x=8입니다. 양변에 log2를 취합니다.
log24x=log28⟹xlog24=log28⟹2x=3⟹x=23
따라서 log48=23입니다. 검산하면 43/2=(22)3/2=23=8로 맞습니다.
풀이 중간에 나온 x=log24log28가 일반 공식의 모양입니다.
이 문제에서 배우는 것: 밑변환 공식. a,b,N>0이고 a=1, b=1일 때 다음이 성립합니다.
logaN=logbalogbN
유도는 문제 3의 풀이 그대로입니다. logaN=x로 두면 ax=N이고, 양변에 밑이 b인 로그를 취하면 xlogba=logbN이 되어 나눕니다. 분모의 logba가 0이 아니어야 하는데, a=1이므로 보장됩니다.
이 공식에서 따라 나오는 것들이 유용합니다.
logab=logba1,logamNn=mnlogaN
앞의 것은 N=b로 두면 나오고, 뒤의 것은 밑변환과 세 번째 법칙을 함께 쓰면 나옵니다.
실무에서 자주 쓰는 밑이 셋 있습니다. 상용로그는 밑이 10이고 logN처럼 밑을 생략해 씁니다. 자연로그는 밑이 자연상수 e≈2.718이고 lnN으로 씁니다. 이진로그는 밑이 2이고 정보량을 셀 때 씁니다. 밑이 무엇이든 밑변환으로 서로 바꿀 수 있으므로, 어느 밑을 쓰든 상수배 차이만 납니다. 자연상수 e가 왜 특별한지는 40강에서 미분과 함께 다룹니다.
문제.y=log2x의 그래프를 y=2x의 그래프에서 얻는 방법을 설명하고, 정의역과 점근선을 구하세요.
생각의 실마리. 두 함수가 서로 역함수라는 사실을 씁니다. 11강에서 역함수의 그래프가 원래 그래프와 어떤 관계였는지 떠올립니다. 그리고 정의역과 치역이 어떻게 뒤바뀌는지 확인합니다.
풀이.y=log2x는 y=2x의 역함수이므로, 11강 심화 3에 따라 두 그래프는 직선 y=x에 대해 대칭입니다. 지수함수의 그래프를 그 직선에 접어 옮기면 로그함수의 그래프가 됩니다.
정의역과 치역도 맞바뀝니다. 지수함수의 정의역이 실수 전체이고 치역이 양의 실수였으므로, 로그함수는 정의역이 양의 실수이고 치역이 실수 전체입니다.
점근선도 함께 접힙니다. 지수함수의 수평점근선 y=0이 접히면 **수직점근선 x=0**이 됩니다. 즉 로그함수의 그래프는 y축에 바짝 붙어 아래로 끝없이 내려갑니다.
이 문제에서 배우는 것: 로그함수의 성질. a>0, a=1일 때 y=logax를 로그함수라 합니다. 성질은 지수함수를 뒤집은 것입니다.
성질
a>1
0<a<1
증가와 감소
증가합니다
감소합니다
x→ 큰 쪽
끝없이 커집니다
끝없이 작아집니다
x→0 쪽
끝없이 작아집니다
끝없이 커집니다
공통 성질은 다음과 같습니다.
정의역은 양의 실수 전체이고 치역은 실수 전체입니다.
어떤 밑이든 loga1=0이므로 모든 로그함수가 점 (1,0)을 지납니다.
수직점근선은 x=0입니다.
증가하거나 감소하므로 언제나 일대일이고, 따라서 다음이 성립합니다.
logap=logaq⟺p=q(p,q>0)
여기서 로그함수가 얼마나 천천히 자라는지도 짚어 둡니다. log2x가 10이 되려면 x가 1024여야 하고 20이 되려면 약 100만이어야 합니다. 13강에서 지수함수가 다항함수보다 빠르다고 했는데, 로그함수는 그 역이므로 어떤 다항함수보다도 느리게 자랍니다. 그래서 값의 범위가 아주 넓은 데이터를 로그축에 그리면 한 화면에 담을 수 있습니다.
바로 확인.
확인 4-1. (기초) y=log3x가 지나는 점 중 x가 1, 3, 31일 때의 좌표를 구하세요. 답.(1,0), (3,1), (31,−1) 풀이. 각각 30=1, 31=3, 3−1=31이기 때문입니다.
확인 4-2. (표준) y=log2(x−1)+3의 정의역과 점근선을 구하세요. 답. 정의역은 x>1이고 점근선은 x=1입니다. 풀이. 12강의 규칙으로 오른쪽으로 1, 위로 3만큼 옮긴 것이므로 점근선 x=0이 x=1로 옮겨집니다. 진수 조건 x−1>0과 같은 결론입니다.
확인 4-3. (표준) y=log1/2x와 y=log2x의 그래프 관계를 말하세요. 답.x축에 대해 서로 대칭입니다. 풀이. 밑변환으로 log1/2x=log2(1/2)log2x=−1log2x=−log2x입니다. 12강의 규칙에서 y=−f(x)는 x축 대칭입니다.
생각의 실마리. 로그 두 개를 하나로 합칠 수 있습니다. 합친 뒤 정의로 되돌리면 다항방정식이 됩니다. 다만 시작하기 전에 반드시 확인할 것이 있습니다. 각 로그가 정의되려면 진수가 어떤 조건을 만족해야 하는지 먼저 적습니다.
풀이. 먼저 진수 조건을 적습니다. x−1>0이고 x+2>0이므로 두 조건을 합치면 x>1입니다.
이제 왼쪽을 합칩니다.
log2((x−1)(x+2))=2⟹(x−1)(x+2)=22=4
전개하면 x2+x−2=4이므로 x2+x−6=0이고 (x+3)(x−2)=0에서 x=−3 또는 x=2입니다.
진수 조건 x>1로 거릅니다. x=−3은 조건을 어기므로 버리고 x=2만 남습니다. 검산하면 log21+log24=0+2=2로 맞습니다.
이 문제에서 배우는 것: 로그방정식과 로그부등식.
로그가 든 방정식을 푸는 절차는 네 단계입니다.
진수 조건을 먼저 적습니다. 모든 로그의 진수가 양수여야 하고, 밑에 미지수가 있으면 밑 조건도 적습니다.
계산 법칙으로 로그를 하나로 합칩니다.
정의를 써서 로그를 벗기고 다항방정식으로 바꿉니다.
구한 해를 진수 조건으로 거릅니다.
4단계를 빠뜨리면 정의되지 않는 값을 답에 넣게 됩니다. 4강 심화 6의 무연근과 같은 구조입니다. 로그를 합치는 조작이 정의역을 넓히기 때문에 가짜 해가 생깁니다. 예를 들어 x=−3에서 원래 식의 log2(x−1)은 정의되지 않지만, 합친 뒤의 log2((x−1)(x+2))은 진수가 (−4)(−1)=4로 양수라 계산이 통과해 버립니다.
부등식에서는 밑의 크기에 따라 부등호 방향이 갈립니다.
a>1:logap<logaq⟺p<q,0<a<1:logap<logaq⟺p>q
물론 양쪽 모두 p>0, q>0이라는 진수 조건이 함께 걸립니다. 13강의 지수부등식과 같은 구조입니다.
바로 확인.
확인 5-1. (기초) log3x=4를 푸세요. 답.x=81 풀이. 정의에서 x=34=81이며 진수 조건 x>0을 만족합니다.
확인 5-2. (표준) log2(x+1)=3을 푸세요. 답.x=7 풀이.x+1=8이므로 x=7이고 진수 조건 x>−1을 만족합니다.
확인 5-3. (표준) log2(x−3)<2를 푸세요. 답.3<x<7 풀이. 진수 조건에서 x>3입니다. 밑이 1보다 크므로 x−3<22=4이고 x<7입니다. 두 조건을 합칩니다. 진수 조건을 빠뜨리면 x<7만 남아 정의되지 않는 구간이 답에 들어갑니다.
문제 16. (심화) (log2x)2−3log2x+2=0을 푸세요. 답.x=2 또는 x=4 풀이. 진수 조건은 x>0입니다. t=log2x로 두면 t2−3t+2=0이고 (t−1)(t−2)=0이므로 t=1 또는 t=2입니다. 로그의 치역은 실수 전체라 t에 범위 제한이 없으므로 둘 다 유효합니다. log2x=1에서 x=2이고 log2x=2에서 x=4이며 둘 다 양수입니다.
문제 17. (심화) 2x=5일 때 x를 로그로 나타내고 자연수 부분을 구하세요. 답.x=log25이며 정수부분은 2입니다. 풀이. 정의에서 x=log25입니다. 22=4<5<8=23이므로 2<x<3이고 정수부분은 2입니다.
문제 18. (심화) 350이 몇 자리 수인지 구하세요. log103≈0.4771을 씁니다. 답.24자리입니다. 풀이.log10350=50×0.4771=23.855입니다. 정수부분이 23이므로 1023 이상 1024 미만이고 자릿수는 24입니다.
드릴에서는 법칙을 적용해 값을 구했습니다. 이 절에서는 그 법칙들이 지수법칙에서 어떻게 유도되는지, 진수 조건이 무엇을 막는지를 확인합니다. 마지막 문항은 로그에서 가장 흔한 오해를 반례로 잡아냅니다.
심화 1. (법칙 유도) 로그의 세 계산 법칙을 지수법칙에서 모두 유도하세요. 답. 로그를 지수로 되돌린 뒤 지수법칙을 쓰고 다시 로그로 되돌리면 나옵니다. 풀이.logaM=p, logaN=q로 두면 정의에서 M=ap, N=aq입니다. 곱하면 MN=apaq=ap+q이므로 정의를 다시 적용해 loga(MN)=p+q=logaM+logaN입니다. 나누면 NM=ap−q이므로 logaNM=p−q입니다. 거듭제곱하면 Mk=(ap)k=akp이므로 logaMk=kp=klogaM입니다. 남는 것. 세 법칙이 지수법칙 세 개와 하나씩 짝을 이룹니다. 로그의 법칙을 따로 외울 필요가 없고, 헷갈리면 지수로 되돌려 확인하면 됩니다. 로그가 곱셈을 덧셈으로 낮춰 준다는 사실이 계산자와 로그표가 쓰이던 시절 계산을 가능하게 했고, 지금도 아주 작은 확률들을 곱할 때 로그를 취해 더하는 방식으로 쓰입니다.
심화 2. (진수 조건의 역할) logaM2=2logaM이 모든 실수 M에서 성립하는지 판단하세요. 답. 거짓입니다. M>0일 때만 성립하며 M<0이면 왼쪽만 정의됩니다. 풀이.M=−3이라고 합시다. 왼쪽은 loga9로 진수가 양수라 정의됩니다. 그러나 오른쪽의 loga(−3)은 진수가 음수라 정의되지 않습니다. 즉 왼쪽이 정의되는데 오른쪽이 정의되지 않는 경우가 있으므로 두 식은 같은 식이 아닙니다. 올바른 관계는 logaM2=2loga∣M∣이며, 4강에서 a2=∣a∣였던 것과 같은 구조입니다. 남는 것. 로그 법칙을 거꾸로 쓸 때, 즉 klogaM을 logaMk로 합칠 때 정의역이 넓어질 수 있습니다. 넓어지면 없던 해가 생기므로 반드시 원래 진수 조건으로 걸러야 합니다. 문제 5에서 x=−3이 걸러진 것이 바로 이 현상입니다.
심화 3. (밑변환의 활용) log23×log34×log45×log58을 구하세요. 답.3 풀이. 모든 항을 밑이 2인 로그로 바꿉니다. log34=log23log24, log45=log24log25, log58=log25log28입니다. 모두 곱하면 분자와 분모가 사슬처럼 이어져 차례로 약분되고 처음 분모 log22와 마지막 분자 log28만 남습니다. 정확히 쓰면 log22log23×log23log24×log24log25×log25log28=log22log28=3입니다. 남는 것. 밑과 진수가 사슬처럼 이어지면 가운데가 모두 약분됩니다. 4강의 망원합과 같은 구조이며, 답은 처음 밑과 마지막 진수만으로 정해집니다. 이런 곱을 만나면 하나하나 계산하지 말고 사슬 구조부터 확인합니다.
심화 4. (자릿수의 원리) 양의 정수 N의 자릿수가 ⌊log10N⌋+1임을 설명하세요. 여기서 ⌊⌋는 정수부분을 뜻합니다. 답.10n≤N<10n+1과 자릿수가 n+1인 것이 같은 말이기 때문입니다. 풀이.N이 n+1자리 수라는 것은 10n≤N<10n+1이라는 뜻입니다. 예를 들어 세 자리 수는 100 이상 1000 미만입니다. 상용로그는 증가함수이므로 이 부등식에 로그를 취해도 방향이 유지되어 n≤log10N<n+1입니다. 즉 log10N의 정수부분이 정확히 n이므로 자릿수는 n+1입니다. 남는 것. 로그가 자릿수를 재는 도구라는 점이 중요합니다. 어떤 수가 몇 배 커졌는지가 아니라 몇 자리 늘었는지를 묻는 문제에서는 언제나 로그를 씁니다. 값의 범위가 아주 넓은 데이터를 로그축에 그리는 것도 같은 이유이며, 축의 한 칸이 자릿수 하나에 대응합니다.
심화 5. (증가 속도의 위계) 로그함수가 어떤 다항함수보다도 느리게 자람을 지수함수와의 관계로 설명하세요. 답. 지수함수가 다항함수보다 빠르므로 그 역함수인 로그함수는 다항함수의 역보다 느립니다. 풀이.y=log2x에서 x가 2배가 될 때마다 y는 정확히 1씩 늘어납니다. x를 1024배 키워야 y가 10 늡니다. 반면 y=x처럼 아주 느린 다항함수도 x가 1024배가 되면 값이 32배가 됩니다. 근본적인 이유는 13강 심화 3에 있습니다. a>1일 때 ay가 어떤 yn보다 빨리 커지므로, 같은 x에 도달하는 데 필요한 y는 로그 쪽이 훨씬 작습니다. 즉 log는 아주 천천히 자랍니다. 남는 것. 증가 속도의 위계는 로그, 다항, 지수 순입니다. 이 순서는 알고리즘의 계산량을 비교할 때 그대로 쓰이며, 입력이 두 배가 되어도 로그 시간 알고리즘은 한 단계만 늘어납니다. 큰 수를 다루는 계산에서 로그를 취해 작업하는 관행도 여기에서 나옵니다.
심화 6. (오해 깨기) "loga(M+N)=logaM+logaN이다"와 "logaNlogaM=logaNM이다"라는 두 주장을 판단하세요. 답. 둘 다 거짓이며 구체적인 수로 반례를 들 수 있습니다. 풀이. 첫째 주장에 a=2, M=N=2를 넣습니다. 왼쪽은 log24=2이고 오른쪽은 1+1=2로 우연히 같습니다. 그러나 M=2, N=6으로 바꾸면 왼쪽은 log28=3이고 오른쪽은 1+log26≈1+2.585=3.585로 다릅니다. 로그가 바꿔 주는 것은 곱셈이지 덧셈이 아닙니다. 둘째 주장에 a=2, M=8, N=2를 넣습니다. 왼쪽은 13=3이고 오른쪽은 log24=2로 다릅니다. 나눗셈을 뺄셈으로 바꾸는 것은 logaM−logaN이지 로그끼리의 나눗셈이 아닙니다. 로그끼리의 나눗셈은 밑변환 공식에서 밑을 바꾸는 역할을 합니다. 남는 것. 첫째 주장은 특정한 값에서 우연히 맞을 수 있어 더 위험합니다. 한 예로 확인해 보고 성립한다고 결론 내리면 안 되며, 일반적으로 증명하거나 반례를 찾아야 합니다. 24강에서 이 판단 절차를 정식으로 다룹니다.
import numpy as np
# 문제 11: log_4(32) = 5/2 를 밑변환으로 확인
print(round(np.log2(32) / np.log2(4), 10)) # 2.5
# 문제 16: (log_2 x)^2 - 3 log_2 x + 2 = 0 의 해가 2 와 4 인지 확인
for x in (2.0, 4.0):
t = np.log2(x)
print(x, round(t**2 - 3*t + 2, 10)) # 2.0 0.0 / 4.0 0.0
# 문제 18: 3^50 의 자릿수
n = 50 * np.log10(3)
print(int(n) + 1, len(str(3**50))) # 24 24
# 심화 6: log(M+N) != log M + log N 반례
M, N = 2.0, 6.0
print(round(np.log2(M + N), 4), round(np.log2(M) + np.log2(N), 4)) # 3.0 3.585
세 번째 줄에서 로그로 구한 자릿수와 파이썬이 정확히 계산한 350의 자릿수가 같습니다. 심화 4의 원리가 실제 값으로 확인됩니다. 마지막 줄은 심화 6의 반례를 그대로 재현합니다.