1.1.1 — 뉴턴 역학: 한 줄 방정식이 깔고 앉은 다섯 가지 가정
1.1.1 — 뉴턴 역학: 한 줄 방정식이 깔고 앉은 다섯 가지 가정
는 한 줄이지만, 이 한 줄을 문장으로 풀면 다섯 개의 가정이 줄줄이 끌려 나온다. 그 가정들을 한 번 더 직시하면, 책이 1.1.2 부터 손대는 拘束이 어디서 등장하는지가 보인다.
본문이 말하는 것
원서 1.1.1 절은 개의 질점(point particle)으로 이루어진 계의 운동방정식
를 전제 로 깔고 시작한다. 여기서 은 번째 질점의 위치벡터, 은 그 질점의 질량, 는 그 질점에 작용하는 합력이다. 우변의 힘은 시간과 모든 질점의 위치·속도의 함수, 즉 로 적힌다. 본문은 이 식을 증명 의 대상이 아니라 출발점 으로 둔다 — 뉴턴 역학의 공리다.
핵심은 한 줄 더 있다. 위 식이 결정하는 것은 2차 상미분방정식의 초기치 문제 다. 시각 에서의 위치 와 속도 를 주면, 그 뒤의 운동 가 유일하게 결정된다 (충분한 정칙성 가정 하에).
한 번 더, 천천히
식을 문장으로 풀어 보면 다섯 개의 가정이 줄줄이 끌려 나온다.
(1) 위치공간은 이다. 모든 질점의 위치는 같은 3차원 유클리드 공간 의 점이다. 거리·각도가 정의되고, 좌표를 잡으면 의 세 실수로 적힌다. 곡면 위의 운동이나 회전체의 자세는 이 가정으로는 적기 어색하다 — 이 사실이 1.1.2 의 拘束 이 등장하는 자리다.
(2) 시간은 한 줄의 매개변수 이다. 절대 시간이라는 뉴턴의 가정이 여기에 숨어 있다. 좌변의 는 에 대한 두 번 미분이고, 모든 관성계 관측자가 같은 를 공유한다고 본다. 이 가정의 한계를 본격적으로 마주하는 곳은 解析力学 II 의 상대론적 역학이다.
(3) “질점” 의 정의가 있다. 부피 0, 회전 자유도 0 인 추상적 점이다. 실제 입자(예: 야구공)는 부피·자세·내부 자유도를 가지지만, 1.1.1 은 그 모두를 없다고 친다. 강체(rigid body)·연속체로의 일반화는 본권 후반부의 과제다.
(4) 힘 는 주어진 함수다. 위 식 우변은 좌변과 독립적 으로 주어졌다고 가정한다. 마찰력처럼 운동에 의존하는 힘도 함수 형태로 명시되면 OK. 단 — 1.1.3 에서 등장할 拘束力 (constraint force) 은 미리 주어지지 않는다. 운동의 결과로 결정되어야 하는 미지의 힘이다. 이 차이가 분석역학의 핵심 동기다.
(5) 좌표계는 관성계(inertial frame)다. 회전·가속하는 좌표계에서는 좌변·우변에 겉보기 힘 (코리올리·원심력) 이 끼어든다. 책의 뒷부분은 이 가정도 좌표 자유로운 형식 — 다양체와 공변미분 — 으로 풀어버리지만, 1.1.1 시점에서는 그저 고정된 관성좌표계 에서 본 그림이다.
이 다섯을 정리해 두면, 다음 절 1.1.2 의 拘束条件と配位空間 이 왜 바로 다음에 등장해야 하는가 가 자연스러워진다. (1) 의 가정 — 위치공간이 이다 — 이 깨지는 순간, 우리는 拘束 의 언어를 빌려야만 한다.
파이썬으로 확인 — 중력장 아래 입자
이 코드의 메시지는 단순하다: 뉴턴 식은 “지금” 의 6개 숫자를 “미래의 모든 순간” 의 위치로 옮기는 함수 다.
균일 중력장 () 아래에서 비스듬히 던진 입자의 궤도를, 수치 적분 결과와 해석해를 나란히 두고 확인한다.
# 균일 중력장 아래 입자: m*x_ddot = F = -m*g*z_hat
# 초기조건 6개 (위치 3 + 속도 3) → 궤도가 유일하게 결정됨을 확인한다.
import numpy as np
from scipy.integrate import solve_ivp
g = 9.81
m = 1.0 # 임의의 양수. 아래에서 m 이 좌·우변에서 상쇄됨을 본다.
def rhs(t, state):
# state = [x, y, z, vx, vy, vz]
x, y, z, vx, vy, vz = state
Fx, Fy, Fz = 0.0, 0.0, -m * g # 힘은 m 에 비례 (무거운 입자는 더 세게 끌린다)
ax, ay, az = Fx / m, Fy / m, Fz / m # 가속도는 m 에 무관 (m 이 사라진다)
return [vx, vy, vz, ax, ay, az]
# 초기조건: 원점에서 (10, 0, 10) m/s 로 발사
state0 = [0.0, 0.0, 0.0, 10.0, 0.0, 10.0]
sol = solve_ivp(rhs, (0.0, 2.5), state0, dense_output=True,
rtol=1e-9, atol=1e-12)
t = np.linspace(0, 2.5, 200)
x, _, z, _, _, _ = sol.sol(t)
# 해석해와 비교: x(t) = vx0 * t, z(t) = vz0 * t - 0.5 g t^2
x_exact = 10.0 * t
z_exact = 10.0 * t - 0.5 * g * t**2
print(f"max |x_numeric - x_exact| = {np.max(np.abs(x - x_exact)):.2e}")
print(f"max |z_numeric - z_exact| = {np.max(np.abs(z - z_exact)):.2e}")
# 기대 출력 (구체 값은 RK45 의 적응 스텝에 따라 미세 차이):
# max |x_numeric - x_exact| = ~1e-14 (x 는 1차 다항이라 사실상 기계 엡실론)
# max |z_numeric - z_exact| = ~1e-7
이 결과는 scipy 의 RK45 가 뉴턴 식에 충실하다 — 즉 식이 결정 하는 그 궤도를 그대로 따라간다 — 는 사실의 작은 증거다. 분석역학이 손대는 것은 이 결정성 자체가 아니라, 결정성을 가장 짧은 식 으로 적기 위한 좌표·구조의 선택이다.
다음 절(1.1.2)로 가는 다리
위 가정 (1) — 위치공간이 이다 — 이 깨지는 가장 흔한 경우가 拘束 이다. 단진자의 추는 길이 인 막대에 매달려 있어 을 항상 만족한다. 비드는 굽은 철사 위에서만 움직인다. 강체는 모든 점 사이 거리를 보존한다. 이런 경우 의 모든 점이 가능한 것이 아니라, 일부 부분집합 — 配位空間 (configuration space) — 만이 허용된다. 1.1.2 는 그 부분집합이 어떻게 정의되는지, 그리고 그 공간 위에서 운동을 적으려면 어떤 어휘가 필요한지를 묻는다.