← 실계산 조각 여섯 편
이 화면은 이 네 종목 이야기입니다● 시세 불러오는 중

기준일을 100으로 놓고 그린 선입니다. 통화가 서로 달라 지수로 겹쳤습니다.

같은 방정식, 다른 정밀도입니다 — 위 화면이 보여주듯 시계가 하루 +38.5µs 씩 밀리는 걸 보정하지 않으면 위치는 하루에 11km 씩 어긋납니다. 주가가 이 기술 때문이라고는 말하지 않습니다.
가우스-뉴턴 삼변측량 실계산 · 상대성 보정은 실상수로 재계산

GPS — 틀린 시계로 정확한 위치를 푸는 기계

위성은 내 위치를 모릅니다 — 그저 자기 위치와 원자시계 시각을 방송할 뿐입니다. 폰은 전파의 도착 시간차로 거리를 재는데, 폰 시계는 싸구려라 1마이크로초 틀리면 300m가 틀어집니다. 해법이 우아합니다: 시계 오차 자체를 미지수로 놓고 위성을 하나 더 받아서 함께 풉니다. 아래는 그 방정식을 실제로 푸는 화면이고 — 버튼 하나로 아인슈타인의 상대성 보정을 꺼서 위치가 흘러가는 것도 볼 수 있습니다.

지도 드래그 = 내(폰) 위치 옮기기

수신기 데스크

측위 오차
풀린 시계 오차
특수상대성 (속도)
일반상대성 (중력)
합계 드리프트
거리 오차로 환산
위 상대성 숫자는 애니메이션이 아니라 실상수 계산이다 — GM, 광속, 지구 반지름, 궤도 반지름(26,560km)만 넣고 페이지가 직접 셈한다. 보정을 끄면 위성 시계들이 하루 +38μs씩, 궤도 차이만큼 서로 다르게 흘러간다★.

풀고 있는 방정식

