벡터의 표현 (Row / Column)
std::vector<std::vector<int>> x = { {1}, {4}, {5}, {6} }; // 4x1 열벡터
std::vector<std::vector<int>> y = { {3}, {-7} }; // 2x1 열벡터
std::vector<int> z = { 1, 4, 5, 6 }; // 1x4 행벡터
- 열벡터 (Column Vector)
→ vector<vector<int>> 형태로 표현
→ 각 원소가 한 줄씩 내려감 - 행벡터 (Row Vector)
→ vector<int>로 표현 가능
→ 한 줄로 나열
핵심
- "차원" = 원소 개수
- "형태" = 행 / 열 구조
벡터의 덧셈 / 뺄셈
std::vector<int> x = {4, 5, 6};
std::vector<int> y = {10, 20, 30};
덧셈
result[i] = x[i] + y[i];
뺄셈
result[i] = x[i] - y[i];
핵심 개념
- 같은 위치끼리 계산 (element-wise)
- 차원이 같아야 연산 가능
선형대수 관점
벡터 연산 = 좌표별 연산
스칼라 곱 (Scalar Multiplication)
std::vector<int> w = { {9}, {4}, {1} };
std::vector<int> result(w.size());
int Scalar = 4;
result[i] = w[i] * Scalar;
핵심
- 벡터의 모든 원소에 동일한 값 곱함
- 방향은 유지, 크기만 변화
해석
- 4배 확대 (스케일링)
(중요) 행벡터 + 열벡터 → 행렬 확장 개념
int main() {
// 1. 열벡터 (3 x 1) : 세로로 3줄
std::vector<std::vector<int>> x = { {4}, {5}, {6} };
// 2. 행벡터 (1 x 3) : 가로로 1줄
std::vector<std::vector<int>> y = { {10, 20, 30} };
// 3. 결과 행렬 (3 x 3) 공간 확보
// x의 행 개수(3)와 y의 열 개수(3)를 따름
std::vector<std::vector<int>> result(x.size(), std::vector<int>(y[0].size()));
// 4. 이중 루프로 덧셈 수행
for (int i = 0; i < x.size(); ++i)
{ // x의 행 개수만큼 반복
for (int j = 0; j < y[0].size(); ++j)
{ // y의 열 개수만큼 반복
// x[i][0] : i번째 행의 유일한 원소
// y[0][j] : 0번째 행의 j번째 원소
result[i][j] = x[i][0] + y[0][j];
}
}
std::cout << "[ 결과값 ]" << std::endl;
for (int i = 0; i < result.size(); ++i)
{
for (int j = 0; j < result[i].size(); ++j)
{
std::cout << result[i][j] << "\t";
}
std::cout << std::endl;
}
return 0;
}
이건 그냥 덧셈이 아니라 사실상
- 브로드캐스팅 느낌
- 또는 행렬 생성 개념의 기초
결과
(3x1) + (1x3) → (3x3)
해석
| 열\행 | 10 | 20 | 30 |
| 4 | 14 | 24 | 34 |
| 5 | 15 | 25 | 35 |
| 6 | 16 | 26 | 36 |
나중에
- 행렬 연산
- 딥러닝 (브로드캐스팅)
- 그래픽스 좌표 계산
까지 사용하게 된다
핵심 요약
- 벡터 = 방향 + 크기 (하지만 코드에서는 "배열"처럼 다룸)
- 연산은 위치 기준(element-wise)
- 스칼라 곱 = 전체 스케일 변화
- 행/열 개념이 중요 (단순 배열이 아님)
마무리
이번 학습을 통해 벡터의 수학적 관점으로도 바라볼 수 있게 되었다.
CPP에서 사용하던 벡터를 사용하기 편한 배열처럼만 사용했는데 CPP로 선형대수를 구현하면서 벡터의 연산이 단순 계산이 아니라 좌표 기반의 의미를 가진다는 점이 중요했고 이는 추후 게임 개발에서 위치, 속도, 방향 계산에 직접적으로 활용될 수 있다고 느꼈다!
'수학 > 선형대수학' 카테고리의 다른 글
| 선형대수학 대비 – 벡터(Vector) 기초 정리 (0) | 2026.04.16 |
|---|