What should it even mean, to multiply two vectors?
수는 곱할 수 있습니다. 그런데 벡터 두 개는요? 내적은 방향을 버리고, 외적은 3차원 밖에선 죽고, 성분별 곱은 좌표계를 바꾸면 부서집니다. "제대로 된 곱셈 하나 만들자"는 순진한 고집을 끝까지 밀어붙이면 — 사원수가 튀어나오고, 외적이 은퇴하고, 곡률 공식의 분자가 정체를 밝히고, 마지막엔 기하 대수라는 큰 그림이 나타납니다. 곱셈 하나 정의하러 갔다가 수학 한 채를 얻어 오는 이야기.
덧셈은 쉽습니다 — 화살표를 이어 붙이면 되죠. 문제는 곱셈. 흔히 배우는 후보가 셋 있는데, 저마다 아쉬움이 있습니다.
그럼 "좋은 곱셈"의 조건을 적어 봅시다. 욕심은 소박합니다 — 분배법칙과 결합법칙이 성립하고(그래야 "대수"를 할 수 있으니), 벡터의 길이 정보를 잃지 않으면 좋겠어요. 가장 겸손한 요구로 이렇게 둡니다:
이 한 줄이 어디까지 우리를 끌고 가는지 — 그게 이 글의 전부입니다.
\(\mathbb R^3\)의 단위벡터를 \(x,y,z\)라 하죠(정규직교). 요구 조건에서 곧장 \(x^2=y^2=z^2=1\). 그런데 조건은 모든 벡터에 적용돼야 합니다. \(x+y\)는 길이가 \(\sqrt2\)니까:
\[ (x+y)^2 = x^2 + xy + yx + y^2 = 2 + (xy+yx) \overset{!}{=} 2 \quad\Longrightarrow\quad \boxed{\,xy = -yx\,} \]곱셈을 정의한 적도 없는데, 서로 수직인 벡터끼리는 순서를 바꾸면 부호가 뒤집힌다는 규칙이 강제로 따라 나옵니다. 이제 아무 벡터 둘을 곱해 보죠. \(u=u_1x+u_2y+u_3z\), \(v=v_1x+v_2y+v_3z\)를 분배법칙으로 펼치고, \(x^2=1\)류와 \(xy=-yx\)류로 정리하면:
\[ uv = \underbrace{(u_1v_1+u_2v_2+u_3v_3)}_{\text{내적!}} \;+\; \underbrace{(u_1v_2-u_2v_1)\,xy + (u_2v_3-u_3v_2)\,yz + (u_3v_1-u_1v_3)\,zx}_{\text{외적의 성분과 똑같은 계수들}} \]놀랍죠. "길이만 지켜 달라"고 했을 뿐인데 내적이 공짜로 튀어나오고, 그 옆에 외적의 세 성분과 똑같은 계수를 단 정체불명의 물건 \(xy,\ yz,\ zx\)가 서 있습니다. 이 곱을 기하곱(geometric product)이라 부릅니다.
저 \(xy\)는 벡터도 스칼라도 아닌 새 물건입니다. 정체를 캐 보죠. 제곱부터:
\[ (xy)^2 = xyxy = -xxyy = -1. \]제곱해서 \(-1\)! \(yz,\ zx\)도 마찬가지입니다. 그리고 서로 곱해 보면 — \(i=yz,\ j=zx,\ k=yx\)로 두는 순간:
\[ i^2=j^2=k^2=ijk=-1. \]1843년 해밀턴이 더블린의 다리에 새겼다는 사원수의 관계식 그대로예요. 해밀턴이 15년을 헤매며 "발명"한 사원수가, 여기서는 \(v^2=|v|^2\) 한 줄에서 계산 결과로 발견됩니다. (2차원에서 같은 놀이를 하면 \(\{1,\,xy\}\)만 남고 \((xy)^2=-1\) — 이번엔 복소수가 나옵니다. 허수 \(i\)의 정체는 "평면 조각"이었던 거죠.)
아래 곱셈표를 직접 눌러 보세요. 기호 8개 \(\{1,\ x,y,z,\ xy,yz,zx,\ xyz\}\)가 곱셈에 대해 완전히 닫혀 있습니다 — 규칙은 "같은 글자 만나면 \(1\), 이웃 글자 바꿀 때마다 부호 \(-\)" 둘뿐이에요.
\(xy,\ yz,\ zx\)에 이름을 줍시다: 기저 바이벡터(basis bivector). 기하학적 정체는 이렇습니다 — 벡터가 "방향 있는 길이 조각"이라면, 바이벡터는 "방향 있는 넓이 조각"입니다. \(xy\)는 \(xy\)-평면 위에서 \(x\)에서 \(y\)로 도는 단위 넓이, \(yx\)는 반대로 도는 넓이라 \(-xy\)죠.
점의 좌표가 각 축에 드리운 그림자의 길이이듯, 두 벡터 \(u,v\)가 만드는 평행사변형의 좌표는 세 좌표평면에 드리운 그림자의 부호 있는 넓이입니다. 그게 바로 2장에서 나온 세 계수예요:
\[ u\wedge v \;=\; A_{xy}\,xy + A_{yz}\,yz + A_{zx}\,zx, \qquad |u\wedge v|^2 = A_{xy}^2+A_{yz}^2+A_{zx}^2 \]— 넓이에도 피타고라스가 성립하는 셈이죠. 바이벡터는 어느 평면에서, 얼마나 크게, 어느 방향으로 도는가라는 최소 정보만 담습니다. 그래서 "평면에서 일어나는 일" — 특히 회전 — 의 자연 서식지가 됩니다(7장).
이제 곱 \(uv\)를 다시 보면, 두 부분은 각각 대칭·반대칭 성분입니다:
\[ u\cdot v = \tfrac12(uv+vu), \qquad u\wedge v = \tfrac12(uv-vu), \qquad \boxed{\;uv = u\cdot v + u\wedge v\;} \]반대칭 부분 \(u\wedge v\)가 웨지곱(wedge product) — 방금 본 그 바이벡터입니다. 외적과 성분이 같지만 결정적 차이가 있어요. 외적은 평면 대신 수직 벡터를 반환하는데, "평면에 수직인 방향이 딱 하나"인 건 3차원의 우연입니다(4차원엔 무한히 많고, 2차원엔 없죠 — 그래서 외적은 3차원과, 팔원수 덕에 7차원에서만 존재합니다). 웨지곱은 평면 그 자체(바이벡터)를 반환하므로 모든 차원에서 작동합니다. 3차원에서 둘의 관계는 쌍대일 뿐: \(u\times v = -I\,(u\wedge v)\), \(I=xyz\).
2차원에서 직접 만져 보세요. 2차원의 기하곱 \(uv\)는 스칼라 + \(xy\)항, 즉 복소수가 됩니다 — \(uv=|u||v|\,e^{\theta\,xy}\), 회전과 확대를 담은 그 복소수요.
웨지곱이 "어디에 쓰이나"의 첫 답. 곡선의 곡률 공식을 나란히 놓고 보죠. 평면 곡선 \(f(t)=(x(t),y(t))\)와 공간 곡선 \(r(t)\)에 대해:
\[ \kappa_{2D}=\frac{|x'y''-y'x''|}{(x'^2+y'^2)^{3/2}}, \qquad \kappa_{3D}=\frac{|r'\times r''|}{|r'|^3}. \]분자가 낯익지 않나요? \(x'y''-y'x''\)은 정확히 \(f'\wedge f''\)의 \(xy\)-성분이고, \(|r'\times r''|\)은 \(|r'\wedge r''|\)입니다(쌍대라 크기가 같으니까). 즉 두 공식은 원래 한 공식이었어요:
지금까지 만든 체계를 정리하면 — 스칼라 \(1\)개, 벡터 \(x,y,z\) 세 개, 바이벡터 \(xy,yz,zx\) 세 개, 그리고 최고 등급 트라이벡터 \(xyz\)(방향 있는 부피!) 한 개, 합쳐서 \(1+3+3+1=2^3=8\)차원의 대수입니다. 이것을 기하 대수(geometric algebra), 학술적으로는 클리퍼드 대수 \(\mathrm{Cl}(3)\)라 부릅니다. (이름 주의: 대수기하 (algebraic geometry, 다항식의 영점을 연구)와는 전혀 다른 분야입니다. 어순이 운명을 가르죠.) 클리퍼드가 1878년, 그라스만의 웨지와 해밀턴의 사원수를 한 살림으로 합치며 만들었습니다. 뭐가 되는지 예시 퍼레이드로 보여드릴게요.
단위 바이벡터 \(B\)(\(B^2=-1\))와 각 \(\theta\)에 대해 로터 \(R = e^{-\theta B/2} = \cos\tfrac\theta2 - B\sin\tfrac\theta2\)를 만들면, 임의 벡터가 샌드위치 곱으로 회전합니다:
\[ v' = R\,v\,\tilde R \qquad (\tilde R\text{은 곱 순서를 뒤집은 } R). \]축이 아니라 평면(바이벡터)으로 회전을 지정하니 2차원이든 100차원이든 같은 공식입니다("회전축"은 3차원의 사치예요 — 4차원 회전엔 축이 없습니다). 게임 엔진이 쓰는 쿼터니언 회전 \(qvq^{-1}\)은 정확히 이 로터의 3차원 버전이고요. 더 예쁜 사실: 단위벡터 \(a,b\)에 대해 \(R=ba\)로 두면 그게 벌써 로터입니다 — "\(a\)에 반사, \(b\)에 반사"(반사는 \(v\mapsto -nvn\))를 이으면 두 벡터 사잇각의 두 배만큼 회전하니까요. 회전이 왜 존재하는지까지 곱셈이 설명해 줍니다.
규칙을 살짝 비틀면 특수상대성이 나옵니다. 시간을 진짜 축 \(t\)로 넣되 계량의 부호를 다르게 — \(t^2=+1,\ x^2=y^2=z^2=-1\)(시공간 대수, \(\mathrm{Cl}(1,3)\)). 그러면 시공간 바이벡터 \(tx\)는:
\[ (tx)^2 = txtx = -t^2x^2 = +1 \]— 제곱이 \(-1\)이 아니라 \(+1\)입니다! 로터의 \(\cos\)·\(\sin\)이 \(\cosh\)·\(\sinh\)로 바뀌어 \(R=e^{-\varphi\,tx/2}=\cosh\tfrac\varphi2-\sinh\tfrac\varphi2\,tx\)가 되고, 샌드위치 곱 \(v'=Rv\tilde R\)은 정확히 로렌츠 부스트가 됩니다(\(\varphi\)는 라피디티, 속도는 \(v/c=\tanh\varphi\)). 공간 회전과 부스트가 같은 한 공식이고, 광속 불변(\(t^2-x^2\) 보존)은 로터가 길이를 지키는 것의 시공간 버전일 뿐이에요. 헤스테네스는 여기서 더 나아가 디랙 방정식을 복소수 없이 실수 시공간 대수로 다시 썼고, 전자의 \(g=2\)가 기하에서 자연스럽게 나옵니다.
차원을 두 개 더 얹어 \(e_0\)(원점)·\(e_\infty\)(무한원점)라는 널 벡터(\(e_0^2=e_\infty^2=0\))를 추가하면 — 등각 기하 대수 — 마법이 한 번 더 일어납니다. 점뿐 아니라 원·직선·구·평면 자체가 대수의 원소가 돼요. 원 \(s\)는 벡터 하나로 표현되고, "점 \(X\)가 원 위에 있다"는 그냥 \(X\cdot s=0\)입니다. 그리고 결정타 —
회전·평행이동에 더해 구면 반전(등각 변환)까지 전부 샌드위치 곱으로 통일되기 때문에, 로봇 역기구학(팔꿈치 위치 = 구 두 개의 교차원!)·컴퓨터 비전·분자 기하학에서 실전 도구로 쓰입니다. 아래는 장난감이 아니라 진짜 CGA 계산입니다 — 원을 끌어 보세요.
비슷한 수로 \(e_0^2=0\)인 축퇴 축 하나만 얹으면(사영 기하 대수, \(\mathrm{Cl}(3,0,1)\)) 이번엔 평행이동이 로터가 됩니다. 회전+평행이동을 묶은 모터(motor) \(M\) 하나로 강체 운동 전체가 \(v'=Mv\tilde M\) — 나사(스크류) 운동까지 그대로죠. 게임 엔진이 캐릭터 피부를 접합부에 자연스럽게 붙일 때 쓰는 이중 사원수(dual quaternion) 스키닝이 바로 이 모터의 다른 이름입니다(PGA의 짝수부). 회전 보간(slerp)·짐벌락 없는 자세 표현도 이 체계의 공짜 부산물이고요.
가장 최근의 무대는 신경망 안입니다. 2023년 NeurIPS의 기하 대수 트랜스포머(GATr)는 PGA의 16차원 멀티벡터를 토큰으로 쓰고 기하곱을 레이어에 내장해, 회전·평행이동·반사에 저절로 등변(equivariant)인 트랜스포머를 만들었습니다. \(n\)체 시뮬레이션, 동맥 혈류의 벽전단응력 추정, 로봇 동작 계획에서 성능을 보였고, 대형 의료 메시용 확장(LaB-GATr)도 나왔죠. 1878년 클리퍼드의 곱셈 규칙이 150년 뒤 신경망의 귀납 편향으로 일하는 중입니다.
벡터 셋을 웨지하면 \(u\wedge v\wedge w = \det\big(u\ \ v\ \ w\big)\,xyz\) — 계수가 정확히 행렬식, 기하적으로는 평행육면체의 부호 있는 부피입니다. 행렬식이 "부피 배율"인 이유가 여기서는 정의 그 자체가 되죠. 그리고 \(I=xyz\)는 \(I^2=-1\)인 유사스칼라로, 곱하면 "수직 보완"으로 보내는 쌍대 연산이 됩니다(외적이 그 특수 사례였고요).
출발은 초라했습니다 — "\(v^2=|v|^2\)만 지켜지는 곱셈 하나 주세요." 그 한 줄이 반교환 규칙을 강제했고, 내적과 웨지곱을 한 몸(\(uv=u\cdot v+u\wedge v\))으로 묶었고, 복소수와 사원수를 "발명품"에서 "발견물"로 바꿨고, 외적을 은퇴시켰고, 곡률 공식을 통일했고, 회전·반사·행렬식·맥스웰·스핀을 한 체계에 담더니 — 계량 부호 하나 바꿔 상대성의 부스트를, 널 벡터 두 개 얹어 도형의 곱셈(CGA)을, 마지막엔 트랜스포머의 토큰(GATr)까지 삼켰습니다.
수학에서 좋은 정의는 이렇게 스스로 자랍니다. 요구는 최소로, 결과는 최대로. 사원수·팔원수가 나눗셈 대수로서 얼마나 희귀한 존재인지는 상수 이어달리기 페이지에서, 곡률이 공간 전체의 기하를 어떻게 결정하는지는 기하는 하나가 아니야에서, 높은 차원에서 도형 보는 법은 고차원 페이지에서 이어집니다.