학산 가는 길

GIS
공개

2025-04-23

초록

산책로에서 발견한 걷기의 비대칭성.

일찍 들어온 날 학산 도서관에 가기로 했다.

대학 신입생 시절 대학로에 있는 학산기술도서관에 자주 가곤했다. 이과생들만 회원으로 받는 독특한 도서관인데, 시설도 좋고 도서구입 예산도 넉넉했던 것으로 기억한다. 내 기억이 맞다면 삼천리 자전거와 기아 자동차의 창립자 김철호 회장의 뜻을 기려 만든 도서관인데, 학산은 그의 호다. 창립 기념일에 갔더니 마당에서 맥주 파티를 여는데, 경품 추첨에 당첨되어 근사한 자전거 한대를 선물로 받았던 기억이 있다.

어느 날 저녁 산책 중에 네이버 지도를 보니, 근처에 학산도서관이라는 곳이 나온다. 익숙한 이름이라 찾아보니, 2002년에 평창동의 신축 건물로 이사왔고, 2008년에 학산도서관으로 이름을 바꾸고 평범한1 도서관이 되었다고 한다.

평일에만 문을 열고, 그나마도 6시면 닫아서 접근성은 거의 주민센터에 붙은 작은도서관 수준이다.2 산책로에서 멀리 떨어져 있지는 않지만 그림의 떡이다. 일찍 들어온 날 학산 도서관에 간다고하니, 마님이 같이 간다고 나선다.

산책로에서 돌아오는 길목에 있기 때문에, 오늘은 평소와는 반대방향으로 가기로 했다. 낮에 걷기에는 좀 더운 날씨다. 한참을 가다가 마님이 다음부터는 이방향으로 가지 말자고 한다. 오르막이 너무 길어서 힘들단다. 산책로를 거꾸로 다 돌 생각은 아니지만, “거꾸로 가나 바로 가나 제자리로 돌아올 거면 마찬가지 아닌가?” 하는 생각이 든다.

아니지. 혹시 비대칭인가?

평창동은 서울에서 고지대에 속하는데, 평창동 내에서도 오르내림이 좀 있는 편이다. 산책로도 100m 정도의 고도 변화가 있다. 짧지만 가파르게 올라간 후, 길고 완만하게 내려온다. 오늘은 반대 방향이니 길고 완만하게 오르는 것으로 시작한다. 두 경로의 오르내림은 순서만 다를 뿐 총량은 정확히 같아야 한다. 각 지점에서의 경사는 크기가 같고 부호만 반대다. 걷는 거리도 같다. 하지만 경사의 부호에 따라 속도가 대칭적으로 바뀌지 않는다면 소요 시간은 달라질 수 있다. 더 오래 걸린 길이 더 힘든 길이다.

찾아보니 토블러의 하이킹 함수(THF - Tobler’s Hiking Function)라는 것이 있다. 1993년에 토블러가 경사와 걷기 속도간의 관계를 지수 함수로 모델링한 것인데, 다음과 같은 관계를 발견했다.

\begin{equation*} W = 6 \exp(-3.5\Big|\frac{dh}{dx}+0.05\Big|) \end{equation*}

W 는 걷는 속도인데 km/h 단위다. h 는 고도, x 는 수평 거리다. 따라서 \frac{dh}{dx} 는 기울기가 된다. 더 익숙한 경사각 \theta 로 표현하면 이렇다.

\begin{equation*} \frac{dh}{dx} = \tan\theta \end{equation*}

양수는 오르막, 음수는 내리막이다. 그려보면 이렇다.

코드
import numpy as np
import matplotlib.pyplot as plt

plt.style.use("ggplot")

theta = np.arange(-60, 60, 1)
W = 6 * np.exp(-3.5 * np.abs(np.tan(theta * np.pi / 180) + 0.05))
fig, ax = plt.subplots()
ax.plot(theta, W)
ax.grid(True)
ax.set_title("Tobler's Hiking Function")
ax.set_xlabel("slope (deg)")
ax.set_ylabel("speed (km/h)")
plt.show()

역시 비대칭이다. 함수 자체는 좌우 대칭인데, 대칭 축이 0\degree 가 아니라 -2.86\degree3 에 놓여있다. 즉 평지에서보다, 살짝 내리막일 때 최대 20% 정도 더 빨리 걷는다.

이런 비대칭으로 인해 산책 시간이 어떻게 변할지 대략 계산해보자. 다음과 같은 모습의 지형을 가정한다.

코드
x = [0, 1, 4]
h = [0, 0.1, 0]
fig, ax = plt.subplots()
ax.plot(x, h)
ax.set_xlabel("horizontal distance (km)")
ax.set_ylabel("elevation (km)")
ax.set_aspect(10)
plt.show()

수평 거리로 1km 동안 고도가 100m 정도 상승하는 오르막길이고, 그 다음 수평 거리로 3km 동안 내리막길이다.4

코드
from math import exp, sqrt


def speed(dh, dx):
    return 6 * exp(-3.5 * abs(dh / dx + 0.05))


def time(dh, dx):
    W = speed(dh, dx)
    distance = sqrt(dh * dh + dx * dx)
    return distance / W * 60  # minutes


time(0.1, 1.0) + time(-0.1, 3.0)  # 정방향
time(-0.1, 1.0) + time(0.1, 3.0)  # 역방향
pass

정방향으로 갈 때는 49분, 역방향으로 갈 때는 52분이 걸린다.5 히말라야 등반하는 것이 아니니 엄청난 차이가 나지는 않는다. 이 차이가 과연 몸으로 느낄만한 차이일까?

또 하나 떠오르는 의문. 토블러의 하이킹 함수는 -2.86\degree 를 중심으로 대칭이다. 정말 그럴까? 실험해보고 알려드리겠다.

각주

  1. 특색 없는?↩︎

  2. 은퇴하면 여기에서 사서 하고싶다. 환상 적인 근무 조건이다.↩︎

  3. \tan^{-1}(-0.05)↩︎

  4. 그림에서는 잘 보이도록 세로축을 10배로 늘렸다. 그래서 오르막의 경사가 45\degree 처럼 보이지만, 사실은 5.7\degree 다.↩︎

  5. 가파른 오르막을 먼저 오르는 것이 항상 더 빠를까? 그렇지 않다. 가령 고도 상승이 500m 되는 가벼운 등산으로 문제를 바꾸면 반대의 결과가 나온다.↩︎