행렬 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;
}

Categories:

Updated:

Leave a comment