행렬 0x08: 벡터의 내적 (Inner Product, Dot Product)
벡터의 내적 (Inner Product, Dot Product)
벡터의 내적은 점곱이라고도 부른다. 벡터은 내적은 두 벡터 사이의 관계를 나타내는데 유용하다. 주로 두 벡터가 이루는 각도와 크기를 이용해 스칼라 값을 계산한다.
정의
두 벡터 $ A, B $가 있을 때, 내적은 다음과 같이 정의된다.
\[a ⋅ b = ∥a∥ ∥b∥ cosθ\]벡터 성분을 이용해 내적을 계산할 수도 있다.
\(a ⋅ b = a_1 b_1 + a_2 b_2 + ⋯ + a_n b_n\) 위의 식은 각 요소끼리 곱한 후 모두 더한 값이다.
기하학적 성질
내적은 두 벡터가 이루는 각도를 구하는데 사용될 수 있다. 예를 들어 크기가 $ 1 $인 두 벡터가 이루는 각이 $ 0^∘, 90^∘, 180^∘ $ 일 때, 내적의 값은 $1, 0, -1$이 된다. 따라서 내적이 $ 0 $이라면 두 벡터가 직교한다고 확인할 수 있다. 반대로 두 벡터가 같은 방향($ θ = 0^∘ $)일 땐, $ cos(0) = 1$이 되므로 내적의 결과는 두 벡터의 크기 곱과 같다.
C++ 코드
template <class K, u64 N>
struct Vector
{
K data[N];
static K DotProduct(const Vector&, const Vector&);
};
template<class K, u64 N>
K Vector<K, N>::DotProduct(const Vector& u, const Vector& v)
{
K res = K();
for (u64 i = 0; i < N; ++i)
{
res = res + (u.data[i] * v.data[i]);
}
return res;
}
Leave a comment