들어가며

벡터(vector) — 크기와 방향을 함께 가진 양 — 를 배우다 보면 이런 의문이 생깁니다.

"내적(inner product, dot product) 공식에 갑자기 코사인이 왜 나오지? 성분끼리 곱해서 더한 것인데, 어디서 각도가 끼어드는 거지?"

결론부터 말하면 — 두 가지 접근이 같은 답을 주기 때문입니다. 성분을 직접 계산하는 방법과, "한 벡터를 다른 벡터 위에 드리운 그림자"로 보는 방법이 수학적으로 같은 값을 냅니다. 이 그림자의 길이를 표현하는 것이 바로 코사인(cosine)입니다.

내적이란

내적은 두 벡터 \(\vec{a} = (a_1, a_2)\), \(\vec{b} = (b_1, b_2)\)가 있을 때 성분을 곱해 더한 값입니다.

$$\vec{a} \cdot \vec{b} = a_1 b_1 + a_2 b_2$$

계산 자체는 단순합니다. 그런데 이 값이 왜 아래 공식과 같아지는지는 전혀 자명하지 않습니다.

$$\vec{a} \cdot \vec{b} = |\vec{a}||\vec{b}|\cos\theta$$

여기서 \(|\vec{a}|\)는 벡터 \(\vec{a}\)의 크기(길이), \(|\vec{b}|\)는 \(\vec{b}\)의 크기, \(\theta\)(세타)는 두 벡터 사이의 각도입니다. \(\cos\theta\)(코사인 세타)는 0°에서 1, 90°에서 0, 180°에서 -1이 되는 함수입니다.

그림자의 직관 — 정사영

두 벡터가 "얼마나 같은 방향을 향하고 있는가"를 측정하고 싶다고 상상해보겠습니다.

벡터 \(\vec{a}\)를 벡터 \(\vec{b}\) 방향으로 정사영(orthogonal projection) — 수직으로 드리우는 그림자 — 하면, 그 그림자의 길이는 \(|\vec{a}|\cos\theta\)입니다. 이것이 "\(\vec{a}\)에서 \(\vec{b}\) 방향으로 뽑아낸 성분"입니다.

세 경우로 확인해봅니다.

두 벡터가 나란할 때 (θ = 0°)

그림자 길이 = \(|\vec{a}|\cos 0° = |\vec{a}|\). 즉 \(\vec{a}\) 전체가 \(\vec{b}\) 방향과 겹칩니다. 내적은 \(|\vec{a}||\vec{b}|\)로 최대입니다.

두 벡터가 수직일 때 (θ = 90°)

그림자 길이 = \(|\vec{a}|\cos 90° = 0\). \(\vec{a}\)는 \(\vec{b}\) 방향으로 아무 성분도 없습니다. 내적 = 0. 두 벡터가 수직이면 내적이 0인 이유입니다.

두 벡터가 반대일 때 (θ = 180°)

그림자 길이 = \(|\vec{a}|\cos 180° = -|\vec{a}|\). 그림자가 \(\vec{b}\)의 반대편에 생깁니다. 내적이 음수가 됩니다.

그림자를 \(|\vec{b}|\)에 곱하면 내적이 됩니다.

$$\vec{a} \cdot \vec{b} = \underbrace{|\vec{a}|\cos\theta}_{\text{정사영 길이}} \times |\vec{b}|$$

성분 공식과 같음을 보이는 수학적 이유

직관은 설명했지만, \(a_1 b_1 + a_2 b_2 = |\vec{a}||\vec{b}|\cos\theta\)가 등식으로 성립한다는 것은 증명이 필요합니다. 코사인 제2법칙을 사용하면 깔끔하게 확인할 수 있습니다.

코사인 제2법칙(law of cosines)은 삼각형의 두 변 \(|\vec{a}|\), \(|\vec{b}|\)와 끼인각 \(\theta\)가 있을 때, 맞은편 변 \(|\vec{a} - \vec{b}|\)의 제곱을 나타냅니다.

$$|\vec{a} - \vec{b}|^2 = |\vec{a}|^2 + |\vec{b}|^2 - 2|\vec{a}||\vec{b}|\cos\theta$$

