1.5.5 — 텐서의 교대화와 외적: ∧ 의 정의
교대화 Alt 와 텐서곱 ⊗ 를 조합해 외적 ∧ 를 정의한다. dxi∧dxj=−dxj∧dxi, dxi∧dxi=0 같은 핵심 등식이 모두 정의에서 따라 나온다.
본문이 말하는 것
α∈ΛpV∗, β∈ΛqV∗ 의 외적 (wedge product, exterior product) 은
α∧β:=p!q!(p+q)!Alt(α⊗β)∈Λp+qV∗
여기서 Alt 는 1.5.4 의 교대화 작용소. 정의에 등장한 계수 (p+q)!/(p!q!) 는 표준 규약 (다른 책은 다른 계수를 쓰기도 — 본 책은 이 규약).
기본 등식.
α∧β=(−1)pqβ∧α
(반가환 — p, q 의 곱 의 부호.) 특히 α∈Λ1 라면 α∧α=0.
결합 법칙.
(α∧β)∧γ=α∧(β∧γ)
좌표 표현. V∗ 의 기저 {dx1,…,dxn} 에서
dxi∧dxj(∂k,∂l)=δkiδlj−δliδkj
(2 × 2 행렬식). 마찬가지로 dxi1∧⋯∧dxip 가 p×p 행렬식 형식으로 작용. 임의 p-형식
ω=i1<⋯<ip∑ωi1…ipdxi1∧⋯∧dxip
— 사전 순서 인덱스로 인해 중복 없는 표현.
한 번 더, 천천히
(1) dxi∧dxj 의 행렬식 성격. 정의 dxi∧dxj(u,v)=uivj−ujvi=det(uiviujvj). 두 벡터의 i-j 평면에의 사영 의 부호 있는 면적. 외적이 부호 있는 부피의 일반화 라는 정체가 여기서 명확.
(2) ∧ 의 반가환성에서 α∧α=0 이 따라 나옴. α∈Λp 가 홀수 차수면 α∧α=−α∧α → α∧α=0. 짝수 차수면 α∧α 가 0 일 수도 아닐 수도 있다 (예: R4 의 ω=dx1∧dx2+dx3∧dx4 는 ω∧ω=2dx1∧dx2∧dx3∧dx4=0).
(3) Vector calculus 와의 연결. R3 에서 두 1-형식의 외적이 벡터 외적 과 대응. α=a1dx+a2dy+a3dz, β=b1dx+b2dy+b3dz 에 대해
α∧β=(a2b3−a3b2)dy∧dz+(a3b1−a1b3)dz∧dx+(a1b2−a2b1)dx∧dy
— 정확히 a×b 의 성분. 외적이 3차원 한정 인 이유는 Λ2R3∗≅R3 이라는 우연. 4차원 이상에서는 외적 대신 2-형식 자체를 사용해야 한다.
(4) 외대수의 계산. p-형식 + q-형식 = (p,q) 정보. 외적의 결과는 (p+q)-형식. n-차원 공간에서 Λ∗V∗=⨁pΛpV∗ 가 외대수 (exterior algebra) — 총 차원 2n. R4 라면 1+4+6+4+1=16=24.
파이썬으로 확인 — R4 위 외적 계산
이 코드의 메시지는 단순하다: R4 의 두 1-형식 α,β 의 외적 α∧β 가 2-형식 (6차원, (24)=6) 임을 행렬식 형식 으로 직접 계산. 그 위에 (α∧β)(u,v)=−(α∧β)(v,u) 와 α∧α=0 을 수치로 본다.
# R^4 위 1-형식 α, β. α ∧ β 의 6 성분 (i<j) 을 계산.
import numpy as np
# α = (1, 2, -1, 0.5) → α(v) = 1*v1 + 2*v2 - 1*v3 + 0.5*v4
alpha = np.array([1.0, 2.0, -1.0, 0.5])
beta = np.array([0.5, -1.0, 2.0, 1.0])
# α ∧ β 의 성분: (α ∧ β)_ij = α_i β_j - α_j β_i for i < j
# 6 인덱스 쌍: (1,2), (1,3), (1,4), (2,3), (2,4), (3,4)
pairs = [(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
labels = ['dx1∧dx2', 'dx1∧dx3', 'dx1∧dx4', 'dx2∧dx3', 'dx2∧dx4', 'dx3∧dx4']
ab_components = []
for (i, j), name in zip(pairs, labels):
c = alpha[i] * beta[j] - alpha[j] * beta[i]
ab_components.append(c)
print(f"(α ∧ β)_{name} = {c:.4f}")
# α ∧ α = 0 검증 (자기 자신과의 외적)
aa = [alpha[i] * alpha[j] - alpha[j] * alpha[i] for (i, j) in pairs]
print(f"\nα ∧ α 의 모든 성분: {aa} (= 0 기대)")
# (α ∧ β)(u, v) 와 (α ∧ β)(v, u) 의 부호 검증
u = np.array([1.0, 0.5, -0.5, 1.0])
v = np.array([-0.5, 1.0, 1.0, 0.0])
def wedge_eval(alpha, beta, u, v):
return (alpha @ u) * (beta @ v) - (alpha @ v) * (beta @ u)
ab_uv = wedge_eval(alpha, beta, u, v)
ab_vu = wedge_eval(alpha, beta, v, u)
print(f"\n(α∧β)(u, v) = {ab_uv:.4f}")
print(f"(α∧β)(v, u) = {ab_vu:.4f} (= -(α∧β)(u, v) 기대)")
print(f"합 = {ab_uv + ab_vu:.2e} (= 0 기대)")
이 결과는 외적의 반대칭성 과 행렬식 형식 을 명시적으로 확인한다. 1.6 의 미분형식이 이 같은 대수 위에서 점마다 정의된다는 그림이 자연스럽다.
다음 절(1.6.1)로 가는 다리
§1.5 까지의 텐서·외적 어휘는 벡터공간 한 점 의 대수 — 점-별. 다음 §1.6 은 그 대수를 다양체 전체 위에 부드럽게 깐다 — 코탄젠트 공간·1-형식·p-형식 그리고 그 위의 외미분. 여기서 푸앵카레 보조정리·스토크스 정리가 핵심 결과로 등장.