▶ 목차 보기
왜 로그 함수를 사용할까?
로그는 컴퓨터는 물론 계산기조차 없던 1600년대 초반에 만들어진 개념입니다. 그때는 큰 수끼리 곱하고 나누는 계산이 매우 번거롭고 시간이 오래 걸렸기 때문에 '이걸 어떻게 쉽게 할 수 있을까?'하고 고민하던 '존 네이피어'라는 사람이 로그를 만들었던 거죠.
'존 네이피어'의 의도대로 로그 함수는 큰 수를 비교적 간편하게 계산하기 위한 도구로 널리 활용되고 있습니다.
로그를 생각할 때는 단짝인 지수를 빼놓을 수 없는데요. 지수를 거꾸로 계산한 것이 로그이기 때문입니다(수학적으로는 지수 함수의 역함수).
2³ = 8는 2를 3번 곱해서 8이 되는 과정 주목하고 있다면
log₂(8) = 3는 2를 몇 번 곱해야 8이 되는지 그 지수 3에 주목을 하고 있는 개념인 것이죠.
쉽게 비유하자면,
- 지수는 "건물을 올리는 법"
- 로그는 "그 건물이 몇 층인지 알아내는 방법"
이라고 할 수 있습니다.
지수는 큰 수의 성장이나 변화를 단순하게 나타내는 역할을 하고, 로그는 그 성장이나 감소를 덧셈/뺄셈으로 바꿔서 계산을 쉽게 만들어주는 도구로 활용됩니다.
그래서 오늘날에도 로그는 지수적으로 변화하는 다양한 현상을 다룰 때 자주 활용됩니다.
로그 함수는 실생활에서 어떻게 활용되고 있을까?
천문학 분야의 로그 함수 활용
로그 함수가 처음 알려지기 시작했을 때 가장 먼저 활용한 사람들은 당시의 천문학자들이었습니다.
당시는
행성의 궤도 계산,
주기 계산(공전 주기, 회합 주기),
천문표 제작,
천문각도 측정
등을 하기 위해서는 엄청나게 많은 곱셈과 나눗셈을 직접 수작업으로 해내야 했습니다. 하지만 로그를 활용해 곱셈과 나눗셈을 덧셈, 뺄셈으로 단순화할 수 있었고 천문학자들의 부담이 크게 줄게 되었죠.
당시에는 로그 함수로 계산을 했다기보다는 로그 함수의 성질을 이용했지만 직접 로그를 계산하기 보다는 네이피어와 브릭스가 만든 로그표를 활용해서 계산을 했다는 것이 더 정확한 표현이죠.
현대 천문학에서도 로그는 여전히 널리 활용되고 있습니다.
별의 밝기(광도 등급, Apparent Magnitude)
별의 밝기는 로그 스케일을 사용해서 등급(magnitude)으로 나타냅니다. 1등급 별과 6등급 별의 밝기 비율은 약 100배차이입니다. 5등급 차이가 약 100배의 광도 차이를 의미하는 것이죠. 이렇게 밝기 차이가 지수적으로 커지니까 로그를 사용해서 표현합니다.
스펙트럼 분석
별이나 은하에서 나오는 빛(스펙트럼)의 밝기나 에너지는 log 스케일의 그래프로 그려 분석합니다. 만약 로그 스케일을 활용하지 않으면 빛의 세기가 너무 밝은 부분은 엄청나게 크고 어두운 부분은 거의 안 보일 정도로 작아서 분석이 어려워요.
로그 스케일을 사용하면 엄청 큰 값은 조금 작게 줄이고 엄청 작은 값은 조금 키워주는 효과가 있기 때문에 한눈에 비교하기 쉬워 집니다.
적색편이(redshift)와 거리 관계
멀리 있는 은하일수록 우리 눈에는 더 붉게 보입니다(적색편이). 그래서 적색편이를 보면 그 은하가 얼마나 멀리 있는지 알 수 있죠.
멀리 있는 은하일수록 적색편이 값이 커지고 거리도 훨씬 멀어지기 때문에 단순히 그래프를 그리면 가까운 은하는 모여 있고 먼 은하는 멀리 뚝 떨어져서 패턴이 잘 안 보이게 되죠.
그래서 적색편이나 거리를 로그로 바꿔서 크거나 작은 값을 보기 좋게 줄여서 그래프 등에서 패턴이 잘 보이게 조절을 합니다.
블랙홀 및 은하 중심질량 계산
블랙홀의 무게(질량)는 눈으로 볼 수 없기 때문에 과학자들은 블랙홀 주변에 있는 별들이 얼마나 빠르게 움직이는지를 보고 블랙홀이 얼마나 무거운지를 계산합니다.
그런데 별들의 속도가 빠른 곳과 느린 곳의 차이가 너무 커서 그냥 그래프로 그리거나 계산을 하면 보기도 힘들고 식 역시 복잡해 지기 때문에 로그 함수를 사용합니다.
복잡한 계산은 컴퓨터가 대신해줄 수 있겠지만 패턴을 이해하고 방향을 설정해야 하는 것은 인간이기 때문에 로그 함수는 데이터의 숨겨진 패턴을 발견하고 해석하는 데 여전히 필수적인 도구입니다.
항해 및 항법(Navigation) 로그 함수 활용
천문학자들 다음으로 로그 함수를 많이 사용한 사람들은 항해사들이었습니다. 1600년대의 항해사들은 배의 위치를 계산하기 위해서 하늘의 별이나 태양을 이용했어요.
문제는 별과 태양의 각도를 측정한 다음에 거리, 속도, 시간 같은 걸 다 계산해야 하는데 삼각형 공식이나 '시간 x 속도', '거리 ÷ 시간' 같은 곱셈과 나눗셈이 엄청나게 많았던 것입니다.
배의 위치를 계산하는 건 생존이 걸린 문제이기 때문에 빠르게 계산해야 했고 또 정확해야 했습니다. 그래서 계산을 단순화해 줄 수 있는 로그의 존재는 꼭 필요한 것이었죠.
당시의 항해사들도 역시 로그 함수의 성질을 이용했지만 직접 로그를 계산하기 보다는 네이피어와 브릭스가 만든 로그표를 활용해서 계산을 했다는 것이 정확한 표현입니다.
현대의 항해사들은 더 이상 손으로 계산할 필요가 없이 GPS 등에 의존해 항해를 하지만 항해사들이 사용하는 다양한 장비들 안에서는 여전히 로그 함수가 활용되고 있습니다.
GPS 신호의 세기 측정
바다 위에서 GPS의 정확성은 매우 중요하겠죠? 그래서 GPS의 신호가 믿을 만한지 지속적으로 GPS 신호의 세기를 측정할 필요가 있습니다.
신호는 거리가 두 배 멀어지면 신호 세기는 4배 약해지고 세 배 멀어지면 9배 약해지는 것처럼 지수적으로 변화합니다(신호의 세기가 거리의 제곱에 반비례).
신호의 세기를 단순히 1,000,000, 100,000, 1,000 등의 숫자로 쓰면 숫자가 너무 커지거나 작아져서 판단이 어려워 집니다. 그래서 로그를 사용해서 표현하면 숫자가 보기 쉽게 줄어서 GPS 신호를 체크하고 판단하기 쉬워집니다.
GPS의 "신호 대 잡음 비율(SNR)" 계산
단순히 신호의 세기만 측정해서는 신호의 품질을 체크하는데 한계가 있겠죠? 그래서 신호와 잡음의 비율을 의미하는 신호 대 잡음 비율(SNR)을 지속적으로 측정합니다.
비슷하게, 신호나 잡음 세기는 너무 큰 수나 너무 작은 수가 나올 수 있기 때문에 로그를 씌어서 파악하기 쉬운 숫자(dB)로 만드는 것입니다.
SNR이 낮으면 GPS 오차가 커질 가능성이 높아지기 때문에, 이 값을 기준으로 GPS 신뢰도를 판단합니다.
GPS 거리 계산
GPS는 기본적으로 '시간 × 빛의 속도=거리' 라는 식으로 거리를 구하지만 여러가지 환경으로 인해서 오차가 발생하게 됩니다.
예를 들면
GPS 신호가 지구 대기를 지나면서 느려지거나 굴절 됨
잡음(Noise) 발생
위성의 시계 오차
수신기 오차
그래서 GPS는 항상 정확한 거리가 아니라 조금 틀린 거리가 나올 가능성이 있습니다. 이런 오차를 최소화하기 위해서 칼만 필터(Kalman Filter)와 같은 통계적인 보정 도구를 사용합니다.
다행히 컴퓨터가 계산을 대신해 주지만 컴퓨터 역시 아주 작은 소수점의 숫자는 0으로 처리해버리는 언더플로우 같은 문제에 직면하게 됩니다. 그래서 로그를 활용해 곱셈을 덧셈으로 바꿔 계산을 더 안전하게 처리합니다.
칼만 필터(Kalman Filter) 기본 공식에는 로그 함수가 포함되지 않지만 변형된 칼만 필터나 확률 모델에서 로그를 함께 사용하는 경우가 많기 때문에 오차를 줄이는데 있어서 로그 함수는 매우 중요한 역할을 합니다.
관성항법장치(INS)
관성항법장치(INS)는 센서(가속도계, 자이로스코프)를 이용해서 배, 비행기, 로켓, 미사일 등의 위치, 속도, 방향을 계산하는 기계를 말합니다. GPS 없이도 스스로 위치를 계산할 수 있는 장치이죠.
관성항법장치(INS)는 가속도를 계속 적분해서 속도를 구하고 이 속도를 적분해서 위치를 구하는데 이 과정에서 아주 작은 오차가 지속적으로 발생합니다.
문제는 이 오차가 처음에는 조금 틀린 위치였는데 나중에는 이 오차가 2배, 4배, 8배 이렇게 지수적으로 커져서 위치 측정을 크게 틀릴 가능성이 높아집니다.
그래서 로그를 활용해서 지수적으로 커지는 성질을 로그를 사용해 곱셈 관계를 덧셈 관계로 바꾸어 선형적으로 만들면 오차를 더 쉽게 보정할 수 있습니다.
관성항법장치(INS)만으로는 오차 누적 문제를 피하기 어렵기 때문에 보통 GPS, 레이더, 초음파 등 다른 기기와 함께 활용됩니다.
※ 로그 함수는 항법에서 뿐만 아니라 측량학, 물리/역학 등 다양한 분야에서 오류 보정에 활용되고 있습니다.
산도(pH)의 로그 함수 활용
용액이 산성인지 나타내는 산도(pH)도 로그를 사용해서 나타냅니다. 산도는 일반적으로 0~14까지의 값으로 나타내는데 숫자 하나의 차이가 산성의 강도 10배 차이를 의미합니다.
산도(pH)는 수소 이온의 농도에 의해서 결정되는데 농도 값은 너무 작고 큰 숫자인 경우가 많아서 농도를 그대로 쓰면 비교가 어려워지기 때문에 로그를 통해 값을 표현합니다.
소리의 세기 (데시벨, dB)의 로그함수 활용
데시벨은 소리의 세기를 나타내는 단위입니다. 우리가 듣는 소리는 아주 약한 소리부터 엄청 큰 소리까지 범위가 아주 넓습니다.
그런데 우리가 소리를 들을 때는 직선적으로(예: 1, 2, 3...) 느끼는 것이 아니라 몇 배 커졌는지 그 비율에 반응합니다.
예를 들면 우리 귀에는 '1에서 10으로 커진 소리'와 '10에서 100으로 커진 소리'가 비슷하게 들리는 거죠.
소리의 단위가 매우 작은 수부터 큰 수까지 분포해 있기도 하고 우리 청각의 인지 방식과 유사하기도 하기 때문에 로그를 활용한 데시벨로 소리의 세기를 표현합니다.
※ 데시벨이 활용되는 실제 사례
① 소음 측정
② 음향 엔지니어링
③ 이어폰 & 헤드폰 & 스피커 등의 안전 가이드 작성
④ 소음 규제 & 환경 보호
⑤ 자동차 & 항공기 엔지니어링(부품의 소음 수준 측정 등)
⑥ 건강과 의료(청력 검사 등)
음악 이론 (옥타브, 음정)의 로그 함수 활용
예를 들어:
440Hz → 880Hz (1옥타브 위)
880Hz → 1760Hz (또 1옥타브 위)
이렇게 같은 간격에서 배율이 일정한 구조는 로그 스케일과 같은 구조입니다. 그래서 음의 높낮이는 로그 함수와 깊은 관련이 있습니다.
우리가 흔히 사용하는 12음계(도, 도#, 레, ... 시)는 1옥타브를 12의 반음으로 나눈 것입니다. 그래서 '12반음'이라고 부르기도 하죠.
반음 올라갈 때마다 주파수는 약 1.0595배 증가하게 됩니다. 12번을 올라가면 주파수가 정확히 2배가 됩니다.
따라서 12음계도 로그 스케일로 표현하면 덧셈 간격이 되어서 음정 간격은 주파수로 보면 곱셈 관계지만, 로그로 바꾸면 덧셈 간격처럼 일정해집니다.
음악의 음정은 수학을 보고 만든 게 아니었는데, 나중에 보니 로그 함수와 정확히 맞아떨어진다니 정말 신기하지 않나요?😊🎶
지진 규모(지진학)의 로그 함수 활용
지진 규모는 지진이 나면 땅이 흔들리는 정도를 말합니다. 지진 규모는 지진파의 크기(진폭)를 측정해서 숫자로 나타낸 것입니다. 그런데 이 지진파의 크기는 너무 크거나 작을 수 있어서, 로그를 사용해 보기 쉬운 숫자로 바꾸어 표현합니다.
지진의 규모(리히터 규모)는 그 크기가 1이 증가하면 진동은 10배 강하게 느껴지고 방출되는 에너지 양은 약 31.6배 더 높아집니다.
※ 리히터 규모와 모멘트 규모
예전에는 진폭만을 기준으로 한 리히터 규모(Richter Scale)를 사용했지만, 지금은 훨씬 더 정확한 모멘트 규모(Mw)가 사용됩니다.
이 규모는 단층 면적, 지층이 얼마나 밀렸는지(변위), 그리고 암석의 강도(저항력)까지 고려합니다. 모멘트 규모도 값이 매우 커질 수 있기 때문에, 로그 함수를 사용해 보기 쉬운 숫자로 표현합니다.
방사성 붕괴와 반감기 (핵물리학)의 로그 함수 활용
방사성 물질은 시간이 지나면 조금씩 양이 줄어드는 성질이 있는데 이걸 방사성 붕괴라고 부릅니다. 그리고 이 성질에 따라 방사성 물질이 절반이 되는데 걸리는 시간이 반감기입니다.
방사성 물질이 시간이 지남에 따라 절반씩 줄어드는 현상은 지수 함수처럼 변화하는 것이죠? 그래서 반감기를 구하기 위해서는 로그 함수를 활용해서 계산할 수 있습니다.
컴퓨터 알고리즘 (이진 탐색, 트리 구조)의 로그 함수 활용
알고리즘은 데이터를 효율적으로 다룰 수 있는 방법을 말합니다.
예를 들어 '이진 탐색' 알고리즘을 적용해보기 위해서는 우선 순서대로 정렬되어 있는 데이터가 필요합니다. 여기서는 1에서 100까지의 수를 순서대로 나열한 데이터를 사용해 보겠습니다.
예: [1, 2, 3, 4, ..., 100]
여기서 만약 71이라는 수의 위치를 찾으려면 최악의 경우 100번이나 확인하는 작업이 필요합니다.
1, 2, 3, 4, … 이런 식으로
최대 100번 확인
하지만 이진 탐색을 활용하면
①먼저 가운데 숫자 50을 확인
⇨71은 50보다 크니까 50 뒤쪽만 확인한다
②뒤 쪽 가운데 숫자 75를 확인
⇨71은 75보다 작으니까 앞쪽만 확인한다
③앞 쪽 가운데 숫자 63을 확인한다
⇨71은 63보다 크니까 뒤쪽만 확인한다
④ 이제 그 다음 가운데 숫자 69를 확인
⇨ 71은 69보다 크니까 또 그 뒤쪽만 확인
⑤ 가운데 숫자 72를 확인
⇨ 71은 72보다 작으니까 그 앞쪽만 확인
⑥ 드디어 71을 확인!
⇨ 찾았다!
이런 방식으로 이진 탐색은 매번 절반씩 줄여가며 확인하기 때문에 100개 중에서 원하는 숫자의 위치를 찾는데 최대 7번 정도만 확인하면 찾아낼 수 있게 됩니다!
이렇게 ‘절반씩 줄여가는 과정’은 ‘지수 함수’의 반대인 ‘로그 함수적 변화’에 해당하기 때문에, 이진 탐색 알고리즘은 로그 함수와 관련이 있습니다.
알고리즘을 활용할 때 얼마나 많은 작업(비교, 계산)을 해야 하는지 알려주는 단위를 시간 복잡도라고 합니다.
이 시간 복잡도는 문제 크기와 연산 횟수의 관계를 수학적으로 표현한 것이며, 이진 탐색에서는 그 관계가 로그 함수처럼 증가하기 때문에 O(log n)이라고 표현합니다.
함께 읽으면 좋은 글