ρi = |x − si| + b + εi 위성 i까지의 의사거리. ρ는 폰이 잰 값, s는 위성 위치(방송받음), x는 내 위치(모름), b는 폰 시계 오차 × 광속(모름), ε는 대기·잡음. 모르는 게 셋(x, y, b)이니 식이 셋 이상 필요하다 — 위성을 하나 더 받는 이유.
minx,b Σi ( |x − si| + b − ρi거리가 딱 맞는 점은 없다(잡음 때문). 그래서 어긋남의 제곱합이 가장 작은 점을 찾는다. 위성이 많을수록 식이 남아돌고, 남는 식이 잡음을 눌러준다.
Δ = (JᵀJ)−1 Jᵀ r ,   Ji = [ (x−si)/di ,  (y−si)/di ,  1 ] 가우스-뉴턴. 거리 식이 휘어 있어 한 번에 못 풀고, 지금 위치에서 접선으로 근사해 보정량 Δ를 구하고 옮기기를 12번 반복한다. J의 앞 두 칸은 위성을 바라보는 방향, 마지막 칸의 1이 시계 오차 — 모든 위성에 똑같이 실리는 열이다.
Δt/t = −v²/2c² + GM(1/r지구 − 1/r궤도)/c² 앞이 특수상대성(빨라서 느려짐 −7.2μs/일), 뒤가 일반상대성(높아서 빨라짐 +45.7μs/일). 이 페이지는 GM·c·반지름만 넣고 이 식을 직접 계산해 +38.5μs/일을 얻는다 — 적어 넣은 값이 아니다.

측위 한 번에 벌어지는 일 · 5단계

STEP 1

위성이 방송한다

위성은 자기 위치와 자기 시각만 뿌린다. 내가 누군지, 몇 명이 듣는지 모른다. 그래서 GPS는 수신자가 몇억 명이어도 용량 문제가 없다.

s = satPos(i)              // 방송된 위성 좌표
d = |x_true − s|           // 전파가 실제로 간 거리
STEP 2

거리에 오차가 얹힌다

폰이 재는 건 순수한 거리가 아니라 거리 + 내 시계 오차 + 대기 지연이다. 그래서 이름이 '거리'가 아니라 의사(pseudo)거리다.

drift = REL ? 0             // 보정 ON
      : NET*1e-6*ecc[i]*day*C  // OFF: 위성마다 다르게
rho[i] = d + drift + noise
STEP 3

야코비 — 어느 쪽으로 밀까

지금 추정 위치에서 각 위성을 바라보는 단위벡터를 세운다. 이게 "이쪽으로 1m 가면 그 위성까지 1m 멀어진다"는 지도다. 마지막 칸 1은 시계 몫.

J = [dx/d, dy/d, 1]
r = d + b − rho[i]         // 지금 얼마나 어긋났나
STEP 4

정규방정식 3×3

위성이 몇 개든 3×3 행렬 하나로 압축된다(3차원 실물은 4×4). 가우스 소거로 풀면 위치 보정과 시계 보정이 한꺼번에 나온다.

A += Jᵀ·J ;  g += Jᵀ·r
Δ = solve3(A, g)           // [dx, dy, db]
STEP 5

12번 접근

보정량만큼 옮기고 다시 잰다. 몇 번이면 밀리미터 아래로 붙는다 — 잡음이 0이면 이 페이지의 검증기가 오차 0.000m를 확인한다.

for (it = 0; it < 12; it++) {
  x −= Δ[0]; y −= Δ[1]; b −= Δ[2];
}
RESULT

덤으로 얻는 시계

풀고 나면 위치뿐 아니라 b(내 시계가 얼마나 틀렸는지)도 손에 쥔다. 이것이 GPS가 전세계 시각 동기화의 뼈대인 이유다 — 증권거래소도 기지국도 이 b를 쓴다.

내 시계 오차 = b / c        // 초 단위

두 세계 나란히 — 같은 위성, 같은 잡음, 상대성만 다름

보정 ON · 아인슈타인 적용
초록 점이 진짜 위치를 맴돈다. 흔들림은 대기 잡음뿐.
보정 OFF · 고전 물리만
같은 순간, 같은 잡음. 상대성 보정만 빼면 점이 떠내려간다.

두 칸은 같은 난수를 나눠 쓰는 두 개의 독립 계산입니다 — 잡음이 아니라 상대성이 차이를 만든다는 걸 보이려고, 매 측위마다 잡음을 한 번만 뽑아 양쪽에 똑같이 먹입니다. 왼쪽이 제자리를 지키는 동안 오른쪽만 흘러가면, 그 차이는 오직 그 항 때문입니다.

여섯 가지 궁금증

1

위성은 시각을 방송한다

GPS 위성 신호의 내용물은 "나는 여기 있고, 지금은 이 시각"이 전부다. 폰은 그 전파가 늦게 도착한 만큼(빛은 1나노초에 30cm) 거리를 재고, 여러 위성의 거리 구슬을 교차시켜 나를 찾는다. 위성엔 원자시계가 실려 있다 — 이 기계 전체가 시계 장사다.

2

폰 시계는 싸구려인데 왜 되나

수신기 시계 오차를 미지수 b로 승격시키고 위성을 하나 더 받는다. 2차원 화면에선 (x, y, b) 세 미지수라 위성 3개★, 실제 3차원에선 4개다. 그래서 GPS는 위치와 함께 원자시계급 시각을 공짜로 뱉는다 — 증권거래소·기지국이 GPS로 시간을 맞추는 이유.

3

아인슈타인이 내비 안에 있다

위성 시계는 빨라서 느려지고(특수상대성 −7μs/일) 높아서 빨라진다(일반상대성 +46μs/일) — 합계 +38μs/일. 보정 없이는 거리 오차가 하루 11.5km씩 자란다. 위 버튼으로 꺼보라 — 초록 점이 진짜 위치에서 흘러 떠내려간다.

4

전부 똑같이 틀리면 GPS는 눈치 못 챈다

반전 하나 — 모든 위성이 정확히 같은 양만큼 틀리면, 그 오차는 폰의 시계 미지수 b가 통째로 흡수해서 위치는 멀쩡하다. 진짜 문제는 위성마다 궤도가 달라 서로 다르게 틀리는 것★ — 그 어긋남은 어디로도 숨을 수 없어 위치를 민다. 오차의 세계에선 '함께 틀림'보다 '다르게 틀림'이 치명적이다.

5

위성이 몰려 있으면 부정확하다

거리 구슬이 비스듬히 교차하면 교점이 길게 늘어난다 — 측량의 DOP(기하 희석). 위성 수를 줄여보면 오차 타원이 늘어나는 게 보인다. 도심 빌딩숲에서 GPS가 튀는 건 하늘이 좁아 위성이 한쪽에 몰리기 때문이기도 하다.

6

요즘 폰의 "이중주파수 GPS"

남은 큰 오차는 전리층이 전파를 늦추는 것 — 늦어지는 정도가 주파수마다 달라서, L1·L5 두 주파수로 같은 위성을 재면 지연을 역산해 지울 수 있다. 퀄컴·브로드컴·유블럭스 칩이 하는 일이고, 폰 스펙의 '이중주파수 GPS'가 이것이다. 오차 미터급 → 수십cm급★.

네 대가 필요한 이유를 돌려 본다

위성 하나가 알려 주는 것은 거리 하나뿐입니다. 그러면 내 위치는 그 위성을 중심으로 한 구면 어딘가가 됩니다. 구 두 개면 원, 세 개면 점 두 개, 그리고 시계 오차까지 풀려면 넷째가 필요합니다.

네 대가 필요한 이유를 돌려 본다끌어서 회전 · 휠로 확대 · 손 떼면 다시 돈다
위성 네 대 거리 구면 반지름 = 전파가 온 시간 내 위치
구가 겹치는 자리가 후보입니다. 셋이면 후보가 둘로 줄고, 넷째가 시계 오차를 지웁니다 — 위 판이 푸는 미지수 네 개(x·y·z·시계)가 이것입니다.

돌려 보면 구들이 얇은 껍질인 것이 보입니다. 전파가 오는 데 걸린 시간에 빛의 속도를 곱한 값이 그 반지름이고, 시계가 1마이크로초 틀리면 반지름이 300m 틀립니다 — 그래서 넷째 위성이 시계를 대신 풀어 줍니다.

위성 배치와 구 크기는 관계를 보이기 위한 것이고 실제 궤도 축척이 아닙니다.

실물은 이렇게 생겼다

이 판의 요점은 시계입니다. 정확한 시계가 실제로 어떻게 생겼는지 보면 왜 수신기가 자기 시계를 안 믿는지 바로 납득됩니다.

실험실에서 연구원 둘이 세슘 원자시계를 들여다보고 있다. 사람 키만 한 세로 진공관에 파란 광섬유가 빽빽하게 감겨 있다.

① 정확한 시계는 이만하다

미국 표준기술연구소의 세슘 원자시계입니다. 가운데 세로로 선 은색 통이 본체고, 파란 광섬유와 케이블이 사방으로 뻗어 있습니다. 연구원 둘이 붙어 들여다보는 크기입니다.

이게 이 판의 출발점입니다 — 이만한 물건을 주머니에 넣을 수는 없습니다. 그래서 위성에는 비슷한 급을 싣지만, 당신 수신기의 시계는 싸구려입니다. 그 오차를 아예 미지수 하나로 놓고 위치와 함께 푸는 게 이 판의 계산이고, 그래서 미지수가 넷이라 위성이 넷 이상 필요합니다. 기본값에서 풀린 시계 오차는 −0.01 μs, 거리로는 2 m어치입니다.

그리고 위성 시계는 가만 놔두면 틀립니다. 빨리 돌아서 느려지는 몫이 −7.2 μs/일, 중력이 약해 빨라지는 몫이 +45.7 μs/일, 합쳐서 +38.5 μs/일입니다. 거리로 바꾸면 하루 11.5 km — 상대성이론을 넣지 않으면 GPS 는 하루 만에 못 쓰게 됩니다.

사진 미국 표준기술연구소(NIST) · 퍼블릭 도메인 · 위키미디어 커먼즈