2026. 04. 30. · CK · 본문 보강 2026. 09. 08.

프로젝트 헤일메리를 읽고 시간 지연을 직접 계산해 봤다

읽기 전 요약

『프로젝트 헤일메리』를 읽으며 떠오른 시간의 차이를 등속 운동이라는 단순한 조건에서 계산한다. 광속의 90%부터 99.9%까지 로런츠 인자를 비교하고, 우주선에서 흐른 시간과 지구 기준 시간을 입력에서부터 구분하는 Python 예제를 제공한다. 왕복 여행·가속·빛의 전달 지연을 같은 현상으로 섞지 않으면서, 계산이 독서 감상에 남긴 질문을 다룬다.

앤디 위어의 『프로젝트 헤일메리』를 읽으며 우주선 안에서 보낸 시간과 지구에서 흐른 시간의 차이가 궁금했다. 멀리 이동했다가 돌아오는 이야기를 볼 때 나는 거리를 먼저 생각한다. 이 책을 읽을 때는 같은 사건을 기다리는 사람들의 달력이 얼마나 달라질지 생각하게 됐다.

소설의 결말이나 주요 발견은 여기서 설명하지 않는다. 아래의 속도와 기간은 물리 개념을 확인하기 위해 따로 정한 가정이다. 작품 속 우주선의 실제 항로와 가속 계획을 재현한 계산이 아니다. 책을 읽고 떠오른 감상을 쓰더라도 그 둘은 구분해야 한다.

처음 메모에는 광속의 99.9%로 우주선 시간 10년을 여행하면 지구에서 약 70년이 흐른다고 적었다. 잘못된 계산이었다. 등속 운동이라는 가정에서는 약 223.66년이다. 약 7.09라는 계수는 광속의 99%에 해당한다. 소수점 한 자리 차이가 크기 때문에 숫자를 다시 계산하고 조건을 붙였다.

먼저 누구의 시계인지 정하기

상대성 이론에서 움직임을 말하려면 무엇에 대한 움직임인지 정해야 한다. 우주 전체에서 절대적으로 정지한 관찰자를 고르는 방식으로 설명하지 않는다. 여기서는 지구를 기준으로 한 관성계를 근사적으로 두고, 그 좌표계에서 우주선이 일정한 속도 v로 움직인다고 가정한다.

우주선과 함께 움직이는 시계가 잰 경과 시간을 고유시간이라고 한다. 우주선 안의 사람에게 식사나 수면이 느린 영상처럼 보인다는 뜻은 아니다. 자신의 시계와 몸의 과정은 함께 진행한다. 다른 기준계의 시계와 비교할 때 차이를 말하는 것이다. Einstein Online의 시간 지연 설명

등속 구간에서 두 시간의 관계는 다음처럼 적을 수 있다. beta는 속도를 광속으로 나눈 비율이다. 90%를 계산할 때는 90이 아니라 0.9를 넣는다.

beta = v / c
gamma = 1 / sqrt(1 - beta²)

지구 기준 경과 시간 = gamma × 우주선 고유시간
우주선 고유시간 = 지구 기준 경과 시간 / gamma

어느 시간이 입력인지에 따라 곱하거나 나누는 방향이 바뀐다. 같은 10년이라도 지구 기준 10년과 우주선에서 잰 10년은 다르다. 코드의 매개변수를 그냥 time이라고 쓰면 이 차이를 놓치기 쉽다.

빛시계를 이용한 설명을 보면 움직이는 시계의 빛이 다른 관찰자에게 더 긴 경로를 이동하는 상황에서 시간 차이를 이해할 수 있다. 빛의 속도를 임의로 바꿔 그 차이를 없애지 않는다는 점이 핵심이다. 빛시계 사고 실험

속도별로 숫자를 비교하기

다음 표는 같은 등속 운동 가정에서 계산했다. 가속과 감속, 중력, 통신 신호가 도달하는 데 걸리는 시간은 포함하지 않았다. 숫자는 소수 둘째 자리에서 반올림했다.

광속 대비 속도로런츠 인자우주선에서 10년일 때 지구 기준지구 기준 10년일 때 우주선
90%2.2922.94년4.36년
95%3.2032.03년3.12년
99%7.0970.89년1.41년
99.9%22.37223.66년0.45년

우주선에서 10년이 지났다는 조건을 고정하면, 속도를 광속에 더 가깝게 잡을수록 지구 기준 기간이 길어진다. 반대로 지구 기준 10년을 고정한 마지막 열에서는 우주선 시간이 줄어든다. 같은 표에서 두 조건을 함께 보면 계산 방향을 확인하기 편하다.

99%와 99.9%가 비슷한 속도로 느껴지더라도 식의 분모는 그렇지 않다. 1 - beta²는 각각 0.0199와 0.001999다. 작은 분모의 제곱근으로 나누므로 계수가 크게 달라진다. 처음 원고의 실수도 이 두 속도의 결과를 혼동한 데서 드러났다.

이 표를 실제 우주여행의 기간표로 읽어서는 안 된다. 목표 속도에 도달하려면 가속해야 하고, 목적지에 머물려면 감속도 고려해야 한다. 최고 속도 하나에 전체 시간을 곱하는 계산은 속도가 달라지는 구간을 빠뜨린다.

입력을 검증하는 짧은 Python 코드

아래 코드는 비율을 입력받아 등속 구간의 시간 관계만 계산한다. 실수로 90을 넣거나 광속 이상의 값을 넣으면 오류를 낸다. 무한대나 숫자가 아닌 특수 부동소수점 값도 거부하도록 했다.

import math

def lorentz_factor(beta: float) -> float:
    if not math.isfinite(beta) or not 0 <= beta < 1:
        raise ValueError("beta must be finite and in [0, 1)")
    return 1.0 / math.sqrt(1.0 - beta * beta)

