Chapter 4

벡터의 뜻

방향과 크기를 함께 다루기
핵심 질문

벡터 두 개를 더한다는 것은 어떤 이동일까?

벡터의 뜻

핵심 질문

벡터는 왜 숫자 두 개로 방향과 크기를 함께 나타낼 수 있을까?

교과서 설명

벡터는 방향이 있는 이동이다. 좌표평면에서 벡터는 보통 다음처럼 쓴다.

이 뜻은 오른쪽으로 , 위로 만큼 이동한다는 말이다. 두 벡터를 더하면 이동을 이어 붙인 것과 같다.

벡터에 숫자를 곱하면 이동의 길이가 바뀐다. 이것을 스칼라배라고 한다.

가 양수이면 같은 방향으로 길이만 바뀌고, 가 음수이면 반대 방향으로 뒤집힌다. 아무 움직임도 없는 벡터는 영벡터라고 한다.

좌표 는 점으로도 볼 수 있고, 원점에서 그 점까지 가는 이동으로도 볼 수 있다. 벡터를 더하거나 늘릴 때는 “점”보다 “이동”으로 생각하는 편이 자연스럽다.

벡터 공간 관점

조금 더 엄밀하게 말하면, 평면 벡터는 의 원소다. 는 실수 두 개를 순서 있게 모은 집합이다.

벡터 공간에서는 두 가지 연산이 중요하다. 하나는 벡터끼리 더하는 연산이고, 다른 하나는 실수 하나를 곱해 크기와 방향을 조절하는 스칼라배다.

이 두 연산이 잘 정의되기 때문에 복잡한 이동도 작은 기본 이동의 합으로 쪼갤 수 있다. 예를 들어 는 기본 방향 벡터 의 조합이다.

이 관점은 배열에도 그대로 확장된다. 길이 인 배열은 의 벡터이고, 각 칸은 하나의 좌표다. DFT는 이런 벡터를 다른 좌표계, 즉 주파수 좌표계로 바꾸어 읽는 변환으로 볼 수 있다.

길이 인 배열 벡터의 크기도 같은 방식으로 정의한다.

이 값은 배열 전체가 원점에서 얼마나 멀리 떨어져 있는지를 나타낸다. 뒤에서 내적과 DFT 점수를 볼 때 “얼마나 강하게 남는가”를 비교하는 기준이 된다.

직관 비유

길 안내를 생각하자. “동쪽으로 3칸, 북쪽으로 2칸”은 벡터 다. 이어서 “동쪽으로 1칸, 남쪽으로 1칸”을 더하면 전체 이동은 이다.

예제

벡터의 길이는 피타고라스 정리로 구한다.

스칼라배 예시는 다음과 같다.

DFT에서는 신호값 이 회전 벡터의 길이를 키우거나, 값이 음수일 때 방향을 뒤집는 역할을 한다.

손풀이 체크

  1. 는?

    답 보기

    (5,3)(5,3)

  2. 은?

    답 보기

    (2,6)(-2,-6)

  3. 벡터 은 어떤 이동을 뜻할까?

    답 보기

    아무 방향으로도 움직이지 않는 이동이다.

다음으로 이어지는 생각

벡터와 배열은 여러 숫자를 순서대로 다룬다는 점에서 닮아 있다. 다음 장에서는 배열의 번호와 긴 덧셈 표기를 먼저 정리한다.

이번 장에서 기억할 3문장

  1. 벡터는 크기와 방향을 함께 가진 이동이다.
  2. 벡터 덧셈은 같은 좌표끼리 더하는 것이며, 이동을 이어 붙이는 그림과 같다.
  3. 신호 배열도 길이가 긴 벡터처럼 다룰 수 있다.

C++ Practice

C++로 확인하기

벡터 덧셈 v+w\vec v+\vec w, 스칼라배 tvt\vec v, 길이 v|\vec v| 계산하기

#include <cmath>
#include <iostream>

using namespace std;

struct Vec {
    double x;
    double y;
};

Vec add(Vec a, Vec b) {
    return {a.x + b.x, a.y + b.y};
}

Vec scale(double t, Vec v) {
    return {t * v.x, t * v.y};
}

double length(Vec v) {
    return sqrt(v.x * v.x + v.y * v.y);
}

int main() {
    Vec v{2, 1};
    Vec w{1, 3};
    Vec sum = add(v, w);
    Vec twice = scale(2, v);

    cout << "v+w = (" << sum.x << ", " << sum.y << ")\n";
    cout << "2v = (" << twice.x << ", " << twice.y << ")\n";
    cout << "|(3,4)| = " << length({3, 4}) << "\n";
}

연습: v\vec vw\vec w의 좌표를 바꿔서 합과 길이를 직접 예측해 보자.