선형대수
벡터와 행렬을 숫자 표가 아니라 '공간을 옮기는 함수'로 보면 연립방정식, 행렬식, 역행렬, 부분 공간, 투영과 최소제곱, 고윳값이 한 줄로 이어진다. 2×2와 3×3 예를 손으로 계산하며 원리를 따라간다.
목차 (12)
벡터: 덧셈, 스칼라배, 크기
벡터는 숫자를 순서대로 늘어놓은 것이고, 평면에서는 원점에서 한 점으로 가는 화살표로 그린다. a = (3, 4)는 오른쪽으로 3, 위로 4이다. 선형대수에서 벡터로 하는 기본 연산은 두 가지뿐이다.
- 덧셈: 성분끼리 더한다. a + b = (3, 4) + (2, −1) = (5, 3). 그림으로는 a의 끝에 b의 꼬리를 이은 곳이고, a와 b로 만든 평행사변형의 대각선이다.
- 스칼라배: 모든 성분에 같은 수를 곱한다. 2b = (4, −2). 같은 직선 위에서 길이만 바뀌고, 음수를 곱하면 방향이 뒤집힌다.
벡터의 크기(노름)는 피타고라스 정리로 ‖a‖ = √(3² + 4²) = 5다. 3차원이든 1000차원이든 성분 제곱의 합의 제곱근이다. 크기로 나눠 길이를 1로 맞춘 벡터를 단위 벡터라 하고, 방향만 나타낼 때 쓴다.
선형 결합과 생성
벡터에 스칼라를 곱해 더한 c₁v₁ + c₂v₂ + …를 선형 결합이라 한다. v₁ = (2, 1), v₂ = (1, 2)로 점 (4, 5)에 닿으려면 c₁·(2, 1) + c₂·(1, 2) = (4, 5), 곧 2c₁ + c₂ = 4, c₁ + 2c₂ = 5를 풀면 된다. 답은 c₁ = 1, c₂ = 2다. "벡터의 조합으로 목표에 닿는가"가 곧 "연립방정식에 해가 있는가"라는 것이 선형대수의 첫 번째 연결이다.
계수 c를 모든 실수로 바꿔 가며 만들 수 있는 점 전체를 생성(span)이라 한다. v₁, v₂는 방향이 달라 평면 전체를 생성한다. 반면 두 벡터가 같은 직선 위에 있으면 무엇을 곱해 더해도 그 직선을 벗어나지 못한다. 3차원에서 벡터 두 개는 기껏해야 평면을, 세 개가 있어야 공간 전체를 생성할 수 있다.
일차 독립, 기저, 차원
벡터들이 일차 독립이라는 것은 c₁v₁ + c₂v₂ + … = 0이 되는 방법이 모든 c가 0인 것뿐이라는 뜻이다. 어느 하나도 나머지의 조합으로 만들 수 없어 쓸모없는 벡터가 없다. (1, 2)과 (2, 4)은 2·(1, 2) − (2, 4) = 0이라 일차 종속이다. 둘째 벡터가 새로운 방향을 하나도 보태지 못한다.
공간을 생성하면서 일차 독립인 벡터 묶음을 기저라 하고, 기저에 든 벡터의 수를 차원이라 한다. 기저는 여러 가지지만 개수는 늘 같다. 평면의 기저는 언제나 두 개라서, 평면 위 벡터 세 개는 반드시 종속이다. 기저를 정하면 모든 벡터가 계수 목록(좌표) 하나로 정확히 한 가지로 적힌다. 앞 절의 점 (4, 5)은 표준 기저로는 (4, 5), 기저 v₁, v₂로는 [1, 2]다. 같은 점을 다른 기저로 적는 일이 좌표 변환이다.
행렬과 행렬 곱: 선형 변환으로 보기
행렬 A와 벡터 x의 곱 Ax는 A의 열들을 x의 성분만큼 섞은 선형 결합이다. [a b; c d]·(x, y) = x·(a, c) + y·(b, d). 그래서 e₁ = (1, 0)을 넣으면 첫째 열이, e₂ = (0, 1)을 넣으면 둘째 열이 나온다. 행렬은 "기저 벡터를 어디로 보낼지"를 적어 둔 표이고, 나머지 모든 점은 그 조합이므로 따라 움직인다. 직선은 직선으로, 원점은 원점으로, 평행한 격자는 평행한 격자로 가는 이런 함수를 선형 변환이라 한다.
행렬 곱 BA는 "A를 한 다음 B를 하는" 변환 하나다. 성분으로는 (BA)의 i행 j열 = B의 i행과 A의 j열의 내적이고, 열로 보면 BA의 j열 = B·(A의 j열)이다. 밀기 A = [1 1; 0 1]와 90° 회전 B = [0 −1; 1 0]에서 BA = [0 −1; 1 1], AB = [1 −1; 1 0]로 다르다. 같은 점 (2, 1)도 BA로는 (−1, 3), AB로는 (1, 2)로 간다. 행렬 곱은 결합 법칙 (CB)A = C(BA)는 성립하지만 교환 법칙은 성립하지 않는다.
처음 격자. 파란 화살표가 e₁ = (1, 0), 빨간 화살표가 e₂ = (0, 1)이고, 칠한 칸이 단위 정사각형이다.
행렬 곱에는 모양 규칙이 있다. m×n 행렬은 n×p 행렬과만 곱할 수 있고 결과는 m×p다. 앞 행렬의 행과 뒤 행렬의 열이 같은 길이여야 내적이 되기 때문이다. 곱의 전치와 역행렬은 순서가 뒤집힌다. (AB)ᵀ = BᵀAᵀ이고 (AB)⁻¹ = B⁻¹A⁻¹이다. AB는 B를 먼저 하고 A를 하는 변환이니, 되돌릴 때는 나중에 한 A부터 되돌려야 한다. 양말을 신고 신발을 신었으면 신발부터 벗는 것과 같다.
곱셈은 결합 법칙이 성립해 (AB)C = A(BC)지만, 괄호를 어디에 두느냐에 따라 계산량이 크게 다르다. p×q 행렬과 q×r 행렬을 곱하는 데는 곱셈이 pqr번 든다. A가 10×30, B가 30×5, C가 5×60이면 (AB)C는 1,500 + 3,000 = 4,500번, A(BC)는 9,000 + 18,000 = 27,000번으로 여섯 배다. 같은 이유로 n×n 행렬 두 개를 벡터 하나에 한 번만 적용할 거라면 A(Bx)로 벡터에 하나씩 곱하는 편(n²씩 두 번)이 AB를 먼저 만드는 것(n³)보다 싸다. 반대로 정점 수천 개에 같은 변환을 쓸 때는 곱을 한 번 만들어 여러 번 다시 쓰니 미리 곱해 둔다.
3D 그래픽스는 이동까지 행렬 곱 하나로 하려고 4×4 동차 좌표 행렬을 쓰고, 모델·뷰·투영 행렬을 미리 곱해 정점마다 한 번만 곱한다. 그 이야기는 컴퓨터 그래픽스 노트와 게임 개발 수학 노트의 변환 순서 절에 있다.
연립방정식과 가우스 소거
식 세 개, 미지수 세 개인 연립방정식은 Ax = b로 쓴다. 행렬로 보면 두 가지 그림이 있다. 행 그림은 식 하나가 3차원의 평면 하나이고 해는 세 평면이 만나는 점이다. 열 그림은 A의 세 열을 x, y, z배 해서 더해 b를 만드는 문제다. 앞 절의 선형 결합이 바로 이것이다.
푸는 방법은 중학교 때의 "한 식에 다른 식의 배수를 빼서 미지수 없애기"를 체계화한 가우스 소거다. 계수와 우변을 모은 첨가 행렬에 세 가지 행 연산(한 행에서 다른 행의 배수 빼기, 두 행 바꾸기, 한 행에 0이 아닌 수 곱하기)만 해서 왼쪽 아래를 0으로 만든다. 이 연산들은 해를 바꾸지 않는다. 위 삼각 꼴이 되면 마지막 식부터 하나씩 풀어 올라간다(후진 대입).
연립방정식 x + y + z = 6, 2x + y − z = 1, x − y + 2z = 5를 계수와 우변만 모은 첨가 행렬로 쓴다. 세로줄 오른쪽이 우변이다.
대각선의 피벗이 0이 되면 아래 행과 바꾸고, 바꿀 행조차 없으면 그 열의 미지수는 마음대로 정할 수 있는 자유 변수가 되어 해가 없거나 무수히 많다. n×n 행렬을 소거하는 데는 곱셈이 대략 n³/3번 든다. 컴퓨터에서는 반올림 오차가 커지지 않도록 그 열에서 절댓값이 가장 큰 수를 피벗으로 고르고(부분 피벗팅), 소거 과정을 하삼각·상삼각 행렬의 곱 A = LU로 저장해 두어 b만 바뀔 때 다시 쓴다.
행렬식: 넓이·부피의 배율과 방향
2×2 행렬이 단위 정사각형을 보내는 평행사변형의 넓이가 행렬식이다. det [a b; c d] = ad − bc. [3 1; 1 2]는 det = 5, 곧 모든 도형의 넓이를 5배로 만든다. 두 열의 순서를 바꾼 [1 3; 2 1]는 같은 평행사변형을 만들지만 det = -5다. 부호는 방향을 나타낸다. e₁에서 e₂로 도는 방향(반시계)이 변환 뒤에도 유지되면 +, 거울에 비친 것처럼 뒤집히면 −다.
3×3 행렬식은 단위 정육면체가 가는 평행육면체의 부피(와 방향)다. 손으로는 소거한 뒤 피벗을 곱하는 것이 가장 빠르다. 앞 절의 계수 행렬은 피벗이 1, −1, 7이라 det = −7이다(행을 바꾸면 부호가 한 번씩 바뀐다). 중요한 성질 세 가지가 있다.
- det(AB) = det(A)·det(B): 변환을 이으면 배율도 곱해진다.
- det(A) = 0이면 공간이 한 차원 이상 납작해져 부피가 0이 된다. 이때 열들은 종속이고 역행렬이 없다.
- 삼각 행렬의 행렬식은 대각선의 곱이다. 그래서 소거가 계산 방법이 된다.
역행렬과 계수
역행렬 A⁻¹은 A가 한 일을 되돌리는 변환이다. A⁻¹A = AA⁻¹ = I(아무것도 안 하는 단위 행렬). 2×2는 공식이 있다. [a b; c d]⁻¹ = (1/(ad − bc))·[d −b; −c a]. A = [3 1; 1 2]이면 A⁻¹ = (1/5)·[2 −1; −1 3] = [0.4 −0.2; −0.2 0.6]이고, A가 x = (1, 1)을 (4, 3)로 보내면 A⁻¹은 (4, 3)을 다시 (1, 1)로 돌려놓는다.
행렬식으로 나누므로 det = 0이면 역행렬이 없다. C = [1 2; 2 4]는 둘째 열이 첫째 열의 2배라, 평면 전체를 직선 y = 2x 위로 짓누른다. (2, 0)과 (0, 1)이 모두 (2, 4)로 가니, (2, 4)를 받았을 때 어디서 왔는지 알 길이 없다.
변환 뒤에 남는 차원의 수, 곧 서로 독립인 열(또는 행)의 수가 계수(rank)다. 소거했을 때 피벗의 개수와 같다. n×n 행렬에서는 아래가 모두 같은 말이다: 역행렬이 있다 ⇔ det ≠ 0 ⇔ 계수가 n ⇔ 열들이 일차 독립 ⇔ Ax = 0의 해가 x = 0뿐 ⇔ 모든 b에 대해 Ax = b의 해가 하나뿐. 실제 계산에서는 A⁻¹을 구해 b에 곱하기보다 소거(LU)로 Ax = b를 바로 푸는 쪽이 빠르고 오차도 적다.
영공간과 열공간: 계수–영공간 정리
m×n 행렬 A에는 중요한 부분 공간이 둘 있다.
- 열공간 C(A): Ax로 만들 수 있는 모든 출력, 곧 열들의 생성. Ax = b는 b가 열공간에 있을 때만 해가 있다. 열공간의 차원이 계수다.
- 영공간 N(A): Ax = 0이 되는 모든 입력 x. 변환이 0으로 짓누르는 방향들이다.
둘 사이에는 계수–영공간 정리가 있다. 계수 + 영공간의 차원 = 열의 수 n. 입력의 n차원 가운데 일부는 출력으로 살아남고(계수), 나머지는 0으로 사라진다(영공간)는 차원 보존이다. 3×3 행렬 [1 2 3; 2 1 0; 3 3 3]은 셋째 행이 첫째·둘째 행의 합이라 계수가 2다. 그래서 영공간은 1차원이고, 실제로 (1, −2, 1)을 넣으면 (0, 0, 0)이 나온다. 열공간은 3차원 속의 평면으로, b가 (1, 1, −1)과 직교할 때(b₁ + b₂ − b₃ = 0)만 해가 있다.
해가 있을 때 모든 해는 "특수해 하나 + 영공간의 아무 벡터"다. 영공간 방향으로 움직여도 Ax는 그대로이기 때문이다. 그림에서 빨강 점선 위의 세 점이 모두 x + 2y = 2의 해인 것이 이 구조다.
내적, 직교, 투영
내적 a·b = a₁b₁ + a₂b₂ + …는 길이와 각도를 함께 담는다. a·b = ‖a‖‖b‖cos θ라서, a·a = ‖a‖²이고 a·b = 0이면 두 벡터가 직교(수직)다. a = (3, 1), b = (2, 3)는 a·b = 9, 사이각은 약 37.9°다. 임베딩 비교에 쓰는 코사인 유사도는 AI를 위한 수학 노트에서 다룬다.
b를 a 방향 직선 위로 투영하면 그 직선에서 b와 가장 가까운 점 p = (a·b / a·a)·a = (9/10)·a = (2.7, 0.9)이 나온다. 남은 성분 b − p는 a와 직교한다. 이 "투영하고 남은 것은 직교한다"는 성질로, 독립인 벡터 묶음을 서로 직교하는 길이 1의 묶음(정규 직교 기저)으로 바꾸는 것이 그람–슈미트 과정이다.
v₁ = (3, 1), v₂ = (2, 3). 둘은 독립이지만 직교하지 않는다(v₁·v₂ = 9). 같은 평면을 직교하는 두 방향으로 다시 잡고 싶다.
3차원에서도 같다. (1, 1, 0), (1, 0, 1), (0, 1, 1)에서 시작하면 (0.707, 0.707, 0), (0.408, −0.408, 0.816), (−0.577, 0.577, 0.577)이 나온다. 정규 직교 기저를 열로 모은 행렬 Q는 QᵀQ = I라 역행렬이 전치 행렬이고, 길이와 각도를 바꾸지 않는다(회전·반사). 그람–슈미트를 행렬로 적은 것이 A = QR 분해다.
3차원에는 내적 말고 두 벡터에 모두 수직인 벡터를 내는 외적 a × b도 있다. 길이가 두 벡터가 만드는 평행사변형의 넓이이고, 면의 법선과 좌우 판정에 쓰는 모습은 게임 개발 수학 노트에 있다.
최소제곱: 맞지 않는 방정식의 가장 좋은 답
점 (0, 1), (1, 3), (2, 2), (3, 4)을 모두 지나는 직선 y = c + mx는 없다. 식이 넷인데 미지수는 c, m 둘이라, Ax = y(A의 행은 [1 xᵢ])에 해가 없다. 기하로 말하면 y가 A의 열공간 밖에 있다. 그렇다면 열공간에서 y와 가장 가까운 점, 곧 y의 투영을 답으로 삼는다. 이때 잔차 y − Ax̂는 열공간과 직교하므로 Aᵀ(y − Ax̂) = 0, 정리하면 정규 방정식 AᵀA·x̂ = Aᵀy다.
계산하면 AᵀA = [4 6; 6 14], Aᵀy = (10, 19)이고, 풀면 c = 1.3, m = 0.8다. 잔차 −0.3, 0.9, −0.9, 0.3의 제곱합 1.8이 이 직선보다 작은 직선은 없다. 잔차의 합이 0이고 잔차와 x의 내적도 0인 것이 직교 조건 그 자체다.
선형 회귀가 바로 이 계산이고, 특징이 여러 개여도 A의 열이 늘어날 뿐 식은 같다. AᵀA를 직접 만들면 조건수가 제곱되어 오차가 커지므로, 라이브러리는 QR 분해나 SVD로 푼다. 특징끼리 거의 겹쳐 AᵀA가 특이에 가까울 때의 문제와 규제는 AI를 위한 수학 노트의 연립방정식과 계수 절에 있다.
고윳값과 고유벡터
변환을 해도 방향이 바뀌지 않고 길이만 λ배가 되는 벡터, 곧 Av = λv인 0이 아닌 v가 고유벡터이고 λ가 고윳값이다. (A − λI)v = 0에 0이 아닌 해가 있어야 하므로 A − λI가 특이, 곧 det(A − λI) = 0이다. A = [2 1; 1 2]이면 (2 − λ)² − 1 = λ² − 4λ + 3 = 0에서 λ = 3, 1이고, 고유벡터는 각각 (1, 1)과 (1, −1) 방향이다.
고유벡터로 기저를 바꾸면 행렬이 대각 행렬이 된다. A = PDP⁻¹(P의 열은 고유벡터, D는 고윳값을 대각선에 둔 행렬). 그러면 거듭제곱이 쉬워진다. Aⁿ = PDⁿP⁻¹이고 Dⁿ은 대각선만 n제곱하면 되므로, A¹⁰ = [29525 29524; 29524 29525]이 3¹⁰ = 59049에서 바로 나온다. 피보나치 수열도 (Fₙ₊₁, Fₙ) = [1 1; 1 0]·(Fₙ, Fₙ₋₁)로 쓰면 이 행렬의 고윳값 1.618(황금비)와 −0.618로 대각화되어, F₂₀ = 6765이 φ²⁰/√5를 반올림한 값과 같다.
모든 행렬이 실수 고윳값을 갖지는 않는다. 90° 회전 [0 −1; 1 0]은 어떤 방향도 그대로 두지 않으므로 실수 고유벡터가 없다(고윳값은 ±i). 반대로 대칭 행렬은 늘 실수 고윳값과 서로 직교하는 고유벡터를 가져, 회전 → 축마다 늘이기 → 되돌리기로 깔끔하게 분해된다(스펙트럼 정리). 자료의 공분산 행렬에 이를 쓴 것이 주성분 분석이고, 정사각이 아닌 행렬로 넓힌 것이 SVD다. 둘은 AI를 위한 수학 노트에서 다룬다.
큰 행렬의 고윳값은 특성 방정식으로 구하지 않는다. 가장 단순한 방법은 거듭제곱 반복이다. 아무 벡터에 A를 곱하고 길이를 1로 맞추기를 되풀이하면, 매번 가장 큰 고윳값 방향 성분이 다른 성분보다 |λ₁/λ₂|배씩 더 커져 결국 그 고유벡터만 남는다. 실제 수치 라이브러리는 이를 발전시킨 QR 알고리즘을 쓴다.
x₀ = (1, 0)에서 출발한다. 이 벡터는 고유벡터 (1, 1)/√2 성분과 (1, −1)/√2 성분을 반씩 섞은 것이다. 추정 고윳값(레일리 몫 xᵀAx)은 2.000.
핵심 자료
| 자료 | 요지 | 링크 |
|---|---|---|
| MIT OCW 18.06SC Linear Algebra (Gilbert Strang) | 연립방정식과 소거, 네 가지 부분 공간, 직교와 최소제곱, 행렬식, 고윳값, SVD까지 강의 영상과 문제 풀이로 공부하는 대표 강좌. | MIT OpenCourseWare |
| Gilbert Strang — Introduction to Linear Algebra | 위 강좌의 교재. 열 그림(열의 선형 결합)과 네 부분 공간으로 선형대수 전체를 잇는다. 책 누리집에 장별 요약과 연습 문제가 있다. | MIT 수학과 |
| 3Blue1Brown — Essence of linear algebra | 벡터·생성·선형 변환·행렬 곱·행렬식·고유벡터를 격자가 움직이는 애니메이션으로 보여 준다. 이 노트의 "행렬 = 변환" 관점이 여기서 왔다. | 3Blue1Brown |
| Interactive Linear Algebra (Margalit · Rabinoff) | 조지아 공대의 무료 온라인 교재. 생성·선형 독립·변환·고윳값을 직접 움직여 보는 그림과 함께 설명한다. | Georgia Tech |
| Sheldon Axler — Linear Algebra Done Right | 행렬식을 뒤로 미루고 벡터 공간과 선형 사상에서 출발하는 증명 중심 교재. 4판을 무료(오픈 액세스)로 공개했다. | 저자 누리집 |
| Wikipedia — Matrix chain multiplication | 곱하는 순서(괄호)에 따라 계산량이 달라지는 예와, 가장 싼 순서를 동적 계획법으로 찾는 문제. | Wikipedia |
| Wikipedia — Transpose | 전치 행렬의 성질, 특히 곱의 전치가 순서를 뒤집은 (AB)ᵀ = BᵀAᵀ라는 것. | Wikipedia |
| Wikipedia — Invertible matrix | 역행렬이 있을 조건들과 (AB)⁻¹ = B⁻¹A⁻¹ 같은 성질을 모은 항목. | Wikipedia |
- MIT OCW 18.06SC Linear Algebra (Gilbert Strang)
- Gilbert Strang — Introduction to Linear Algebra
- 3Blue1Brown — Essence of linear algebra
- Interactive Linear Algebra (Margalit · Rabinoff)
- Sheldon Axler — Linear Algebra Done Right
- Wikipedia — Matrix chain multiplication
- Wikipedia — Transpose
- Wikipedia — Invertible matrix