def earth_frame_years(ship_years: float, beta: float) -> float:
    if not math.isfinite(ship_years) or ship_years < 0:
        raise ValueError("ship_years must be finite and nonnegative")
    return ship_years * lorentz_factor(beta)

for beta in (0.9, 0.95, 0.99, 0.999):
    gamma = lorentz_factor(beta)
    print(f"{100 * beta:4.1f}%  gamma={gamma:.2f}  "
          f"earth={earth_frame_years(10, beta):.2f} years")

assert math.isclose(lorentz_factor(0), 1.0)
assert math.isclose(lorentz_factor(0.999), 22.3662720421)
assert math.isclose(earth_frame_years(0, 0.9), 0.0)

for invalid in (-0.1, 1.0, 90, float("nan"), float("inf")):
    try:
        lorentz_factor(invalid)
    except ValueError:
        pass
    else:
        raise AssertionError(f"invalid input accepted: {invalid}")

이 예제에서 가장 중요한 확인은 0을 넣으면 계수가 1이라는 점, 광속 이상은 허용하지 않는다는 점, 99.9%와 99%를 구분한다는 점이다. 실제 과학 계산에 쓰려면 단위와 오차, 극단적인 입력에서의 수치 안정성까지 더 검토해야 한다. 여기서는 독서 중 생긴 의문을 확인할 정도의 계산으로 한정한다.

코드를 실행할 때 출력이 맞는 것만 보지 않고 식에 넣은 조건도 읽어야 한다. 우주선의 고유시간을 입력하도록 만든 함수에 지구 기준 시간을 넘기면 문법상 정상적으로 실행돼도 내가 묻던 질문에 대한 답은 아니다.

서로 상대의 시계가 느리다고 하면 모순일까

두 관성 관찰자가 일정한 상대 속도로 지나갈 때는 서로 상대의 시계가 느리다고 기술할 수 있다. 여기서 어느 쪽이 우주의 진짜 정상 시계인지 정하지 않는다. 멀리 떨어진 사건을 동시에 취급하는 방식까지 함께 고려해야 한다.

출발한 사람이 되돌아와 같은 장소에서 시계를 비교하는 문제에는 여행 경로가 들어간다. 여행자는 방향을 바꾸는 등 하나의 관성계에 계속 머물지 않는다. 단순히 서로가 상대를 움직인다고 보니 나이가 같아야 한다는 논리로 전체 왕복을 계산할 수 없다. 여행하는 쌍둥이 설명

이 구분 때문에 나는 소설의 한 속도만 보고 인물의 귀환 나이를 단정하지 않겠다. 나이를 계산하려면 출발 나이와 우주선에서 흐른 전체 고유시간을 알아야 한다. 지구에서 더 많은 해가 지났다고 우주선의 인물이 그만큼 생물학적으로 늙은 두 번째 자신을 갖게 되는 것도 아니다.

이 글의 표는 여행 경로 전체를 주지 않는다. 일정 속도로 이동하는 구간의 두 경과 시간을 비교한 예시다. 방향 전환이나 체류 시간을 추가하려면 구간별 조건을 정한 뒤 각 구간을 계산해야 한다.

빛이 늦게 도착하는 현상과도 나누기

먼 곳에서 보낸 메시지가 늦게 도착하는 것은 빛과 전파가 유한한 속도로 이동하기 때문이다. 그 사람이 쓴 시계의 고유시간이 얼마나 흘렀는지와 메시지를 내가 언제 읽는지는 다른 질문이다. 화면에 보이는 시계의 변화에는 신호의 이동과 상대 운동에 따른 효과도 섞일 수 있다.

가상의 별이 지구 기준으로 10광년 떨어져 있고 그 거리 관계를 단순하게 고정한다면, 그곳에서 보낸 빛이 지구에 오는 데 10년이 걸린다. 이것은 우주선에서 10년을 보냈다는 조건과 같지 않다. 광년은 시간처럼 들리지만 거리를 나타내는 단위라는 점도 적어 둘 필요가 있다.

GPS를 예로 들 때도 속도에 따른 효과 하나로 전부 설명하면 안 된다. 위성항법의 시계 비교에는 상대 운동과 중력에 따른 효과를 함께 고려한다. 우주선의 등속 운동 예제를 GPS의 실제 보정식으로 그대로 사용할 수는 없다. 상대성과 위성항법 설명

계산을 고친 뒤에도 남는 독서 감상

내게 시간 지연이 정서적으로 무겁게 느껴진 이유는 함께 기다리는 사람들이 같은 기간을 보내지 않을 수 있다는 점이다. 멀리 떠난 사람에게 몇 년인 일이 남은 사람에게는 훨씬 긴 시간이 될 수 있다는 가정을 놓고 생각하면, 여행의 비용을 거리와 연료로만 설명하기 어렵다.

이것은 작품의 결말을 예고하거나 인물의 감정을 한 문장으로 확정하려는 설명이 아니다. 책을 읽은 내 쪽에서 생긴 질문이다. 돌아갈 장소가 남아 있다는 것과 같은 생활로 돌아갈 수 있다는 것은 내 감상에서 별개의 문제로 남았다.

일상에서 누군가는 바쁘게 살고 누군가는 천천히 산다는 비유를 붙일 수는 있다. 그러나 그 비유를 상대성 이론의 실제 시간 차이와 같은 현상으로 쓰지는 않겠다. 물리식은 내가 느끼는 조급함을 증명하지 않는다. 계산은 계산대로 정확히 두고, 그 계산을 읽으며 생긴 감정은 내 해석으로 남기고 싶다.

참고자료

프로젝트 헤일메리를 읽고 시간 지연을 직접 계산해 봤다 · iamlazyck