별 셋은 왜 예측할 수 없는 춤을 출까?
중력 법칙은 아주 정확히 알려져 있으니, 처음 위치와 속도만 알면 별들의 움직임은 언제까지나 계산할 수 있을 것 같지요. 실제로 별이 둘이면 그래요. 같은 타원을 영원히 돕니다. 그런데 소설·드라마 『삼체』의 제목이기도 한 별 셋이 되면 이야기가 달라집니다. 여기서는 똑같이 시작하되 한 별의 처음 위치만 아주 조금 옮긴 쌍둥이 판을 나란히 돌립니다. 처음엔 둘이 완전히 겹쳐 보이는데, 과연 언제까지 같은 춤을 출까요?
모델은 이렇게 움직입니다
- 별 셋(무게 1, 1, 그리고 슬라이더로 바꾸는 셋째 별)이 서로 끌어당기는 힘(중력: 거리의 제곱에 반비례)만으로 3D 공간에서 움직입니다. 처음엔 가운데에서 약 1 떨어진 삼각형 꼴로 놓여 제자리에서 돌 만한 빠르기쯤으로 돌기 시작하지만, 삼각형이 고르지 않아 곧 서로 얽힙니다. 판마다(밤하늘 #번호) 삼각형 모양과 빠르기가 조금씩 다릅니다.
- 쌍둥이 판: 판 A와 똑같이 시작하되 별 1의 처음 위치만 아주 조금(기본 0.01, 별 사이 거리의 1%) 옮긴 판 B를 같은 규칙으로 동시에 돌립니다. 3D에서 판 A는 진한 별과 굵은 꼬리, 판 B는 흐린 별과 가는 꼬리입니다.
- 비교로 별 둘(무게 1, 1)도 같은 처음 차이로 쌍둥이를 돌립니다. 둘은 거리 2에서 출발해 늘 같은 타원(한 바퀴에 시간 6.84)을 돕니다.
- 지표: 갈라진 때 = 두 판에서 같은 별끼리의 위치 차가 1(처음 가운데까지 거리쯤)을 처음 넘은 때. 튕겨 나감 = 가장 단단히 묶인 두 별에게서 남은 별이 시작 거리의 6배보다 멀어지고, 다시 돌아올 수 없는 빠르기로 멀어지는 중일 때. 에너지 오차 = 계산이 정확한지 점검하는 값(정확하면 전체 에너지가 그대로여야 합니다).
- 길이·시간·무게는 모두 이 모델의 단위(중력 상수 1)입니다. 한 판은 시간 80(화면 4,000걸음)이고, 실제 별의 관측값이나 예측이 아니라 이 모델의 예시입니다.
직접 돌려보기
① 쌍둥이 밤하늘의 세 별 3D
진한 별과 굵은 꼬리가 판 A, 흐린 별과 가는 꼬리가 판 B입니다. 처음엔 하나처럼 겹쳐 보이다가 어느 순간 꼬리가 둘로 갈라집니다. 아래 "보기: 별 둘"로 바꾸면 별 둘의 쌍둥이는 끝까지 거의 겹쳐 있는지 보세요.
드래그로 돌려 보기 · 휠이나 두 손가락으로 확대 · 가만히 두면 카메라가 천천히 돕니다(끌 수 있어요) · 휴대폰에서 세로로 쓸면 페이지가 내려갑니다. 카메라는 아직 함께 있는 별들을 따라갑니다. 3D는 같은 계산 결과를 입체로 그린 것이고, 새 숫자를 만들지 않아요.
② 두 판은 얼마나 벌어졌나
재생이 지난 시점까지만 그립니다. 세로축은 로그 눈금이라 한 칸 오를 때마다 10배입니다. 별 셋의 차이(주황)는 계단을 오르듯 칸을 넘어 불어나고, 별 둘의 차이(회색)는 아주 천천히 늘어요. 보라 점선(1)을 넘는 때가 "갈라진 때"입니다.
③ 별마다 가운데에서 얼마나 멀리 있나
재생이 지난 시점까지만 그립니다. 실선은 판 A, 점선은 판 B입니다. 처음엔 실선과 점선이 겹치다가 갈라지고, 별 하나가 튕겨 나가면 그 선만 위로 계속 올라갑니다.
④ 처음 차이를 줄이면 얼마나 오래 맞출까 (집계: 미리 돌린 120판)
기본 설정에서 처음 위치 차이만 0.001~0.1의 다섯 값으로 바꿔 별 셋은 밤하늘 24개씩(가운데 값과 범위 막대), 별 둘은 한 궤도(시간 2,000까지)를 돌렸습니다. 재생과 상관없이 미리 계산한 집계입니다. 두 축 모두 로그 눈금이에요. 한 판(시간 80) 안에 안 갈라진 판은 80으로 셌습니다(0.001에서 3판, 0.003에서 1판).
⑤ 셋째 별의 무게에 따라 누가 튕겨 나가나 (집계: 미리 돌린 72판)
셋째 별의 무게를 0.3배·1배·3배로 바꿔 밤하늘 24개씩 판 A를 시간 80까지 돌렸습니다. 막대는 그 안에 별 하나가 튕겨 나간 판의 비율, 막대 아래는 그중 튕겨 나간 별이 가장 가벼운 별이었던 판 수입니다. 시간 80 안에는 튕겨 나가지 않은 판이 더 많았어요.
이 결과가 말하는 것, 말하지 않는 것
말하는 것:
- 별 둘이면 처음 위치가 조금 달라도 끝까지 거의 같은 길을 돌지만, 별 셋이면 1%의 차이가 결국 전혀 다른 춤이 됐어요.
- 셋이 서로를 번갈아 잡아당기며 가까이 스칠 때마다 작은 차이가 몇 배씩 불어나요. 이 모델 첫 판에선 차이 0.01이 시간 18.8에 1을 넘었고, 쫓겨나는 별까지 달라졌어요(판 A는 별 2, 판 B는 별 3).
- 그렇다면 오래 맞히려면? 처음을 100배 정확히 재도 별 셋은 9.2에서 42.5로만 늘었고, 별 둘은 15.2에서 1,343.1로 거의 100배 늘었어요. 별 셋은 '언제까지 믿을지'도 함께 봐야 해요.
상세 설명
말하는 것: 기본 설정(별 무게 1·1·1, 처음 위치 차이 0.01)의 첫 판에서 두 판의 차이는 0.01에서 시간 5에 0.097, 10에 0.24, 15에 0.60, 20에 1.4로 불어나 시간 18.8에 갈라졌습니다. 그 뒤 판 A에서는 별 2가 시간 51.7에, 판 B에서는 별 3이 시간 56.9에 튕겨 나가, 처음 위치를 1%만 바꿨는데 누가 쫓겨나는지까지 달라졌습니다. 같은 처음 차이로 돌린 별 둘은 시간 80 끝에도 차이가 0.39였습니다. 밤하늘 24개의 가운데 값으로 보면 처음 차이 0.1이면 시간 9.2, 0.03이면 20.3, 0.01이면 29.9, 0.003이면 37.8, 0.001이면 42.5에 갈라졌습니다. 처음 차이를 100배 줄여도 맞히는 시간은 33.3(10배마다 평균 16.7)만 늘었고, 별 둘은 15.2에서 1,343.1로 거의 100배 늘었습니다. 셋째 별이 0.3배일 때는 24판 중 6판, 3배일 때는 5판에서 별 하나가 튕겨 나갔고 모두 가장 가벼운 별이었습니다(같은 무게일 때는 3판). 처음 거리를 0.6·1·1.6으로 늘리면 갈라지는 시간 가운데 값은 14.3·29.9·58.6이었습니다. 계산 점검: 기본 설정 24판에서 에너지 오차는 최대 0.096%, 별 둘 한 바퀴 시간은 6.8400으로 이론값 6.8403과 맞았습니다.
말하지 않는 것:
- 별 둘과 셋의 대비, 처음 차이를 줄일 때 늘어나는 시간은 이 시뮬레이션이 직접 보여 준 거예요. 다만 중력 상수 1인 무차원 장난감 모델이라 실제 별이나 삼중성계의 관측·예측이 아니에요.
- 예측할 수 없다는 건 규칙이 무작위라는 뜻이 아니에요. 규칙은 정해져 있지만 처음을 무한히 정확히 알 수 없어서 먼 미래가 갈려요. 컴퓨터의 작은 계산 오차도 같은 식으로 불어나요.
- 충돌·별의 진화·상대성 효과·주변 천체는 빠져 있어요. 튕겨 나간 판은 24판 중 3~6판뿐이라 '가장 가벼운 별이 쫓겨난다'는 비율은 대략적인 예시예요.
상세 설명
말하지 않는 것: 이 모델은 중력 상수 1인 무차원 장난감 모델이고, 실제 별이나 삼중성계의 관측값·예측이 아닙니다. 별은 크기 없는 점(아주 작은 소프트닝)이고 충돌·합쳐짐·별의 진화·상대성 효과·주변의 다른 천체는 없습니다. "예측할 수 없다"는 것은 규칙이 무작위라는 뜻이 아닙니다. 규칙은 완전히 정해져 있지만, 처음 상태의 아주 작은 차이가 불어나 처음을 무한히 정확히 알지 않는 한 먼 미래가 갈린다는 뜻입니다. 컴퓨터 계산의 작은 오차도 같은 식으로 불어나므로, 갈라진 뒤의 궤적 하나하나는 "이렇게 될 수도 있는 한 가지 모습"으로 보아야 합니다. 시간 80 안에는 튕겨 나가지 않은 판이 더 많았고, 튕겨 나간 판 수(3~6판)는 작아서 비율은 대략적인 예시입니다. 숫자는 모두 이 프로젝트가 정한 시작 배치에서 나온 값입니다.
이론적 근거와 구현 메모
- 모델의 뿌리: 뉴턴의 중력 법칙으로 별 둘의 움직임은 타원이라는 깔끔한 답이 나오지만, 별 셋은 일반적인 공식 답이 없다는 것이 오래된 "세 천체 문제"입니다. 푸앵카레가 1890년 무렵 이 문제를 연구하며, 처음 조건의 작은 차이가 크게 불어나는 움직임(오늘날 카오스라고 부르는 것)을 처음 보여 줬다고 알려져 있어요. 또 셋이 얽히다 보면 결국 하나가 튕겨 나가고 둘이 짝으로 남는 일이 많고, 튕겨 나가는 쪽은 가장 가벼운 별인 경우가 많다고 알려져 있어요.
- 핵심 가정과 수식: 별 i의 가속도
ai = Σj mj (xj − xi) / (r2 + ε2)3/2(G = 1, 소프트닝 ε = 0.001 × 시작 거리). 적분은 속도 베를레(velocity-Verlet, kick-drift-kick)이며, 화면 한 걸음(시간 0.02)을 가장 가까운 두 별의 "서로 도는 시간"√(r³/(mi+mj))의 0.004배 이하로 잘게 쪼갭니다(가까이 지날수록 잘게). 처음 배치: 별마다 각도 120°±17°, 거리 0.85~1.15, 위아래 ±0.15, 무게가 같은 정삼각형이 제자리에서 돌 빠르기의 약 1.05배(±15%) 회전 + 작은 흔들림, 그다음 전체 무게중심과 운동량을 0으로 맞춥니다. 별 둘은 거리 2, 이심률 0.5 타원의 가장 먼 점에서 출발합니다. 차이가 시간에 따라 지수적으로(일정한 시간마다 몇 배씩) 불어나는 정도를 물리학에서는 랴푸노프 지수로 잽니다. ④의 기울기로 보면 이 모델의 별 셋은 차이가 10배 되는 데 시간 약 16.7이 걸린 셈입니다. - 이 프로젝트의 단순화: 별은 크기 없는 점이고 무게·거리·시간은 이 프로젝트가 정한 무차원 값입니다. 충돌·합쳐짐, 별의 진화, 일반 상대성 효과, 다른 천체·은하의 힘은 넣지 않았습니다. 처음 배치(시드에 따라 조금씩 다른 삼각형과 빠르기)는 셋이 금방 흩어지지 않고 한동안 얽히도록 고른 설정이며, 첫 판(밤하늘 #1)은 갈라짐과 튕겨 나감이 둘 다 보이는 배치를 고른 것입니다. 튕겨 나감의 기준(시작 거리의 6배, 묶이지 않음)도 이 프로젝트의 정의입니다.
- 이론값과 시뮬레이션:
node tools/validate-threebody.js(시드 고정)로 확인합니다. 별 둘의 한 바퀴 시간은 시뮬레이션 6.8400, 케플러 법칙의 이론값2π√(a³/(G M))= 6.8403으로 맞습니다. 전체 운동량은 계산 내내 0(10−13 수준)이고, 에너지 상대 오차는 기본 첫 판 0.012%, 기본 설정 24판 최대 0.096%였습니다(가까이 지날 때 가장 커짐). 별 둘의 차이는 처음 차이에 거의 비례해 늘어(0.03에서 49.7, 0.003에서 447.1: 약 9배) 원래 예상대로 규칙적이었고, 별 셋은 처음 차이를 10배 줄일 때마다 갈라지는 시간이 거의 일정하게(평균 16.7) 늘어 차이가 지수적으로 불어난다는 설명과 같은 방향이었습니다. - 더 읽을거리: Valtonen, Karttunen (2006), 『The Three-Body Problem』, Cambridge University Press.
- 이 프로젝트가 직접 설계한 단순화 구현이며 특정 논문의 수치를 재현한 것은 아닙니다. 판 A·B와 별 둘의 쌍둥이(모두 네 판)를 같은 걸음으로 함께 계산합니다. ① 3D는 계산 결과를 그대로 그리며, 한 걸음 전과 지금 위치 사이를 이어 그려 부드럽게 보일 뿐 결과에 영향이 없습니다(모델의 위아래 축을 화면 위아래로). 꼬리는 최근 700걸음(휴대폰 350걸음)의 위치이고, 뒤의 작은 별들과 바닥 원판 선은 장식입니다. ④⑤는 기본 설정으로 미리 돌린 집계라 슬라이더를 바꿔도 달라지지 않습니다.