같은 양을 성분으로 계산합니다.

$$|\vec{a} - \vec{b}|^2 = (a_1 - b_1)^2 + (a_2 - b_2)^2$$$$= a_1^2 - 2a_1 b_1 + b_1^2 + a_2^2 - 2a_2 b_2 + b_2^2$$$$= |\vec{a}|^2 + |\vec{b}|^2 - 2(a_1 b_1 + a_2 b_2)$$

두 식이 같은 값을 나타내므로 우변을 비교합니다.

$$|\vec{a}|^2 + |\vec{b}|^2 - 2(a_1 b_1 + a_2 b_2) = |\vec{a}|^2 + |\vec{b}|^2 - 2|\vec{a}||\vec{b}|\cos\theta$$

양변에서 공통항을 소거하면:

$$a_1 b_1 + a_2 b_2 = |\vec{a}||\vec{b}|\cos\theta$$

성분으로 계산한 내적과 그림자 공식이 정확히 일치합니다. 코사인이 내적 공식에 등장하는 것은 코사인 제2법칙 — 즉 피타고라스 정리의 일반화 — 이 성립하기 때문입니다.

직접 체험하기

파란 화살표가 벡터 \(\vec{a}\), 초록 화살표가 벡터 \(\vec{b}\)입니다. 황색 선이 \(\vec{a}\)를 \(\vec{b}\) 위에 드리운 그림자(정사영)이고, 점선이 수직 보조선입니다.

  • θ를 0°로 올리면 그림자가 \(\vec{b}\)와 완전히 겹치고 내적이 최대가 됩니다.
  • θ = 90°에서 그림자가 사라지고 내적이 정확히 0이 됩니다.
  • θ를 90° 이상으로 늘리면 그림자가 음의 방향에 생기고 내적이 음수로 바뀝니다.
내적 = 정사영 × 길이
θ 슬라이더로 각도를 바꾸며 황색 그림자와 내적 값의 관계를 관찰하세요. 성분 계산과 공식이 항상 같은 값을 줍니다.

핵심 정리

각도 θ내적 a·b의미
0° (나란함)두 크기의 곱 (최댓값)완전히 같은 방향
예각 (0°~90°)양수같은 방향 성분 존재
90° (수직)0방향 공유 없음
둔각 (90°~180°)음수반대 방향 성분 존재
180° (반대)두 크기의 곱의 음수 (최솟값)완전히 반대 방향

AI로 이런 걸 공부할 때

내적의 구조를 이해하면 다양한 방향으로 확장할 수 있습니다. AI에 던져볼 만한 질문들:

  • "내적이 0인 두 벡터는 수직이라고 하는데, 3차원에서도 마찬가지인가? 왜?"
  • "코사인 유사도(cosine similarity)가 추천 시스템에서 왜 쓰이는지 내적 공식으로 설명해줘."
  • "행렬 곱셈의 각 원소가 사실 두 벡터의 내적이라는 걸 구체적인 예시로 보여줘."

마치며

내적 공식의 코사인은 우연히 생긴 것이 아닙니다. "두 벡터가 얼마나 같은 방향을 보는가"를 측정하기 위해 그림자(정사영)라는 기하학적 도구를 쓰면, 그 길이를 표현하는 것이 자연스럽게 코사인이 됩니다.

성분 공식 \(a_1 b_1 + a_2 b_2\)와 크기·코사인 공식 \(|\vec{a}||\vec{b}|\cos\theta\)가 같은 이유는, 코사인 제2법칙이 이 둘을 연결해주기 때문입니다. 두 표현이 같은 실체를 다른 언어로 서술하고 있습니다.

이 구조는 머신러닝의 코사인 유사도, 물리의 일(work = F·d), 신호처리의 주파수 분석까지 이어집니다. 내적을 "그림자 곱하기 길이"로 기억하면 그 응용들이 한결 자연스럽게 읽힙니다.

함께 보면 좋은 글 — 먼저 읽으면 좋은 글: 삼각함수는 도대체 목적이 뭔가 · 방향코사인은 왜 '방향'일까 → 이어서: 행렬식은 왜 '넓이/부피'인가