빌드 날짜: 2026-08-29

이 문서를 읽는 방법

선형대수(linear algebra)는 일차식만 다루는 대수학이다. 곱이나 제곱이 섞이지 않은 식만 본다는 뜻이니 얼핏 좁아 보이지만, 실제로는 반대다. 물리의 역학과 전자기, 통계의 회귀, 컴퓨터 그래픽스의 회전과 투영, 기계학습의 거의 모든 계산이 이 언어로 적힌다. 세상의 많은 문제가 "복잡하지만 국소적으로는 일차"이기 때문이다.

이 문서는 그것을 혼자 읽어 학사 과정 수준까지 도달하도록 다시 썼다. 원래 문서는 정의와 정리를 목록으로 적어 둔 필기였고 그림이 하나도 없었다. 선형대수는 그림 없이 읽히지 않는 과목이므로 그것이 이번 재작성의 가장 큰 이유다.

무엇을 알고 있어야 하는가

이 사이트의 기초 수학 문서를 끝냈다면 준비가 됐다. 구체적으로 다음을 쓴다.

미적분은 거의 필요하지 않다. 9장에서 함수의 내적을 정의할 때 정적분을 한 번 쓰는 것이 전부다.

이 문서가 지키려는 약속

권장 순서와 장별 난이도

아래 순서가 표준이다. 3장에서 10장까지 개념이 한 줄로 쌓이므로 건너뛰지 않는 편이 좋다.

주제난이도예상 시간앞에 필요한 장
3연립일차방정식과 행렬★★6시간-
4행렬식★★4시간3
5벡터와 유클리드 공간★★5시간3
6일반 벡터공간★★★7시간3, 4, 5
7선형변환★★★6시간6
8고유값과 고유벡터★★★7시간4, 6, 7
9내적공간과 직교성★★★7시간5, 6
10특이값 분해와 응용★★★★6시간8, 9

총 48시간 남짓이다. 하루 2시간이면 한 달이 채 안 되는 분량이다.

어디가 걸리는지 미리 알려 둔다. 6장에서 Rn 을 떠나 공리로 올라가는 대목10장의 특이값 분해다. 앞의 것은 갑자기 추상적으로 느껴져서 걸리고, 뒤의 것은 앞의 여러 장을 한꺼번에 쓰기 때문에 걸린다. 6장에서 막히면 "다항식과 함수도 벡터처럼 더하고 늘일 수 있다"는 예로 돌아가면 풀린다.

7장 선형변환은 원래 문서에 아예 없던 장이다. 그것이 없으면 6장의 기저 변환과 8장의 닮음이 왜 필요한지 알 수 없다. 이 문서의 허리이므로 건너뛰지 말 것.

이 문서의 표기 규약

참고문서

교재와 강의

계산과 확인

연립일차방정식과 행렬

선형대수는 연립일차방정식에서 시작한다. 늘 그렇게 시작하는 데는 이유가 있다. 공학과 자연과학에서 만나는 문제 가운데 놀랄 만큼 많은 것이 '여러 개의 일차식이 동시에 성립하는 상태를 찾아라'라는 모양으로 정리되고, 그 모양을 다루는 도구를 만들다 보면 행렬·벡터·고유값이 차례로 필요해지기 때문이다. 이 문서가 앞으로 세우는 모든 개념의 뿌리가 여기 있다.

이 장에서 답할 질문은 셋이다. 연립방정식의 답은 몇 개일 수 있는가, 답을 기계적으로 구하는 절차는 무엇인가, 그리고 그 절차를 왜 행렬이라는 새 기호로 적는가.

앞에서 가져오는 것은 기초수학의 연립방정식과 좌표평면 위의 직선, 그리고 시그마 기호 정도다. 행렬과 벡터 표기는 기초수학에 없었으므로 이 장에서 처음부터 만든다.

일차방정식과 해가 놓이는 모양

x1,x2,,xn 에 대한 일차방정식(linear equation)이란

a1x1+a2x2++anxn=b

꼴로 적히는 식이다. 미지수끼리 곱하지 않고(x1x2 금지), 제곱하지 않고(x12 금지), 미지수가 함수 안에 들어가지도 않는다(sinx1 금지). ai계수, b상수항이라 한다. 이런 방정식 여러 개를 한꺼번에 만족시키는 값을 찾는 것이 연립일차방정식(system of linear equations)이고, 그런 값들의 모임을 해집합이라 한다.

미지수가 둘이면 일차방정식 하나는 좌표평면 위의 직선 하나다. 그러면 연립방정식을 푸는 일은 직선들의 공통점을 찾는 일이 된다. 그리고 두 직선이 놓일 수 있는 방법은 세 가지밖에 없다.

한 점에서 만나거나, 나란해서 만나지 않거나, 아예 겹치거나 셋뿐이다. 답이 ‘정확히 두 개’인 연립일차방정식은 존재할 수 없다는 것이 이 그림의 요점이다
<한 점에서 만나거나, 나란해서 만나지 않거나, 아예 겹치거나 셋뿐이다. 답이 ‘정확히 두 개’인 연립일차방정식은 존재할 수 없다는 것이 이 그림의 요점이다>[원본 보기]

답이 정확히 둘인 경우가 없다는 것은 우연이 아니다. 서로 다른 두 점을 지나는 직선은 하나뿐이므로, 두 직선이 두 점을 공유하면 그 순간 같은 직선이 되어 공유점이 무한히 많아진다. 연립일차방정식의 해는 없거나, 하나거나, 무수히 많거나 셋 중 하나다. 이 사실은 미지수가 몇 개든, 방정식이 몇 개든 그대로 성립한다.

미지수가 셋이면 일차방정식 하나가 평면 하나가 된다. 상황이 조금 복잡해지지만 결론은 같다.

세 평면이 한 점에서 만나면 해가 하나, 한 직선을 공유하면 그 직선 위의 점이 모두 해가 되어 무수히 많고, 공통점이 없으면 해가 없다. 오른쪽처럼 두 평면이 나란하면 세 번째 평면이 아무리 가로질러도 셋 모두를 지나는 점은 생기지 않는다
<세 평면이 한 점에서 만나면 해가 하나, 한 직선을 공유하면 그 직선 위의 점이 모두 해가 되어 무수히 많고, 공통점이 없으면 해가 없다. 오른쪽처럼 두 평면이 나란하면 세 번째 평면이 아무리 가로질러도 셋 모두를 지나는 점은 생기지 않는다>[원본 보기]

예제 1

다음 세 연립방정식은 각각 해가 몇 개인가. 계산으로 풀지 말고 두 직선의 배치로 답하라.

(1) 2x+y=5, xy=1 (2) 2x+y=5, 4x+2y=7 (3) 2x+y=5, 4x+2y=10

풀이 보기

물어야 할 것은 두 직선의 기울기가 같은가, 같다면 같은 직선인가 둘뿐이다.

(1) y=2x+5y=x1 이므로 기울기가 21 로 다르다. 기울기가 다른 두 직선은 반드시 한 점에서 만난다. 해가 하나. 실제로 (2,1) 이다(22+1=5, 21=1).

(2) 둘째 식의 양변을 2로 나누면 2x+y=3.5 다. 첫 식은 2x+y=5 이니 같은 값이 5도 되고 3.5도 되어야 한다는 말이 된다. 그런 (x,y) 는 없다. 기울기가 같고 지나는 자리가 다른 두 직선, 곧 나란한 직선이다. 해가 없다.

(3) 둘째 식은 첫 식의 양변에 2를 곱한 것이다. 두 식이 같은 직선을 나타내므로 그 직선 위의 모든 점이 해다. 해가 무수히 많다.

여기서 눈여겨볼 것은 (2)와 (3)의 차이가 상수항 하나라는 점이다. 왼쪽 변이 비례하면 오른쪽 변도 같은 비율이어야 하고, 아니면 모순이 된다. 뒤에서 소거법을 돌릴 때 이 모순은 0=1 이라는 행으로 나타난다.

예제 2

x+2y=3, 3x+ky=9 가 (1) 해가 하나, (2) 해가 무수히 많은 경우가 되도록 k 를 정하라. 해가 없는 k 도 있는가?

풀이 보기

둘째 식이 첫 식의 상수배가 되는 순간이 갈림길이다. 왼쪽 변에서 x 의 계수가 1에서 3으로, 곧 3배가 되었으므로 y 의 계수도 3배여야 한다. 즉 k=6.

k=6 일 때 둘째 식은 3x+6y=9 인데, 이것은 첫 식의 양변에 3을 곱한 것과 완전히 같다(오른쪽도 3×3=9 로 맞는다). 두 식이 같은 직선이므로 해가 무수히 많다.

k6 이면 기울기가 달라 해가 하나다.

해가 없으려면 왼쪽 변은 비례하는데 오른쪽 변이 그 비율을 어겨야 한다. 그런데 오른쪽 변은 이미 39 로 정확히 3배다. 그러니 해가 없는 k 는 없다. 상수항이 미리 짜여 있어 모순이 생길 여지가 사라진 것이다.

첨가행렬 — 기호를 걷어낸다

연립방정식을 손으로 풀 때 실제로 계산에 쓰이는 것은 계수와 상수항뿐이다. xy 니 하는 글자와 +, = 는 자리를 표시할 뿐 값이 없다. 그렇다면 자리만 지키고 글자는 지워 버리면 된다. 그 지운 결과가 행렬이다.

행렬(matrix)은 수를 직사각형으로 늘어놓은 것이다. 가로줄을 행(row), 세로줄을 열(column)이라 하고, 행이 m 개 열이 n 개면 m×n 행렬이라 부른다(행 먼저, 열 나중이다). ij 열에 있는 수를 aij 로 적고 성분 또는 원소라 한다. 아래첨자도 행 먼저다.

이제 연립방정식

a11x1+a12x2++a1nxn=b1a21x1+a22x2++a2nxn=b2am1x1+am2x2++amnxn=bm

에서 계수만 모은 m×n 행렬을 계수행렬 A 라 하고, 그 오른쪽에 상수항 열을 세로선 하나로 구분해 붙인 m×(n+1) 행렬을 첨가행렬(augmented matrix)이라 하며 [Ab] 로 적는다.

A=[a11a1nam1amn],[Ab]=[a11a1nb1am1amnbm]

굵은 소문자 b 는 수를 한 줄로 세운 것, 곧 m×1 행렬을 뜻한다. 이것을 열벡터라 하고 5장에서 제대로 다룬다. 지금은 '세로로 세운 수의 나열'로만 읽어도 된다. 미지수도 같은 방식으로 세워 x 라 쓰면, 연립방정식 전체를 Ax=b 라는 한 줄로 적을 수 있다. 이 표기가 왜 정당한지는 곱을 정의한 뒤에 확인한다.

예제 3

다음 연립방정식의 계수행렬과 첨가행렬을 적어라. 미지수의 순서는 x,y,z 로 한다.

2x+yz=3,xy+2z=1,3x+2y=10

풀이 보기

조심할 것은 빠진 항의 자리를 0으로 채우는 일이다. 셋째 식에 z 가 없다고 해서 그 자리를 비워 두면 열이 어긋난다.

A=[211112320],[Ab]=[2113112132010]

확인하는 방법이 있다. 첫째 열은 언제나 x 의 계수만 모인 열이어야 한다. 위에서 첫째 열이 2,1,3 인데 세 식의 x 계수가 그대로 2, 1, 3이다. 나머지 열도 같은 식으로 훑어보면 된다.

미지수의 순서를 바꾸면 열의 순서가 바뀐다. 그래서 순서를 한 번 정하면 끝까지 지켜야 한다. 이것이 첨가행렬을 쓸 때 가장 흔한 실수의 원인이다.

예제 4

다음 첨가행렬이 나타내는 연립방정식을 미지수 x,y,z 로 복원하라. 그리고 같은 행렬을 미지수 순서를 z,y,x 로 정해 읽으면 어떤 연립방정식이 되는지도 적어라.

[Ab]=[102503114100]

풀이 보기

복원은 첨가행렬을 만드는 절차를 거꾸로 밟는 것이다. 행 하나가 방정식 하나이고, 열 하나가 미지수 하나이며, 세로선 오른쪽이 상수항이다.

1행의 계수는 1,0,2 이고 상수항이 5이므로 x2z=5 다. 계수가 0인 항은 적지 않는다. 같은 식으로 2행은 3y+z=1, 3행은 4xy=0 이다.

x2z=5,3y+z=1,4xy=0

순서를 바꿔 읽으면. 이번에는 첫째 열이 z, 둘째 열이 y, 셋째 열이 x 의 계수다. 자리를 그대로 옮겨 적으면

z2x=5,3y+x=1,4zy=0

이다. 같은 수 배열이 전혀 다른 연립방정식이 되었다.

답이 말이 되는가. 둘째 결과에서 미지수별로 계수를 다시 열로 모아 보면 z 열이 (1,0,4), y 열이 (0,3,1), x 열이 (2,1,0) 으로 원래 행렬의 세 열 그대로다 ✓.

앞 예제가 '순서를 한 번 정하면 끝까지 지켜야 한다'고 한 말의 뜻이 여기서 보인다. 첨가행렬은 미지수의 이름을 기억하지 않는다. 이름표는 사람이 따로 들고 있어야 하고, 그것을 놓치면 계산이 전부 맞아도 답이 틀린다.

기본 행연산과 가우스 소거법

연립방정식을 풀 때 우리가 실제로 하는 조작은 셋뿐이다.

  1. 한 방정식의 양변에 0이 아닌 수를 곱한다
  2. 두 방정식의 자리를 바꾼다
  3. 한 방정식의 상수배를 다른 방정식에 더한다

이 셋은 해집합을 바꾸지 않는다. 이유는 셋 모두 되돌릴 수 있기 때문이다. k 배 한 것은 1/k 배로, 자리를 바꾼 것은 다시 바꿔서, k 배를 더한 것은 k 배를 빼서 원래대로 돌아간다. 되돌릴 수 있다는 것은 조작 전의 해와 조작 후의 해가 정확히 같은 것들이라는 뜻이다. 1번에서 k0 을 요구하는 이유도 여기 있다. 0을 곱하면 그 식이 0=0 이 되어 정보가 사라지고, 되돌릴 방법이 없어진다.

첨가행렬에 대해 같은 조작을 적으면 기본 행연산(elementary row operation)이 된다. 표기는 다음과 같이 쓴다.

연산표기되돌리는 연산
i 행에 0이 아닌 k 를 곱한다RikRiRi(1/k)Ri
i 행과 j 행을 바꾼다RiRj같은 연산을 한 번 더
j 행의 k 배를 i 행에 더한다RiRi+kRjRiRikRj

두 행렬이 기본 행연산을 거듭해 서로 옮겨 갈 수 있으면 행동치(row equivalent)라 한다. 행동치인 두 첨가행렬은 같은 해집합을 갖는다.

그러면 목표가 분명해진다. 해가 눈에 보일 때까지 행연산으로 단순하게 만든다. 기하로 보면 이렇다.

초록 점이 한 번도 움직이지 않았다는 것이 요점이다. 소거법은 답을 옮기는 것이 아니라, 같은 답을 지나는 더 읽기 쉬운 직선쌍을 찾아가는 절차다
<초록 점이 한 번도 움직이지 않았다는 것이 요점이다. 소거법은 답을 옮기는 것이 아니라, 같은 답을 지나는 더 읽기 쉬운 직선쌍을 찾아가는 절차다>[원본 보기]

어디까지 단순하게 만들 것인가를 정해 두어야 절차가 끝난다. 두 가지 기준이 있다.

행사다리꼴(row echelon form, REF) — 다음 두 조건을 만족하는 행렬이다.

  1. 성분이 전부 0인 행이 있다면 맨 아래에 모여 있다
  2. 0이 아닌 행에서 왼쪽 끝의 0이 아닌 성분(선행성분)은, 바로 위 행의 선행성분보다 오른쪽에 있다

기약 행사다리꼴(reduced row echelon form, RREF) — 행사다리꼴이면서 (3) 모든 선행성분이 1이고 (4) 선행성분이 있는 열에서 그 1을 뺀 나머지가 전부 0인 행렬이다.

선행성분이 자리 잡는 위치를 축(pivot)이라 하고, 축이 있는 열을 축열이라 한다. 어떤 행렬을 어떤 순서로 소거하더라도 축의 위치는 언제나 같고, 기약 행사다리꼴은 단 하나뿐이다. 이 사실 덕분에 '축의 개수'가 그 행렬만의 성질이 된다.

별표 자리에는 어떤 수가 와도 좋다. 계단이 내려가는 자리가 축이고, 계단 아래는 반드시 0이다. 기약 행사다리꼴까지 가면 축이 있는 열은 1 하나와 0들만 남는다
<별표 자리에는 어떤 수가 와도 좋다. 계단이 내려가는 자리가 축이고, 계단 아래는 반드시 0이다. 기약 행사다리꼴까지 가면 축이 있는 열은 1 하나와 0들만 남는다>[원본 보기]

행사다리꼴까지만 만들고 아래에서 위로 대입해 올라가는 방법을 가우스 소거법(Gaussian elimination), 기약 행사다리꼴까지 밀어붙여 대입 없이 답을 읽는 방법을 가우스-조던 소거법(Gauss-Jordan elimination)이라 한다. 손으로 풀 때는 앞엣것이 대개 빠르다.

예제 5

가우스 소거법으로 풀어라. x+2y+3z=9, 2xy+z=8, 3xz=3.

풀이 보기

첨가행렬을 적는다. 셋째 식에 y 가 없으니 그 자리는 0이다.

[123921183013]

첫째 열부터 비운다. 1행의 선행성분이 1이라 계산이 편하다. R2R22R1, R3R33R1.

[123905510061024]

2행과 3행을 각각 5, 2 로 나눠 수를 작게 만든다. R215R2, R312R3.

[1239011203512]

둘째 열을 비운다. R3R33R2.

[123901120026]

행사다리꼴이 되었다. 이제 아래에서 위로 올라간다. 셋째 행은 2z=6 이니 z=3. 둘째 행은 y+z=2 이니 y=1. 첫째 행은 x+2(1)+3(3)=9 이니 x=2.

답은 (x,y,z)=(2,1,3) 이다.

검산은 원래 식에 넣어서 한다. 소거 중간 결과에 넣으면 계산 실수를 그대로 물려받는다. 2+2(1)+3(3)=9 ✓, 2(2)(1)+3=8 ✓, 3(2)3=3 ✓.

기하로는 세 평면이 점 (2,1,3) 하나에서 만난 것이다. 축이 세 열 모두에 있었다는 것이 '해가 하나'의 신호다.

예제 6

다음을 가우스 소거법으로 풀어라. 2y+3z=8, x+2y+z=5, 2x+yz=1.

풀이 보기

첨가행렬을 적는다. 첫 식에 x 가 없으므로 1행 1열이 0이다.

[023812152111]

여기서 곧바로 막힌다. 소거는 1행 1열의 성분으로 아래를 지우는 절차인데, 그 자리가 0이면 몇 배를 해서 더해도 아래가 지워지지 않는다. 축이 될 자리에 0이 놓인 것이다. 이때 필요한 것이 행 교환이고, 기본 행연산 셋 중 둘째가 있는 이유가 이것이다.

1열에 0이 아닌 성분을 가진 행을 위로 올린다. R1R2.

[121502382111]

첫째 열을 비운다. 2행은 이미 0이니 3행만 손대면 된다. R3R32R1.

[121502380339]

3행이 전부 3 의 배수다. R313R3 으로 줄이면 3행이 (0, 1, 13) 이 되는데, 그러면 2행의 축 2보다 3행의 1이 다루기 편하다. 한 번 더 바꾼다. R2R3.

[121501130238]

두 번의 교환은 성격이 다르다. 앞엣것은 필수이고 뒤엣것은 선택이다. 축이 0이면 바꾸지 않고는 진행이 안 되지만, 뒤엣것은 하지 않아도 답이 같고 다만 분수가 생긴다. 수치계산에서 부분 피벗팅(partial pivoting)이라 부르는 것이 뒤엣것을 규칙으로 만든 것이다.

둘째 열을 비운다. R3R32R2.

[121501130012]

행사다리꼴이다. 아래에서 위로 올라간다. z=2, y+2=3 이니 y=1, x+2(1)+2=5 이니 x=1.

답은 (x,y,z)=(1,1,2) 다.

검산은 원래 식에 넣는다. 2(1)+3(2)=8 ✓, 1+2(1)+2=5 ✓, 2(1)+12=1 ✓.

규칙 하나를 챙겨 간다. 축 자리에 0이 나오면 아래에서 0이 아닌 행을 끌어올린다. 그런 행이 하나도 없으면 그 열에는 축이 없는 것이고, 같은 행에 머문 채 다음 열로 넘어간다. 이 규칙 덕에 소거법은 어떤 행렬에서도 멈추지 않는다. 그리고 행 교환이 필요했다는 사실은 뒤의 LU 분해에서 PA=LUP 로 남는다.

예제 7

다음 4×4 연립방정식을 풀어라.

x1+x2+x3+x4=52x1+3x2+x3+2x4=13x1+x2+2x3+3x4=103x1+4x2+2x3+x4=12

풀이 보기

미지수가 넷이라 손대기 성가셔 보이지만 절차는 3×3 과 한 글자도 다르지 않다. 왼쪽 열부터 차례로 비우면 된다.

[11115231213112310342112]

1열. 축이 1이라 편하다. R22R1, R3R1, R43R1 을 한꺼번에 한다.

[11115011030012501123]

2열. 축은 2행의 1이다. 3행은 그 자리가 이미 0이니 4행만 손댄다. R4R4R2.

[11115011030012500026]

3열. 축은 3행의 1인데 그 아래가 이미 0이라 할 일이 없다. 행사다리꼴이 완성되었고 축이 네 열에 모두 있다. 자유변수가 없으니 해가 하나다.

아래에서 위로 올라간다. 2x4=6 에서 x4=3. x3+2(3)=5 에서 x3=1. x2(1)+0=3 에서 x2=2. x1+2+(1)+3=5 에서 x1=1.

(x1,x2,x3,x4)=(1,2,1,3)

검산은 네 식 전부에 넣는다. 1+21+3=5 ✓, 2+61+6=13 ✓, 1+22+9=10 ✓, 3+82+3=12 ✓.

크기가 커질 때 무엇이 늘어나는지 세어 두면 좋다. n 개 열을 차례로 비우는 데 드는 곱셈이 대략 n3/3 번이다. n=4 이면 스무 번 남짓이고 n=100 이면 33만 번쯤인데, 다음 장에서 볼 여인자 전개의 n! 에 비하면 비교가 되지 않을 만큼 적다. 큰 연립방정식을 실제로 푸는 방법은 언제나 소거법인 이유가 이 셈에 있다.

기약 행사다리꼴에서 해를 읽는다

소거를 끝냈으면 답의 개수는 보기만 하면 나온다. 확인할 것은 두 가지뿐이다.

왼쪽에서 오른쪽으로 두 번만 물으면 세 경우가 갈린다. 첫 물음은 모순이 있는가를, 둘째 물음은 자유롭게 정할 수 있는 미지수가 남았는가를 묻는다
<왼쪽에서 오른쪽으로 두 번만 물으면 세 경우가 갈린다. 첫 물음은 모순이 있는가를, 둘째 물음은 자유롭게 정할 수 있는 미지수가 남았는가를 묻는다>[원본 보기]

첫째, 맨 오른쪽 열(상수 열)에 축이 있으면 0x1++0xn=1 이라는 행이 있다는 뜻이고, 이는 0=1 이므로 해가 없다. 이런 연립방정식을 불능이라 한다.

둘째, 그런 행이 없다면 해는 반드시 있다. 이때 축이 없는 열에 대응하는 미지수를 자유변수(free variable)라 하고, 축열에 대응하는 미지수를 선도변수라 한다. 자유변수는 아무 값이나 골라도 되고, 그 값을 정하면 선도변수가 따라서 정해진다. 그러니 자유변수가 하나도 없으면 해가 하나, 하나라도 있으면 해가 무수히 많다.

예제 8

다음을 풀고 해집합을 매개변수로 나타내라. x+y+2z=4, 2x+3y+5z=11, x+2y+3z=7.

풀이 보기

[1124235111237] R22R1, R3R1 [112401130113]

2행과 3행이 똑같다. R3R3R2 를 하면 3행이 통째로 0이 된다. 마지막으로 R1R1R2 로 기약 행사다리꼴까지 간다.

[101101130000]

상수 열에는 축이 없으니 해가 있다. 축은 1열과 2열에 있고 3열에는 없다. 그러니 z 가 자유변수다. z=t 로 두면 두 행은 x+t=1, y+t=3 이므로

(x,y,z)=(1t, 3t, t)=(1,3,0)+t(1,1,1)

이것은 점 (1,3,0) 을 지나고 방향이 (1,1,1)직선이다. 세 평면이 한 점이 아니라 한 직선을 공유한 것이고, 3행이 0이 된 것은 셋째 식이 앞의 두 식에서 이미 따라 나오는 군더더기였다는 뜻이다.

검산은 t 를 두 값 넣어 본다. t=0 이면 (1,3,0) 이고 세 식이 각각 4,11,7 ✓. t=1 이면 (0,2,1) 이고 역시 4,11,7 ✓.

예제 9

앞 예제에서 셋째 식의 상수항만 7에서 8로 바꾸면 어떻게 되는가. x+y+2z=4, 2x+3y+5z=11, x+2y+3z=8.

풀이 보기

왼쪽 변이 그대로이므로 소거 과정도 그대로다. 상수 열만 따라간다.

[1124235111238] R22R1, R3R1 [112401130114]

마지막으로 R3R3R2 를 한다.

[112401130001]

마지막 행이 0x+0y+0z=1, 곧 0=1 이다. 해가 없다.

상수항 하나를 1만큼 옮겼을 뿐인데 무수히 많던 해가 통째로 사라졌다. 기하로 보면 한 직선을 공유하던 세 평면 중 하나가 나란히 밀려나, 세 평면을 동시에 지나는 점이 없어진 것이다.

왼쪽 변만 보고 해의 개수를 말할 수 없다는 것이 이 예제의 교훈이다. 왼쪽 변은 '해가 하나인가 아닌가'를 정하고, 상수항은 '아예 없는가 무수히 많은가'를 정한다.

동차연립일차방정식

상수항이 전부 0인 연립방정식 Ax=0동차연립일차방정식(homogeneous system)이라 한다. 이 경우는 특별히 다룰 만한 이유가 있다.

첫째, 해가 없는 경우가 없다. 모든 미지수를 0으로 두면 언제나 성립하기 때문이다. 이 해 x=0자명해(trivial solution)라 한다. 소거를 해도 상수 열이 계속 0이라 0=1 꼴이 나올 수 없다. 그래서 동차연립방정식의 답은 자명해뿐이거나 무수히 많거나 둘 중 하나다.

둘째, 미지수가 방정식보다 많으면 자명하지 않은 해가 반드시 있다. 축은 행마다 많아야 하나씩 생기므로 축의 개수는 방정식의 개수를 넘지 못한다. 미지수가 그보다 많으면 축이 없는 열, 곧 자유변수가 반드시 남는다.

예제 10

x+2y+3z=0, 2x+5y+4z=0 의 해를 모두 구하라.

풀이 보기

미지수 셋에 방정식 둘이므로 위 성질에 따라 자명하지 않은 해가 반드시 있다. 상수 열이 계속 0이니 계수행렬만 소거해도 된다.

[123254] R22R1 [123012] R12R2 [107012]

두 번째 연산에서 1행의 2열을 비웠다. 기약 행사다리꼴이다.

축이 1열과 2열에 있으므로 z 가 자유변수다. z=t 로 두면 x=7t, y=2t 다.

(x,y,z)=t(7,2,1)

해집합이 원점을 지나는 직선이다. 동차연립방정식의 해집합이 언제나 원점을 지나는 것은 자명해가 늘 들어 있기 때문이고, 이 성질이 6장에서 '영공간'이라는 이름을 얻는다.

검산. t=1 일 때 (7,2,1) 이고 7+4+3=0 ✓, 14+10+4=0 ✓.

행렬의 연산

행렬을 기록 수단으로만 쓸 것이라면 여기서 멈춰도 된다. 그러나 행렬끼리 더하고 곱할 수 있게 만들면, 연립방정식을 하나의 방정식처럼 다룰 수 있게 된다. 그것이 이 절의 목적이다.

합, 스칼라배, 전치

스칼라배는 짐작한 대로다. 크기가 같은 두 행렬은 같은 자리끼리 더하고, 수를 곱할 때는 모든 성분에 곱한다. 크기가 다르면 합을 정의하지 않는다.

(A+B)ij=aij+bij,(kA)ij=kaij

전치(transpose)는 행과 열을 맞바꾼 것이고 AT 로 적는다. m×n 행렬의 전치는 n×m 행렬이다.

(AT)ij=aji

대각선을 축으로 접었다고 보면 된다. 두 번 접으면 제자리이므로 (AT)T=A 다.

곱은 왜 그렇게 정의되는가

행렬 곱의 정의는 처음 보면 뜬금없다. 왜 같은 자리끼리 곱하지 않고 '앞 행렬의 행과 뒤 행렬의 열을 짝지어 곱해 더하는가.' 답은 행렬이 변환이기 때문이다.

먼저 행렬과 벡터의 곱부터 본다. Am×n 이고 xn×1 일 때

Ax=[a11a12a21a22][x1x2]=x1[a11a21]+x2[a12a22]

로 정의한다. 즉 AxA 의 열들에 x 의 성분을 각각 곱해 더한 것이다. 여러 벡터에 수를 곱해 더한 것을 일차결합(linear combination)이라 하는데, 6장에서 본격적으로 다룰 이름이다. 이렇게 정의하면 앞에서 약속했던 Ax=b 가 정확히 원래 연립방정식이 된다. 직접 풀어 보면 i 번째 성분이 ai1x1++ainxn 이기 때문이다.

이제 A 를 '벡터를 넣으면 벡터가 나오는 장치'로 볼 수 있다. 그러면 자연스러운 물음이 생긴다. 장치를 두 번 통과시키면 어떻게 되는가. 먼저 B 를 거치고 다음에 A 를 거친 결과 A(Bx) 를 한 번에 내주는 행렬이 있다면, 그것을 AB 라 부르는 것이 옳다.

단위 정사각형을 B 로 보내고 다시 A 로 보낸 결과가, 처음부터 AB 로 보낸 결과와 같다. AB 의 각 열이 A 에 B 의 그 열을 곱한 것이라는 사실이 곱셈 규칙의 정체다
<단위 정사각형을 B 로 보내고 다시 A 로 보낸 결과가, 처음부터 AB 로 보낸 결과와 같다. AB 의 각 열이 A 에 B 의 그 열을 곱한 것이라는 사실이 곱셈 규칙의 정체다>[원본 보기]

그림에서 읽을 것은 이것이다. B 의 열들은 e1,e2B 를 통과한 결과이고, 거기에 다시 A 를 먹이면 AB 의 열이 나온다. 그러니

AB 의 j 번째 열=A×(B 의 j 번째 열)

이고, 이것을 성분으로 풀어 쓰면 익히 아는 규칙이 된다.

(AB)ij=k=1naikbkj

Ai 행과 Bj 열을 앞에서부터 짝지어 곱해 더한 값이다. 짝이 맞으려면 A 의 열 수와 B 의 행 수가 같아야 한다. (m×n)(n×p)=(m×p) 라고 외워도 좋지만, 가운데 두 수가 같아야 하고 그 둘이 사라진다고 기억하는 편이 쓸모 있다.

곱셈의 항등원은 대각선이 1이고 나머지가 0인 단위행렬 In 이다. 모든 n×n 행렬 A 에 대해 AI=IA=A 다.

예제 11

A=[2113], x=[12] 에 대해 Ax 를 두 가지 방법으로 구하고, B=[0121] 에 대해 (AB)T=BTAT 를 확인하라.

풀이 보기

열의 일차결합으로. x 의 성분 1과 2를 A 의 두 열에 각각 곱해 더한다.

Ax=1[21]+2[13]=[21]+[26]=[47]

행과 열의 곱으로. 1행 (2,1)(1,2) 의 곱은 2+2=4, 2행 (1,3) 과의 곱은 1+6=7. 같은 답이 나왔다. 두 방법은 같은 계산을 다른 순서로 훑은 것뿐이다.

이제 전치를 확인한다. 먼저 곱을 구한다.

AB=[2113][0121]=[0+22+10+61+3]=[2162]

따라서 (AB)T=[2612] 다. 반대쪽을 계산하면

BTAT=[0211][2113]=[0+20+62+11+3]=[2612]

같다. 순서가 뒤집힌다는 것이 이 공식의 요점이고, 옷을 벗을 때 겉옷을 먼저 벗는 것과 같은 이치다. ATBT 로 적으면 크기부터 맞지 않는 경우가 많다.

결합법칙은 성립하고 교환법칙은 성립하지 않는다

행렬 곱은 수의 곱과 닮았지만 결정적으로 하나가 다르다. 여기서 넘어가면 뒤에서 계속 틀린다.

먼저 성립하는 것부터. 결합법칙 (AB)C=A(BC) 는 성립한다. 이유는 그림 없이도 보인다. 두 쪽 다 'C 를 거치고 B 를 거치고 A 를 거친다'는 같은 절차를 뜻하기 때문이다. 괄호는 어느 두 단계를 먼저 묶어 계산하느냐를 말할 뿐, 순서를 바꾸지 않는다. 분배법칙 A(B+C)=AB+AC 도 성립한다.

성립하지 않는 것은 교환법칙이다. ABBA 는 일반적으로 다르다.

반사를 먼저 하고 회전한 것과, 회전을 먼저 하고 반사한 것은 서로 다른 도형을 준다. 두 결과 모두 반사이지만 축이 다르다. 행렬 곱에서 순서는 지울 수 없는 정보다
<반사를 먼저 하고 회전한 것과, 회전을 먼저 하고 반사한 것은 서로 다른 도형을 준다. 두 결과 모두 반사이지만 축이 다르다. 행렬 곱에서 순서는 지울 수 없는 정보다>[원본 보기]

예제 12

A=[0110](원점을 중심으로 한 90° 회전), B=[1001](x 축에 대한 반사)에 대해 ABBA 를 구하고 비교하라.

풀이 보기

AB=[0110][1001]=[0110],BA=[1001][0110]=[0110]

두 결과가 다르다. 부호만 다른 것이 아니라 서로 다른 변환이다. AB(x,y)(y,x) 로 보내니 직선 y=x 에 대한 반사이고, BA(y,x) 로 보내니 직선 y=x 에 대한 반사다.

한 점으로 확인해 보자. (1,0) 을 넣으면 AB(0,1) 을, BA(0,1) 을 준다. 정반대다.

왜 그런가. AB 는 '반사한 다음 회전'이고 BA 는 '회전한 다음 반사'다. 옷을 입는 순서와 같아서, 순서를 바꾸면 다른 결과가 나오는 것이 오히려 자연스럽다. 수의 곱에서 교환법칙이 성립하는 쪽이 특별한 경우다.

함께 기억할 것이 둘 더 있다. AB=O(영행렬)인데 AB 도 영행렬이 아닌 경우가 있고([1000][0001]=O), 따라서 AC=BC 라고 해서 A=B 라 결론지을 수도 없다. 양변을 행렬로 나눈다는 조작은 없다. 그 대신 쓰는 것이 다음 절의 역행렬이다.

역행렬

a0 에 대해 ax=b 를 풀 때 우리는 양변에 1/a 를 곱한다. 행렬에서도 같은 것을 하고 싶다. Ax=b 의 양변 왼쪽에 무언가를 곱해 x 만 남기는 것이다.

정사각행렬 A 에 대해 AB=BA=I 를 만족하는 B 가 있으면 A가역(invertible) 또는 정칙이라 하고, 그 B역행렬이라 하며 A1 로 적는다. 그런 B 가 없으면 A특이(singular)하다고 한다. 역행렬은 있다면 하나뿐이다. BC 가 둘 다 역행렬이면 B=BI=B(AC)=(BA)C=IC=C 이기 때문이다. 결합법칙이 여기서 값을 한다.

역행렬은 A 가 격자에 한 일을 정확히 되돌린다. 되돌릴 수 없는 경우 — 서로 다른 두 점이 같은 자리로 겹쳐 버리는 경우 — 가 언제 생기는지는 4장에서 행렬식이 답한다
<역행렬은 A 가 격자에 한 일을 정확히 되돌린다. 되돌릴 수 없는 경우 — 서로 다른 두 점이 같은 자리로 겹쳐 버리는 경우 — 가 언제 생기는지는 4장에서 행렬식이 답한다>[원본 보기]

2×2 는 공식이 있다.

A=[abcd]A1=1adbc[dbca](adbc0)

대각선 두 성분을 맞바꾸고, 나머지 둘에 음수 부호를 붙이고, adbc 로 나눈다. 곱해 보면 정말 I 가 된다. 이 adbc 라는 수가 다음 장의 주인공인 행렬식이고, 이것이 0이면 나눌 수 없으니 역행렬도 없다.

크기가 커지면 공식보다 소거법이 낫다. 방법은 이렇다. A 오른쪽에 단위행렬을 붙인 [AI] 를 만들고, 왼쪽이 I 가 될 때까지 기본 행연산을 한다. 그러면 오른쪽에 저절로 A1 가 나타난다.

왜 그런가. 기본 행연산 하나하나는 단위행렬에 그 연산을 한 번 적용해 만든 행렬, 곧 기본행렬(elementary matrix) E 를 왼쪽에 곱하는 것과 같다. 그러니 소거를 k 번 해서 왼쪽이 I 가 되었다면 EkE1A=I 이고, 같은 연산을 오른쪽 절반에도 똑같이 했으므로 오른쪽은 EkE1I=EkE1 다. 그런데 EkE1=A1 이다. 두 절반에 같은 일을 하는 것이 이 요령의 전부다.

예제 13

2x+3y=8, x+2y=5 를 역행렬로 풀어라.

풀이 보기

계수행렬은 A=[2312] 이고 adbc=43=1 이다. 0이 아니므로 역행렬이 있다.

A1=11[2312]=[2312]

Ax=b 의 양변 왼쪽A1 를 곱한다. 순서가 중요하다. 곱은 교환되지 않으므로 오른쪽에 곱하면 x 가 남지 않는다.

x=A1b=[2312][85]=[16158+10]=[12]

검산. 2(1)+3(2)=8 ✓, 1+2(2)=5 ✓.

한 가지 짚어 둘 것이 있다. 연립방정식 하나를 푸는 데는 역행렬이 소거법보다 느리다. 역행렬을 구하는 일 자체가 소거법을 여러 번 하는 것이기 때문이다. 역행렬이 값을 하는 곳은 같은 A 에 여러 b 를 풀어야 할 때, 그리고 식을 기호로 정리해야 할 때다.

예제 14

A=[123014560] 의 역행렬을 구하라.

풀이 보기

[AI] 를 만들고 왼쪽을 I 로 만든다.

[123100014010560001]

R3R35R1 을 하면

[1231000140100415501]

이어서 R3R3+4R2 를 하면 3행의 왼쪽이 정리된다.

[123100014010001541]

여기까지가 아래를 비우는 단계다. 이제 위를 비운다. R2R24R3, R1R13R3.

[1201612301020154001541]

마지막으로 R1R12R2.

[1002418501020154001541]

A1=[2418520154541]

검산은 AA1 의 성분 몇 개만 봐도 된다. 1행 1열은 1(24)+2(20)+3(5)=24+4015=1 ✓, 1행 2열은 1(18)+2(15)+3(4)=1830+12=0 ✓.

소거 도중 왼쪽에 전부 0인 행이 나타나면 거기서 멈춘다. 그 행은 어떤 연산으로도 1을 만들어 낼 수 없으므로 왼쪽이 I 가 될 수 없고, 그것이 곧 A 가 특이행렬이라는 뜻이다.

역행렬의 성질을 모아 둔다. 증명은 모두 '곱했더니 I 가 되더라'를 확인하는 한 줄이다.

성질한 줄 이유
두 번 뒤집으면 제자리(A1)1=AAA1 의 역행렬이기도 하다
곱의 역행렬은 순서가 뒤집힌다(AB)1=B1A1(AB)(B1A1)=AIA1=I
전치와 역은 자리를 바꿔도 된다(AT)1=(A1)TAT(A1)T=(A1A)T=I
스칼라배(kA)1=(1/k)A1k0 일 때
곱이 가역이면 각각도 가역AB 가 가역 A,B 가 가역되돌릴 수 있는 두 단계는 각각도 되돌릴 수 있다

특별한 모양의 행렬과 LU 분해

정사각행렬 가운데 소거법이 특히 쉬워지는 모양이 있다. 이름을 붙여 둔다.

이름조건왜 편한가
상삼각행렬주대각선 아래가 모두 0이미 행사다리꼴이라 대입만 하면 된다
하삼각행렬주대각선 위가 모두 0위에서 아래로 차례로 대입한다
대각행렬주대각선 밖이 모두 0방정식들이 서로 얽혀 있지 않다
대칭행렬A=AT행과 열을 구분할 필요가 없다

삼각행렬은 주대각선 성분이 모두 0이 아닐 때에만 가역이다. 대각선에 0이 있으면 그 열에 축을 만들 수 없기 때문이다. 삼각행렬끼리의 곱은 같은 종류의 삼각행렬이고, 가역인 삼각행렬의 역행렬도 같은 종류다.

대칭행렬에 대해서는 한 가지만 기억해 두면 8장과 9장이 편해진다. 임의의 행렬 A 에 대해 ATAAAT 는 언제나 대칭행렬이다. (ATA)T=AT(AT)T=ATA 이기 때문이다.

이제 삼각행렬이 왜 쓸모 있는지를 보여 주는 LU 분해로 마무리한다. 같은 계수행렬 A 에 상수항 b 만 바꿔 가며 수십 번 풀어야 하는 상황을 생각해 보자. 매번 처음부터 소거하는 것은 낭비다. 소거 과정 자체를 저장해 두면 좋겠는데, 그 저장 방식이 LU 분해다.

행 교환 없이 소거해서 상삼각행렬 U 를 얻었다면, 그때 쓴 배수들을 제자리에 적어 넣은 하삼각행렬 L 이 함께 만들어지고 A=LU 가 성립한다. 규칙은 하나다. RiRikRj 를 했다면 L(i,j) 자리에 k 를 적는다. 대각선은 1로 채운다.

이렇게 두면 Ax=bL(Ux)=b 이므로, Ly=b 를 위에서 아래로 풀어 y 를 얻고 Ux=y 를 아래에서 위로 풀면 끝난다. 삼각행렬 두 번이라 대입만 하면 되고, b 가 바뀌어도 LU 는 그대로 쓴다.

예제 15

A=[211460272] 를 LU 분해하고, 그것으로 Ax=(5,2,9)T 를 풀어라.

풀이 보기

행 교환 없이 소거하면서 쓴 배수를 옆에 적어 둔다.

R2R22R1 (배수 2), R3R3+R1 (배수 1), 그리고 R3R3+R2 (배수 1).

U=[211082001],L=[100210111]

확인해 두자. L 의 3행 (1,1,1)U 를 곱하면 (2, 1+8, 1+2+1)=(2,7,2)A 의 3행과 같다.

이제 Ly=b위에서 아래로 푼다. 하삼각행렬이라 첫 줄에 미지수가 하나뿐이다.

y1=5,2(5)+y2=2y2=12,5(12)+y3=9y3=2

다음으로 Ux=y아래에서 위로 푼다.

z=2,8y2(2)=12y=1,2x+1+2=5x=1

답은 (1,1,2) 다. 원래 식에 넣으면 2+1+2=5 ✓, 46+0=2 ✓, 2+7+4=9 ✓.

소거 도중 대각선에 0이 나와 행을 바꿔야 하는 경우도 있다. 그때는 필요한 행 교환을 미리 A 에 적용해 두면(치환행렬 P 를 곱하면) PA=LU 꼴로 분해된다. 실제 계산 프로그램이 쓰는 것이 이 형태다.

예제 16

A=[1203]B=[4102] 에 대해 AB 를 구하고, 상삼각행렬의 곱이 상삼각행렬임을 확인하라. 또 A1 도 상삼각행렬인지 보아라.

풀이 보기

AB=[1(4)+2(0)1(1)+2(2)0(4)+3(0)0(1)+3(2)]=[4306]

왼쪽 아래가 0이므로 상삼각행렬이다. 우연이 아니다. 그 자리는 A 의 2행과 B 의 1열의 곱인데, A 의 2행은 앞부분이 0이고 B 의 1열은 뒷부분이 0이라 겹쳐 곱해지는 항이 하나도 없다. 크기가 커져도 같은 논리가 그대로 통한다. 대각선 성분이 1×4=4, 3×2=6 으로 대각선끼리 곱해진 값이 되는 것도 눈여겨볼 만하다. 4장에서 다시 쓴다.

역행렬은 adbc=3 이므로

A1=13[3201]=[12/301/3]

역시 상삼각행렬이다. 소거로 생각하면 당연하다. [AI] 를 소거할 때 이미 아래가 비어 있으니 위를 비우는 연산만 하게 되고, 그 연산들은 오른쪽 절반의 아래쪽을 건드리지 않는다.

3장 정리

이 장에서 새로 정한 기호와 말을 모은다. 다음 장부터는 설명 없이 쓴다.

기호 또는 용어
m×n 행렬가로줄 m 개, 세로줄 n 개로 수를 늘어놓은 것. 성분은 aij (행 먼저)
Ax=b연립일차방정식을 한 줄로 적은 것. A 는 계수행렬, b 는 상수항 열
[Ab]첨가행렬. 계수행렬 오른쪽에 상수항 열을 붙인 것
기본 행연산배수 곱하기, 행 바꾸기, 배수를 다른 행에 더하기. 해집합을 바꾸지 않는다
행사다리꼴 REF, 기약 행사다리꼴 RREF소거의 두 종착점. RREF 는 행렬마다 하나뿐이다
축(pivot), 자유변수선행성분의 자리와, 축이 없는 열에 대응하는 미지수
동차연립방정식상수항이 전부 0. 자명해뿐이거나 해가 무수히 많다
AT전치. (AT)ij=aji 이고 (AB)T=BTAT
AB변환의 합성. (AB)ij=kaikbkj. 결합법칙은 성립, 교환법칙은 성립하지 않는다
In단위행렬. 곱셈의 항등원
A1역행렬. AA1=A1A=I. [AI] 를 소거해 구한다
기본행렬 E단위행렬에 기본 행연산을 한 번 한 것. 왼쪽에 곱하면 그 연산이 된다
삼각·대각·대칭행렬소거가 쉬워지는 모양들. 삼각행렬은 대각선에 0이 없어야 가역
A=LULU 분해. 소거 과정을 저장해 두고 상수항만 바꿔 가며 재사용한다

남겨 둔 물음이 하나 있다. 2×2 역행렬 공식에 나온 adbc 는 도대체 무엇이며, 왜 이 값이 0인지 아닌지가 가역성을 가르는가. 다음 장이 그 답이다.

행렬식

앞 장에서 2×2 역행렬 공식에 adbc 라는 수가 나왔다. 이 값이 0이면 역행렬이 없다고 했는데, 왜 하필 이 조합인지는 말하지 않았다. 이 장이 그 답이다.

결론을 먼저 말해 둔다. adbc 는 넓이다. 정확히는 행렬의 두 열이 만드는 평행사변형의 넓이이고, 3×3 이면 세 열이 만드는 상자의 부피다. 그러면 '이 값이 0이다'는 '넓이가 0이다', 곧 납작하게 찌부러졌다는 뜻이 되고, 찌부러진 것을 되돌릴 수 없다는 사실에서 역행렬이 없다는 결론이 곧바로 나온다.

이 장에서 답할 질문은 셋이다. 행렬식은 무엇을 재는 값인가, 어떻게 계산하는가, 그리고 0이라는 것이 무엇을 뜻하는가. 앞 장의 기본 행연산과 삼각행렬을 계속 쓴다.

시작하기 전에 말 하나를 미리 빌린다. 이 장은 행렬의 열을 '평면 위의 화살표'로 그린다. 원점에서 출발해 점 (a,b) 에 화살촉을 둔 것을 그 열의 화살표라 하고, 점 P 에서 점 Q 로 가는 화살표는 PQ 로 적는다. 성분은 도착 좌표에서 출발 좌표를 뺀 것, 곧 PQ=(xQxP, yQyP) 다. 화살표의 길이와 두 화살표가 이루는 각을 제대로 정의하는 것은 5장이고, 이 장에서 쓰는 것은 넓이와 부피, 그리고 도는 방향뿐이라 그 정의를 앞당길 필요가 없다.

도는 방향은 여기서 정해 둔다. 평면에서 첫 화살표를 둘째 화살표 쪽으로 180° 안쪽으로 돌릴 때 반시계로 돌면 두 화살표가 이 순서로 양의 방향을 이룬다 하고, 시계로 돌면 음의 방향이라 한다. 공간에서는 화살표가 셋이라 이름이 하나 더 필요하다. 오른손의 엄지·검지·중지를 서로 직각이 되게 펴서 엄지를 첫째 화살표에, 검지를 둘째 화살표에 맞췄을 때 중지가 셋째 화살표와 같은 쪽(정확히는 셋째 화살표와 이루는 각이 90° 보다 작은 쪽)을 가리키면, 세 화살표가 이 순서로 오른손 좌표계(right-handed system)를 이룬다고 한다. 같은 일을 왼손으로 해야 맞으면 왼손 좌표계(left-handed system)다. 표준적인 x,y,z 축이 이 순서로 오른손 좌표계이고, 두 축을 맞바꾸거나 한 축의 방향을 뒤집으면 왼손 좌표계로 바뀐다. 이 장에서 행렬식의 부호가 기록하는 것이 바로 이 구별이다.

넓이에서 출발한다

2×2 행렬 A=[acbd] 의 두 열은 평면 위의 화살표 둘이다. 첫 열이 (a,b), 둘째 열이 (c,d) 다. 이 둘을 두 변으로 삼는 평행사변형을 그려 보자.

가운데 그림이 ad − bc 라는 조합의 정체다. 두 벡터를 감싸는 직사각형에서 바깥 조각 여섯을 덜어 내면 평행사변형이 남는다. 오른쪽은 두 열의 순서를 바꾸면 넓이는 그대로이고 부호만 뒤집힌다는 것을 보인다
<가운데 그림이 ad − bc 라는 조합의 정체다. 두 벡터를 감싸는 직사각형에서 바깥 조각 여섯을 덜어 내면 평행사변형이 남는다. 오른쪽은 두 열의 순서를 바꾸면 넓이는 그대로이고 부호만 뒤집힌다는 것을 보인다>[원본 보기]

가운데 그림을 따라가 보자. 두 벡터를 감싸는 직사각형의 넓이는 (a+c)(b+d) 다. 여기서 바깥에 남는 조각은 삼각형 넷과 직사각형 둘인데, 삼각형은 두 개씩 짝지어 넓이가 abcd 이고 직사각형 둘의 넓이는 2bc 다. 빼면

(a+c)(b+d)abcd2bc=ab+ad+cb+cdabcd2bc=adbc

가 남는다. adbc 는 평행사변형의 넓이였다.

다만 이 값은 음수가 될 수 있다. 넓이가 음수일 수는 없으니 무언가 더 있다는 뜻이다. 그 무언가가 방향이다. 첫 열에서 둘째 열로 갈 때 반시계로 돌면 양수, 시계로 돌면 음수다. 그래서 이 값을 부호 있는 넓이라 부르고, 정식 이름을 붙여 행렬식(determinant)이라 한다. 표기는 detA 또는 세로 막대 |A| 다.

det[acbd]=|acbd|=adbc

방향까지 담는 편이 왜 나은가. 넓이만 재려면 절댓값을 씌우면 되지만, 그러면 계산 규칙이 지저분해진다. 부호를 살려 두면 곱셈이 깔끔하게 성립하고(뒤에서 본다), 덤으로 변환이 평면을 뒤집었는지를 알려 준다. 거울에 비친 상은 넓이가 같아도 왼손이 오른손이 되는데, 행렬식의 부호가 정확히 그것을 기록한다.

예제 17

A=[3112] 와, 두 열을 맞바꾼 A=[1321] 의 행렬식을 구하고 뜻을 말하라.

풀이 보기

detA=3211=5, detA=1132=5.

크기가 같고 부호만 반대다. 두 경우 모두 같은 평행사변형을 그린다. 열의 순서만 바꿨으니 도형이 달라질 리 없다. 달라진 것은 첫 열에서 둘째 열로 도는 방향뿐이다.

A 에서는 (3,1) 에서 (1,2) 로 반시계로 돈다. A 에서는 (1,2) 에서 (3,1) 로 시계로 돈다. 그래서 부호가 갈렸다.

넓이만 알고 싶으면 절댓값을 취해 |detA|=5 라고 하면 된다. 앞으로 '넓이'라고 할 때는 절댓값을, '행렬식'이라 할 때는 부호까지 포함한 값을 뜻한다.

예제 18

세 점 P(1,1), Q(4,2), R(2,3) 이 만드는 삼각형의 넓이를 구하라. 또 세 점이 한 직선 위에 있을 조건을 행렬식으로 적어라.

풀이 보기

삼각형은 평행사변형의 절반이다. 그러니 P 를 원점으로 옮겨 두 변을 벡터로 만들고, 그 둘이 이루는 평행사변형의 넓이를 반으로 나누면 된다.

PQ=(41, 21)=(3,1),PR=(21, 31)=(1,2)

두 벡터를 열로 세워 행렬식을 구한다. 앞 예제와 같은 행렬이라 값은 5다.

삼각형 넓이=12|det[3112]|=12×5=52

세 점이 한 직선 위에 있다면 두 벡터가 같은 직선을 향하므로 평행사변형이 납작해지고 넓이가 0이 된다. 조건은

det[x2x1x3x1y2y1y3y1]=0

이다. 확인해 보자. R(7,3) 으로 바꾸면 PR=(6,2) 인데 이것은 PQ=(3,1) 의 2배다. 행렬식은 3216=0 이고, 실제로 세 점이 한 직선 위에 있다.

좌표기하에서 외우던 삼각형 넓이 공식이 이 행렬식을 풀어 쓴 것이다.

3×3 과 여인자 전개

미지수가 셋이면 열이 셋이고, 세 화살표가 만드는 것은 상자(평행육면체)다. 행렬식은 그 부피가 된다.

왼쪽의 부피 1짜리 정육면체가 오른쪽 상자로 바뀌었고 그 부피가 8이다. 2차원에서 넓이였던 것이 차원 하나 올라가 부피가 된 것뿐이며, 부호는 세 벡터가 오른손 좌표계를 이루는지를 기록한다
<왼쪽의 부피 1짜리 정육면체가 오른쪽 상자로 바뀌었고 그 부피가 8이다. 2차원에서 넓이였던 것이 차원 하나 올라가 부피가 된 것뿐이며, 부호는 세 벡터가 오른손 좌표계를 이루는지를 기록한다>[원본 보기]

그러면 3×3 행렬식을 어떻게 계산하는가. 부피를 직접 재는 대신 차원을 하나씩 내리는 방법을 쓴다.

정사각행렬 A 에서 i 행과 j 열을 통째로 지워 만든 작은 행렬의 행렬식을 소행렬식(minor)이라 하고 Mij 로 적는다. 여기에 부호를 붙인

Cij=(1)i+jMij

여인자(cofactor)라 한다. 부호 (1)i+j 는 외울 것이 아니라 체스판 무늬로 기억하면 된다. 왼쪽 위가 + 이고 한 칸 옮길 때마다 뒤집힌다.

[+++++]

이제 어느 한 행(또는 한 열)을 골라 그 행의 성분과 여인자를 짝지어 곱해 더하면 행렬식이 나온다. 이것을 여인자 전개(cofactor expansion)라 한다.

detA=j=1naijCij(어느 i 를 골라도 같다),detA=i=1naijCij(어느 j 를 골라도 같다)

어느 행을 골라도 같은 값이 나온다는 것이 이 정의의 놀라운 점이고, 증명은 길지만 결과는 계산할 때마다 확인할 수 있다. 크기 1인 행렬은 det[a]=a 로 시작한다. 그러면 2×2 는 첫 행으로 전개해 adcb 가 되어 앞에서 본 식과 맞는다.

실전에서 중요한 것은 0이 가장 많은 행이나 열을 고르는 것이다. 성분이 0이면 그 여인자는 계산할 필요조차 없다.

이 정의는 재귀다

여인자 전개를 다시 보면, n×n 행렬식이 (n1)×(n1) 행렬식들로 정의되어 있다. 그것이 또 한 단계 아래로 내려가고, 결국 1×1 에서 멈춘다. 자기보다 작은 같은 문제로 되돌리는 정의, 곧 재귀적 정의다.

det[a]=a,det[abcd]=adet[d]bdet[c]=adbc

3×3 도 같은 방식으로 2×2 셋으로 내려간다. 이렇게 층층이 쌓인 정의이기 때문에 크기가 커질수록 계산이 폭발한다. n×n 하나를 풀려면 (n1)×(n1)n 개 풀어야 하므로, 필요한 곱셈이 대략 n! 이다. 10×10 이면 300만 번을 넘는다.

3×3 에 한해서는 사루스 법칙(rule of Sarrus)이라는 요령이 있다. 행렬 오른쪽에 1열과 2열을 다시 적고, 왼쪽 위에서 오른쪽 아래로 내려가는 대각선 셋은 더하고 반대 방향 대각선 셋은 빼는 것이다. 여인자 전개를 풀어 쓴 것과 같은 결과가 나온다.

다만 이 요령은 3×3 에서만 통한다. 4×4 에 같은 방식을 쓰면 항이 8개밖에 안 나오는데 실제로는 24개가 필요하다. 대각선 세기가 안 통하는 크기에서 습관대로 쓰다가 틀리는 일이 잦으니, 처음부터 여인자 전개와 소거만 쓰는 편이 안전하다.

예제 19

A=[201312140] 의 행렬식을 1행으로 전개해 구하고, 2열로 전개해도 같은 값이 나오는지 확인하라.

풀이 보기

1행으로. 성분은 2,0,1 이고 부호는 +,,+ 다. 가운데는 0이라 건너뛴다.

C11=+|1240|=08=8,C13=+|3114|=12+1=13

detA=2(8)+0+1(13)=16+13=3

2열로. 성분은 0,1,4 이고 부호는 위에서부터 ,+, 다.

C22=+|2110|=1,C32=|2132|=(43)=1

detA=0+(1)(1)+4(1)=14=3

같다. 부호가 음수라는 것은 세 열이 왼손 좌표계를 이룬다는 뜻이고, 상자의 부피는 |3|=3 이다.

여인자를 계산할 때 가장 흔한 실수는 부호를 성분의 부호와 섞는 것이다. a22=1 이고 C22 의 체스판 부호는 + 다. 이 둘을 곱해서 (1)×(1)=1 이 된 것이지, 어느 한쪽만 보고 판단하면 안 된다.

예제 20

B=[123004560] 의 행렬식을 가장 적은 계산으로 구하라.

풀이 보기

0이 가장 많은 줄을 찾는다. 2행에 0이 둘 있으므로 2행으로 전개하면 항이 하나만 남는다.

2행의 성분은 0,0,4 이고, a23=4 의 체스판 부호는 (1)2+3=1 이다.

C23=|1256|=(610)=4

detB=4×4=16

1행으로 전개했다면 2×2 행렬식을 세 번 구해야 했다. 줄을 잘 고르는 것만으로 계산량이 삼분의 일이 되었다.

크기가 커지면 이 차이가 감당할 수 없을 만큼 벌어진다. n×n 을 여인자 전개로 끝까지 풀면 곱셈이 n! 에 가깝게 필요하다. n=20 이면 계산기로도 끝나지 않는다. 그래서 실제 계산은 다음 절의 방법을 쓴다.

행 연산이 행렬식에 하는 일

앞 장에서 소거법으로 행렬을 삼각행렬까지 밀어붙일 수 있었다. 그 과정에서 행렬식이 어떻게 변하는지 알면, 소거로 행렬식을 구할 수 있다.

가장 중요한 것은 오른쪽이다. 한 벡터를 다른 벡터와 나란한 방향으로 밀어도 밑변과 높이가 그대로라 넓이가 변하지 않는다. 소거에서 가장 많이 쓰는 연산이 행렬식을 건드리지 않는다는 뜻이다
<가장 중요한 것은 오른쪽이다. 한 벡터를 다른 벡터와 나란한 방향으로 밀어도 밑변과 높이가 그대로라 넓이가 변하지 않는다. 소거에서 가장 많이 쓰는 연산이 행렬식을 건드리지 않는다는 뜻이다>[원본 보기]
행 연산행렬식의 변화기하로 보면
한 행에 k 를 곱한다k 배가 된다한 변이 k 배면 넓이도 k 배
두 행을 바꾼다부호가 뒤집힌다도는 방향이 반대가 된다
한 행의 배수를 다른 행에 더한다변하지 않는다밑변과 높이가 그대로다

이 표에서 곧바로 따라오는 것이 몇 가지 있다.

그리고 결정적인 것 하나. 삼각행렬의 행렬식은 주대각선 성분의 곱이다.

det[u110u2200u33]=u11u22u33

1열로 전개하면 u11 항 하나만 남고, 남은 2×2 에 같은 논리를 되풀이하면 된다.

이 둘을 합치면 실전 절차가 나온다. 소거로 삼각행렬을 만들고 대각선을 곱한다. 도중에 행을 바꿨으면 그 횟수만큼 부호를 뒤집고, 행을 k 로 나눴으면 나중에 k 를 곱해 준다. 배수를 더하는 연산은 아무것도 하지 않아도 된다.

마지막으로 전치에 대한 사실 하나. detAT=detA 다. 여인자 전개를 행으로 해도 열로 해도 같은 값이 나온다고 했는데, 전치는 행과 열을 맞바꾸는 것이니 같을 수밖에 없다. 이 덕분에 행에 대해 성립하는 모든 성질이 열에 대해서도 그대로 성립한다.

행렬의 모양을 먼저 보고 가장 싼 길을 고른다. 갈림길의 조건에 해당하는 첫 줄을 택하면 된다. 곁들인 메모가 말하듯, 크기가 조금만 커져도 실제 계산의 기본은 소거로 삼각화하는 길이다
<행렬의 모양을 먼저 보고 가장 싼 길을 고른다. 갈림길의 조건에 해당하는 첫 줄을 택하면 된다. 곁들인 메모가 말하듯, 크기가 조금만 커져도 실제 계산의 기본은 소거로 삼각화하는 길이다>[원본 보기]

예제 21

A=[123211301] 의 행렬식을 소거로 구하라. 앞 장에서 이 행렬로 연립방정식을 푼 적이 있다.

풀이 보기

배수를 더하는 연산만 쓰면 행렬식이 변하지 않으므로 마지막에 보정할 것이 없다. 그 점을 노리고 나눗셈을 피한다.

R2R22R1, R3R33R1 을 하면

[1230550610]

다음으로 R3R365R2 를 한다. 분수가 나오지만 이 연산도 행렬식을 바꾸지 않는다.

[123055004]

3행의 마지막 성분은 1065(5)=10+6=4 다. 이제 대각선을 곱한다.

detA=1×(5)×(4)=20

검산으로 1행 여인자 전개를 해 본다. 1(10)2(23)+3(0+3)=1+10+9=20 ✓.

앞 장에서 이 행렬로 만든 연립방정식은 해가 하나였다. 행렬식이 0이 아닌 것과 딱 맞아떨어진다. 세 평면이 부피가 20인 상자를 만들 만큼 서로 '다른 방향'을 향하고 있었던 것이다.

만약 3장에서처럼 R215R2 같은 나눗셈을 했다면 행렬식이 1/5 배가 되므로, 마지막에 5 를 곱해 되돌려야 한다. 연립방정식을 풀 때는 마음대로 나눠도 되지만 행렬식을 구할 때는 장부를 적어야 한다.

예제 22

다음 두 행렬의 행렬식을 계산 없이 판정하라.

P=[123246789],Q=[123456579]

풀이 보기

P. 2행 (2,4,6) 은 1행 (1,2,3) 의 2배다. 한 행이 다른 행의 배수이면 행렬식은 0이다. R2R22R1 을 하면 2행이 통째로 0이 되고, 0인 행이 있는 행렬의 행렬식은 0이다. 따라서 detP=0.

Q. 눈에 덜 띄지만 3행이 1행과 2행의 합이다. (1+4, 2+5, 3+6)=(5,7,9) ✓. R3R3R1R2 를 하면 3행이 0이 된다. 따라서 detQ=0.

두 경우 모두 세 행이 서로 독립된 정보를 담고 있지 않다는 것이 공통점이다. 셋째 방정식이 앞의 둘에서 이미 따라 나오는 군더더기라는 뜻이고, 3장에서 소거했더니 0인 행이 나오던 상황이 바로 이것이다.

기하로는 세 벡터가 한 평면 안에 눌려 있어 상자가 납작하다. 부피가 0이다.

곱의 행렬식

행렬식이 넓이 배율이라는 관점을 밀고 나가면 곱셈 규칙이 저절로 나온다.

넓이를 두 배로 만드는 변환을 겪고 다시 두 배로 만드는 변환을 겪으면 넓이가 네 배가 된다. 배율은 더해지지 않고 곱해진다는 것이 곱의 행렬식 공식의 전부다
<넓이를 두 배로 만드는 변환을 겪고 다시 두 배로 만드는 변환을 겪으면 넓이가 네 배가 된다. 배율은 더해지지 않고 곱해진다는 것이 곱의 행렬식 공식의 전부다>[원본 보기]

A 가 넓이를 |detA| 배로 만드는 변환이고 B|detB| 배로 만드는 변환이라면, 이어서 적용한 AB 는 넓이를 두 배율의 곱만큼 만든다. 부호까지 따져도 성립한다.

det(AB)=detAdetB

엄밀한 증명은 기본행렬을 거쳐 간다. 기본행렬 E 에 대해 det(EA)=detEdetA 임은 앞 절의 표가 그대로 말해 주고(각 행 연산이 행렬식에 하는 일이 곧 detE 다), 가역행렬은 기본행렬의 곱으로 쓸 수 있으므로 하나씩 떼어 내면 된다. 둘 중 하나가 특이행렬이면 양변이 모두 0이 된다.

여기서 따라오는 것들이 있다.

성질
역행렬의 행렬식det(A1)=1/detAdetAdet(A1)=detI=1
스칼라배det(kA)=kndetAn 개의 행에 각각 k 를 곱한 셈이다
전치detAT=detA행으로 전개하나 열로 전개하나 같다
거듭제곱det(Am)=(detA)m곱의 규칙을 되풀이한다
합은 규칙이 없다det(A+B)detA+detB넓이는 더해지는 양이 아니다

예제 23

A=[2111], B=[1234] 에 대해 det(AB)=detAdetB 를 직접 확인하라.

풀이 보기

각각의 행렬식부터. detA=2111=1, detB=1423=2 이므로 곱은 2 여야 한다.

AB=[2111][1234]=[2+34+41+32+4]=[5846]

det(AB)=5684=3032=2

뜻을 읽어 두자. detA=1A 가 넓이를 전혀 바꾸지 않는 변환이라는 뜻이다(모양은 바꾸지만 넓이는 그대로다). detB=2 는 넓이를 두 배로 늘리면서 평면을 뒤집는다는 뜻이다. 둘을 이어 붙이면 넓이는 두 배, 뒤집힘은 한 번이니 2 다.

순서를 바꿔 BA 를 계산해도 행렬식은 2 다. 곱 자체는 교환되지 않지만 행렬식은 교환된다. 두 수의 곱이라 순서가 상관없기 때문이다.

예제 24

detA=53×3 행렬 A 에 대해 det(2A), det(A1), det(ATA) 를 구하라. 또 det(A+A)=detA+detA 인가?

풀이 보기

det(2A). 스칼라배는 각 행마다 걸린다. 행이 셋이므로 2 를 세 번 뽑아낸다.

det(2A)=23detA=8×5=40

det(A1). AA1=I 의 양변에 행렬식을 취하면 detAdet(A1)=1 이므로 det(A1)=1/5.

det(ATA). 곱의 규칙과 전치의 규칙을 이어 쓴다.

det(ATA)=det(AT)detA=(detA)2=25

제곱이라 언제나 0 이상이다. 9장에서 ATA 가 자주 나오는데, 그때 이 사실이 쓰인다.

마지막 물음은 함정이다. A+A=2A 이므로 왼쪽은 40이고 오른쪽은 5+5=10 이다. 같지 않다. 행렬식에는 덧셈 규칙이 없다. 넓이가 '더하면 더해지는' 양이 아니기 때문이다. 이 착각이 행렬식에서 가장 흔한 실수다.

행렬식이 0 이라는 것

이제 처음 물음으로 돌아간다. detA=0 은 무엇을 뜻하는가.

두 열이 같은 직선 위에 놓이는 순간 평행사변형이 선분으로 찌부러진다. 평면 전체를 만들어 내지 못하니 되돌릴 수도 없다. 행렬식이 0인 것과 역행렬이 없는 것이 같은 말인 이유가 이 그림에 있다
<두 열이 같은 직선 위에 놓이는 순간 평행사변형이 선분으로 찌부러진다. 평면 전체를 만들어 내지 못하니 되돌릴 수도 없다. 행렬식이 0인 것과 역행렬이 없는 것이 같은 말인 이유가 이 그림에 있다>[원본 보기]

넓이가 0이라는 것은 두 열이 같은 직선 위에 놓였다는 뜻이다. 그러면 Ax 는 아무리 x 를 바꿔도 그 직선 위의 점밖에 만들지 못한다. 평면 전체가 직선 하나로 눌린 것이다.

이렇게 되면 되돌릴 수 없다. 직선 위의 한 점만 봐도 그 점으로 오는 x 가 여러 개이고, 직선 밖의 점으로 오는 x 는 하나도 없다. 어느 쪽이든 '거꾸로 가는 함수'를 만들 수 없다. 그래서

detA0 이면 A 는 가역이고, detA=0 이면 특이행렬이다.

3장의 소거법으로 보아도 결론이 같다. 소거로 삼각행렬을 만들었을 때 대각선에 0이 있으면 행렬식이 0이고, 그것은 축이 모자란다는 뜻이며, 축이 모자라면 [AI] 의 왼쪽을 I 로 만들 수 없다. 세 이야기가 같은 이야기다.

detA0 일 때detA=0 일 때
역행렬이 있다역행렬이 없다
Ax=b 가 모든 b 에 대해 해를 하나 갖는다b 에 따라 해가 없거나 무수히 많다
Ax=0 이 자명해만 갖는다Ax=0 이 자명하지 않은 해를 갖는다
축이 모든 열에 있다축이 없는 열이 있다
열들이 공간을 가득 채운다열들이 더 낮은 차원에 눌려 있다

표의 마지막 줄이 6장과 7장으로 이어진다. A 를 '벡터를 벡터로 보내는 장치'로 보면, detA0 은 그 장치가 공간을 눌러 찌부러뜨리지 않는다는 뜻이고 detA=0 은 찌부러뜨린다는 뜻이다. 찌부러진 것은 되돌릴 수 없다. 3장에서 '서로 다른 점이 같은 자리로 겹쳐 버리면 역행렬이 없다'고 했던 것이 바로 이 이야기다.

예제 25

A=[1224] 에 대해 Ax=bb=(3,6)b=(3,7) 두 경우로 풀어라.

풀이 보기

먼저 detA=1422=0 이다. 역행렬이 없으니 x=A1b 로는 풀 수 없고, b 에 따라 답이 달라질 것을 예상할 수 있다.

b=(3,6). 첨가행렬을 소거한다.

[123246] R22R1 [123000]

y 가 자유변수다. y=t 로 두면 x=32t 이므로 해는 (3,0)+t(2,1) 인 직선이다. 해가 무수히 많다.

b=(3,7).

[123247] R22R1 [123001]

마지막 행이 0=1 이다. 해가 없다.

왜 갈렸는가. A 의 두 열 (1,2)(2,4) 는 같은 직선 위에 있으므로 Ax 가 만들 수 있는 것은 그 직선 위의 점뿐이다. (3,6) 은 그 직선 위에 있고(3×(1,2)), (3,7) 은 그 직선 밖에 있다. 행렬식이 0이면 '도달할 수 있는 곳'이 좁아진다는 것이 이 예제의 요점이다.

예제 26

A=[1232k6111] 가 특이행렬이 되는 k 를 구하고, 그때 어떤 일이 일어나는지 설명하라.

풀이 보기

1행으로 여인자 전개한다.

detA=1|k611|2|2611|+3|2k11|=(k6)2(26)+3(2k)

=k6+8+63k=2k+8

특이행렬이 되려면 detA=0 이므로 k=4 다.

k=4 를 넣어 보면 2행이 (2,4,6) 인데, 이것은 1행 (1,2,3) 의 정확히 2배다. 앞 절의 성질대로 행렬식이 0이 되는 것이 당연하다.

뜻을 읽으면 이렇다. 둘째 방정식이 첫째 방정식에 2를 곱한 것에 지나지 않아 새로운 정보가 없다. 미지수 셋에 쓸 만한 방정식은 둘뿐이니 해가 하나로 정해질 수 없고, 상수항이 맞으면 무수히 많고 어긋나면 아예 없다.

k 를 4 근처에서 움직여 보면 행렬식이 0을 지나며 부호가 바뀐다. 상자가 납작해졌다가 반대쪽으로 뒤집히는 것이다.

수반행렬과 크라메르 공식

여인자를 한 번 더 써서 역행렬의 공식을 만들 수 있다. 소거법보다 느리지만, 기호로 다뤄야 할 때 필요하다.

여인자를 제자리에 모두 모은 행렬 C=[Cij]여인자행렬이라 하고, 그 전치수반행렬(adjugate)이라 하며 adj(A)=CT 로 적는다. 전치를 취한다는 점을 놓치기 쉽다.

여기서 두 가지 사실을 쓴다. 하나는 여인자 전개 jaijCij=detA 이고, 다른 하나는 다른 행의 여인자와 짝지어 전개하면 0이라는 것이다.

j=1naijCkj=0(ik)

왜 0인가. 이 합은 Ak 행을 i 행으로 갈아 끼운 행렬의 행렬식과 같은데, 그 행렬은 i 행과 k 행이 똑같으므로 행렬식이 0이다.

두 사실을 합치면 Aadj(A) 는 대각선이 전부 detA 이고 나머지가 0인 행렬, 곧 (detA)I 가 된다. 따라서

A1=1detAadj(A)(detA0)

2×2 에 넣어 보면 여인자가 C11=d, C12=c, C21=b, C22=a 이므로 수반행렬이 [dbca] 다. 3장에서 외웠던 공식이 여기서 나온다.

예제 27

A=[123014560] 의 역행렬을 수반행렬로 구하고, 3장에서 소거로 구한 답과 맞는지 보아라.

풀이 보기

먼저 행렬식. 1행으로 전개한다.

detA=1(1046)2(0045)+3(0615)=24+4015=1

1이라 나눗셈이 없어 편하다. 여인자 아홉 개를 체스판 부호에 맞춰 구한다.

C11=24,C12=(020)=20,C13=05=5

C21=(018)=18,C22=015=15,C23=(610)=4

C31=83=5,C32=(40)=4,C33=10=1

이제 전치해서 수반행렬을 만든다. 여인자행렬의 1행이 수반행렬의 1열이 된다.

adj(A)=[2418520154541],A1=11adj(A)=[2418520154541]

3장에서 [AI] 를 소거해 얻은 답과 정확히 같다. 완전히 다른 두 길이 같은 곳에 닿았다.

두 방법의 값어치가 다르다는 점은 짚어 둘 만하다. n×n 수반행렬을 구하려면 (n1)×(n1) 행렬식을 n2 개 계산해야 한다. 4×4 만 되어도 소거가 훨씬 빠르다. 이 공식은 계산 도구가 아니라 이론 도구다. 역행렬의 성분이 원래 성분들의 다항식이라는 사실을 여기서 읽을 수 있고, 그 사실이 뒤에서 쓰인다.

수반행렬 공식을 x=A1b 에 넣고 성분을 하나씩 뽑아 정리하면 크라메르 공식(Cramer's rule)이 나온다. AjAj 번째 열을 b 로 갈아 끼운 행렬이라 할 때

xj=detAjdetA(detA0)

이다. 기하로 보면 그냥 넓이의 비다.

b 를 a₁ 과 a₂ 의 조합으로 적었을 때, b 와 a₂ 가 만드는 넓이는 a₂ 방향으로 밀어도 변하지 않으므로 x₁a₁ 과 a₂ 가 만드는 넓이와 같다. 그것은 원래 넓이의 x₁ 배다
<b 를 a₁ 과 a₂ 의 조합으로 적었을 때, b 와 a₂ 가 만드는 넓이는 a₂ 방향으로 밀어도 변하지 않으므로 x₁a₁ 과 a₂ 가 만드는 넓이와 같다. 그것은 원래 넓이의 x₁ 배다>[원본 보기]

그림의 논리를 말로 옮기면 이렇다. b=x1a1+x2a2 일 때, ba2 가 만드는 평행사변형에서 x2a2 만큼 미는 것은 '다른 열의 배수를 더하는' 연산이라 넓이를 바꾸지 않는다. 남는 것은 x1a1a2 가 만드는 평행사변형이고 그 넓이는 원래의 x1 배다.

예제 28

크라메르 공식으로 풀어라. 2x+y=5, x+3y=10.

풀이 보기

계수행렬과 그 행렬식부터 구한다.

A=[2113],detA=61=5

0이 아니므로 해가 하나뿐이고 공식을 쓸 수 있다. x 를 구할 때는 첫째 열을 상수항으로 갈아 끼운다.

x=15|51103|=15105=1,y=15|25110|=2055=3

검산. 2(1)+3=5 ✓, 1+3(3)=10 ✓.

갈아 끼우는 열을 헷갈리는 것이 흔한 실수다. 구하려는 미지수의 자리에 해당하는 열을 바꾼다고 기억하면 된다. x 는 첫째 미지수이니 첫째 열이다.

예제 29

3장에서 푼 x+2y+3z=9, 2xy+z=8, 3xz=3 에서 z 만 크라메르 공식으로 구하라.

풀이 보기

미지수 하나만 필요할 때가 크라메르 공식이 가장 값어치 있는 상황이다. 소거는 셋을 다 구해야 하지만 이 공식은 행렬식 두 개면 된다.

계수행렬의 행렬식은 앞 절 예제에서 이미 20으로 구했다. 이제 셋째 열을 상수항 (9,8,3) 으로 갈아 끼운 행렬의 행렬식을 구한다.

A3=[129218303]

3행에 0이 있으므로 3행으로 전개한다. 부호는 +,,+ 다.

detA3=3|2918|0+3|1221|=3(16+9)+3(14)=7515=60

z=detA3detA=6020=3

3장에서 소거로 얻은 답 (2,1,3) 의 셋째 성분과 같다.

다만 실전에서 크라메르 공식을 큰 연립방정식에 쓰지는 않는다. n 개의 미지수를 모두 구하려면 n+1 개의 행렬식이 필요하고, 행렬식 하나가 이미 소거 한 번만큼 비싸다. 이 공식의 값어치는 해를 계수들의 식으로 적어 준다는 데 있다. 계수가 조금 변할 때 해가 어떻게 변하는지를 논할 때 쓴다.

4장 정리

기호 또는 용어
detA, |A|정사각행렬에 대응하는 수. 두 열이 만드는 넓이, 세 열이 만드는 부피의 부호 있는 값
2×2 공식det[acbd]=adbc
소행렬식 Miji 행과 j 열을 지운 행렬의 행렬식
여인자 Cij(1)i+jMij. 부호는 체스판 무늬
여인자 전개detA=jaijCij. 어느 행이나 열로 해도 같다
행 연산의 효과k 배는 k 배, 교환은 부호 반전, 배수를 더하면 그대로
삼각행렬행렬식은 주대각선 성분의 곱
곱과 전치det(AB)=detAdetB, detAT=detA, det(kA)=kndetA
detA=0가역이 아니다. 열들이 낮은 차원에 눌려 있다. 동차연립방정식에 자명하지 않은 해가 있다
수반행렬 adj(A)여인자행렬의 전치. A1=adj(A)/detA
크라메르 공식xj=detAj/detA. j 번째 열을 상수항으로 갈아 끼운다

이 장에서 '열들이 같은 직선 위에 눌려 있다'는 표현을 여러 번 썼다. 그것을 제대로 부르는 이름이 일차종속이고 6장에서 정의한다. 다음 장에서는 그 열 하나하나, 곧 벡터를 정면으로 다룬다. 지금까지 '수를 세로로 세운 것'으로만 쓰던 대상에 길이와 각을 붙이는 일이다.

벡터와 유클리드 공간

앞의 두 장에서 '수를 세로로 세운 것'을 계속 써 왔다. 연립방정식의 상수항 b, 미지수 x, 그리고 행렬의 열 하나하나가 그것이었다. 4장에서는 그 열들이 만드는 넓이와 부피까지 이야기했는데, 정작 길이은 한 번도 정의하지 않았다. 이 장이 그 빈자리를 메운다.

이 장에서 답할 질문은 셋이다. 수의 나열을 어떻게 도형으로 보는가, 두 벡터가 이루는 각을 성분만으로 어떻게 재는가, 그리고 그것으로 직선·평면·거리를 어떻게 다루는가.

앞에서 가져오는 것은 3장의 행렬 표기와 곱, 4장의 행렬식이다. 기초수학에서는 피타고라스 정리, 코사인법칙, /posts/fundamental/elementary-mathematics.html > 삼각함수, 그리고 두 변수에 대한 코시-슈바르츠 부등식을 가져온다.

벡터를 보는 두 가지 방법

실수 n 개를 순서대로 늘어놓은 것을 벡터(vector)라 하고, 그런 것들을 모두 모은 집합을 Rn 이라 쓴다. 이 문서에서는 세로로 세운 열 형태를 기본으로 하되, 지면을 아끼려고 본문에서는 (3,1) 처럼 가로로 적기도 한다. 둘은 같은 것을 다르게 적은 것뿐이다.

u=[u1u2un]Rn

벡터를 보는 방법이 둘 있고, 둘 다 필요하다.

화살표로 볼 때 중요한 약속이 하나 있다. 벡터는 위치가 아니라 '얼마만큼 어느 방향으로'만 담는다. 그래서 평행이동해도 같은 벡터다. 원점에 꼬리를 둔 화살표를 대표로 삼으면 벡터와 점이 일대일로 대응하는데, 그렇게 본 것을 위치벡터라 한다.

연산은 둘뿐이다. 스칼라배다. 성분으로는 자리끼리 더하고 모든 자리에 수를 곱하는 것이지만, 화살표로 보면 뜻이 분명해진다.

합은 화살표를 이어 붙인 것이고, 차는 v 의 끝에서 u 의 끝으로 가는 화살표이며, 스칼라배는 방향은 그대로 두고 길이만 바꾼 것이다. 음수를 곱하면 방향이 정반대가 된다
<합은 화살표를 이어 붙인 것이고, 차는 v 의 끝에서 u 의 끝으로 가는 화살표이며, 스칼라배는 방향은 그대로 두고 길이만 바꾼 것이다. 음수를 곱하면 방향이 정반대가 된다>[원본 보기]

합을 이어 붙이기로 보는 것과 평행사변형의 대각선으로 보는 것은 같은 이야기다. u+vv+u 로 적으면 이어 붙이는 순서만 바뀌고 끝점은 같기 때문이다.

uv 는 특히 자주 쓴다. 그림에서 보듯 v 의 끝에서 u 의 끝으로 가는 화살표이고, 이것이 두 점 사이의 '차이'를 담는다. 뒤에서 거리를 잴 때 이 벡터의 길이를 재게 된다.

예제 30

u=(3,1), v=(1,2) 에 대해 u+v, uv, 2u3v 를 구하고, R3a=(1,2,1), b=(3,0,2) 에 대해서도 2ab 를 구하라.

풀이 보기

성분끼리 계산한다. 규칙이 단순해서 실수할 일은 부호뿐이다.

u+v=(3+1, 1+2)=(4,3),uv=(31, 12)=(2,1)

2u3v=(6,2)(3,6)=(3,4)

R3 도 다를 것이 없다. 자리가 하나 늘었을 뿐이다.

2ab=(2,4,2)(3,0,2)=(1,4,4)

기하로 읽어 두자. uv=(2,1) 은 점 (1,2) 에서 점 (3,1) 로 가려면 오른쪽으로 2, 아래로 1 움직이면 된다는 뜻이다. 실제로 (1,2)+(2,1)=(3,1) 이다. 차를 더하면 원래로 돌아간다는 것이 차의 정의다.

예제 31

두 점 P(1,2)Q(7,5) 에 대해 선분 PQ 의 중점과, PQ1:2 로 내분하는 점을 벡터로 구하라.

풀이 보기

점을 위치벡터로 보면 문제가 벡터 계산이 된다. P 에서 출발해 PQ 방향으로 일정 비율만큼 가는 것이다.

PQ=QP=(71, 52)=(6,3)

중점은 절반만 가면 된다.

M=P+12PQ=(1,2)+(3,1.5)=(4,3.5)

이것을 정리하면 M=P+12(QP)=12(P+Q) 다. 중점은 두 위치벡터의 평균이라는 익숙한 공식이 이렇게 나온다.

1:2 내분점은 전체를 3으로 나눈 것 중 1만큼 간 자리다.

R=P+13PQ=(1,2)+(2,1)=(3,3)

검산. PR 의 길이와 RQ 의 길이가 1:2 인지 보면 된다. PR=(2,1) 이고 RQ=(4,2) 로 정확히 2배다 ✓.

좌표기하에서 외우던 내분점 공식 2P+Q3 을 풀어 쓰면 위 계산과 같다. 벡터로 적으면 공식을 외울 필요가 없어진다.

노름과 거리

화살표의 길이를 노름(norm)이라 하고 v 로 적는다. 절댓값 기호를 두 겹으로 그린 것인데, 실제로 R1 에서는 절댓값과 같아진다.

R2 에서는 피타고라스 정리로 v=v12+v22 다. R3 에서는 밑면의 대각선에 다시 피타고라스를 한 번 더 쓰면 v12+v22+v32 가 나온다. 그러면 일반 차원에서는 그것을 그대로 정의로 삼는다.

v=v12+v22++vn2

길이가 1인 벡터를 단위벡터라 한다. 영벡터가 아닌 벡터를 자기 길이로 나누면 방향은 그대로이고 길이만 1이 되는데, 이것을 정규화라 한다.

v^=vv

두 점 사이의 거리는 차 벡터의 길이다.

d(u,v)=uv=(u1v1)2++(unvn)2

노름의 성질 셋을 적어 둔다. 앞의 둘은 정의에서 바로 나오고, 셋째는 뒤에서 증명한다.

예제 32

v=(3,4)w=(1,2,2) 의 노름과 단위벡터를 구하고, 두 점 A(1,2,3)B(4,6,3) 사이의 거리를 구하라.

풀이 보기

v=32+(4)2=25=5 이므로 단위벡터는 v^=(35,45) 다.

확인해 보자. (35)2+(45)2=925+1625=1 ✓. 길이가 1이다.

w=1+4+4=3 이므로 w^=(13,23,23).

거리는 차 벡터의 길이다. BA=(3,4,0) 이므로

d(A,B)=9+16+0=5

셋째 성분의 차가 0이라는 것은 두 점이 같은 높이에 있다는 뜻이고, 그래서 계산이 사실상 평면 문제가 되었다. 성분이 0이면 그 방향으로는 움직이지 않았다는 뜻이라는 점을 늘 읽어 두면 좋다.

예제 33

v=(3,4) 와 같은 방향이면서 길이가 10인 벡터를 구하라. 반대 방향이면서 길이가 10인 벡터도 구하라.

풀이 보기

방향을 유지하면서 길이만 바꾸는 것은 스칼라배뿐이다. 그러니 먼저 길이를 1로 만들고(정규화) 원하는 길이를 곱한다.

10v^=10×(35,45)=(6,8)

확인. 36+64=10 ✓. 그리고 (6,8)=2(3,4) 이니 방향도 같다.

반대 방향은 음수를 곱하면 된다. 10v^=(6,8) 이고 길이는 여전히 10이다. kv=|k|v 에서 절댓값이 붙는 이유가 이것이다.

흔한 실수는 정규화를 건너뛰고 10v=(30,40) 이라고 답하는 것이다. 그러면 길이가 50이 된다. '길이를 얼마로 맞춰라'라는 문제는 언제나 정규화가 먼저다.

내적

이제 각을 잴 차례다. 두 벡터 사이의 각을 성분만으로 알아내려면 무언가 다리가 필요한데, 그 다리가 내적(inner product, dot product)이다.

정의가 둘 있고, 놀랍게도 같은 값이다.

uv=u1v1+u2v2++unvn=i=1nuivi

uv=uvcosθ(0θπ)

위엣것은 계산용이고 아래엣것은 뜻이다. 둘이 같다는 것은 코사인법칙으로 보인다. 두 벡터와 그 차가 이루는 삼각형에 코사인법칙을 쓰면

uv2=u2+v22uvcosθ

인데, 왼쪽을 성분으로 풀어 쓰면 (uivi)2=ui22uivi+vi2=u22uivi+v2 이다. 양변을 견주면 uivi=uvcosθ 가 남는다. ■

여기서 각의 정의를 거꾸로 돌릴 수 있다. R5 에서 '각'이 무엇인지는 눈에 보이지 않지만, 위 식을 정의로 삼아 cosθ=uvuv 라고 정하면 된다. 이 값이 언제나 1 과 1 사이라는 것은 다음 절의 코시-슈바르츠 부등식이 보증한다.

내적의 부호가 곧 각의 종류다. 굵은 선분이 v 를 u 위에 내린 그림자이고, 내적은 그 그림자의 길이에 u 의 길이를 곱한 값이다. 그림자가 u 와 반대쪽을 향하면 음수가 된다
<내적의 부호가 곧 각의 종류다. 굵은 선분이 v 를 u 위에 내린 그림자이고, 내적은 그 그림자의 길이에 u 의 길이를 곱한 값이다. 그림자가 u 와 반대쪽을 향하면 음수가 된다>[원본 보기]

그림이 말하는 것을 한 문장으로 적으면 이렇다. 내적은 '한 벡터가 다른 벡터 방향으로 얼마나 나아갔는가'에 그 다른 벡터의 길이를 곱한 값이다. 그래서 두 벡터가 같은 쪽을 향할수록 크고, 수직이면 0이고, 반대쪽을 향하면 음수다.

내적이 0인 두 벡터를 직교(orthogonal)한다고 한다. cos90°=0 이기 때문이다. 영벡터는 모든 벡터와 직교하는 것으로 약속한다.

성질을 모아 둔다. 모두 성분 정의에서 곧바로 확인된다.

성질
교환uv=vu
분배u(v+w)=uv+uw
스칼라(ku)v=k(uv)
자기 자신과의 내적vv=v20
행렬로 적으면uv=uTv (열벡터일 때)
전치와 내적(Au)v=u(ATv)

마지막 줄은 9장까지 계속 쓰이는 관계다. (Au)Tv=uTATv 라는 전치 규칙 한 줄이 전부다. 행렬을 내적의 반대쪽으로 넘기면 전치가 붙는다고 기억하면 된다.

내적을 행렬 곱으로 적을 수 있다는 사실에서 3장의 곱셈 규칙도 다시 읽힌다. (AB)ijAi 행과 Bj 열의 내적이다.

벡터끼리의 곱은 하나가 아니다. 한 줄기는 결과가 수인 내적이고 다른 줄기는 결과가 벡터인 외적이다. 각 줄기를 따라가면 그 곱이 무엇을 재고 어디에 쓰이는지가 나온다. 두 줄기의 차이는 결국 cos 과 sin 의 차이다
<벡터끼리의 곱은 하나가 아니다. 한 줄기는 결과가 수인 내적이고 다른 줄기는 결과가 벡터인 외적이다. 각 줄기를 따라가면 그 곱이 무엇을 재고 어디에 쓰이는지가 나온다. 두 줄기의 차이는 결국 cos 과 sin 의 차이다>[원본 보기]

예제 34

u=(3,1)v=(1,2) 가 이루는 각을 구하라.

풀이 보기

각을 구하려면 cosθ=uvuv 를 쓴다. 분자와 분모를 따로 구한다.

uv=3×1+1×2=5

u=9+1=10,v=1+4=5

cosθ=5105=550=552=12

따라서 θ=45°, 라디안으로는 π/4 다. 내적이 양수였으니 예각이 나온 것도 맞는다.

여기서 4장과 이어지는 대목이 있다. 이 두 벡터를 열로 세운 행렬의 행렬식이 3211=5 였다. 그런데 평행사변형의 넓이는 '두 변의 길이 곱하기 사이각의 사인'이므로

uvsinθ=105×12=52×12=5

로 행렬식과 정확히 같다. 내적은 코사인을, 행렬식은 사인을 재고 있었던 것이다. 이 짝은 곧 외적에서 다시 만난다.

예제 35

u=(2,k,1)v=(3,1,2) 가 직교하도록 k 를 정하라. 또 직교하는 두 벡터에 대해 u+v2=u2+v2 임을 보여라.

풀이 보기

직교의 정의는 내적이 0이라는 것이므로, 내적을 k 의 식으로 적고 0으로 놓으면 된다.

uv=2(3)+k(1)+1(2)=8k=0k=8

확인. u=(2,8,1) 이고 68+2=0 ✓.

뒷부분은 내적의 성질만으로 나온다. 노름의 제곱을 내적으로 바꿔 쓰고 분배법칙을 쓴다.

u+v2=(u+v)(u+v)=uu+2(uv)+vv=u2+2(uv)+v2

직교하면 가운데 항이 0이므로 u+v2=u2+v2 다. ■

이것이 피타고라스 정리다. 직각삼각형의 세 변을 벡터 u, v, u+v 로 본 것이고, 차원이 몇이든 성립한다. 중학교에서 배운 정리가 이 한 줄로 임의 차원까지 늘어난다.

코시-슈바르츠와 삼각부등식

앞에서 cosθ=uvuv 를 각의 정의로 삼겠다고 했다. 이것이 말이 되려면 오른쪽 값이 반드시 1 과 1 사이여야 한다. 그것을 보증하는 것이 코시-슈바르츠 부등식이다.

|uv|uv

기초수학에서 두 변수판을 본 적이 있는데, 여기서는 임의 차원으로 넓힌다. 증명은 이차식의 판별식을 쓴다. 임의의 실수 t 에 대해

0u+tv2=v2t2+2(uv)t+u2

이 성립한다. 왼쪽이 길이의 제곱이라 음수가 될 수 없기 때문이다. 오른쪽은 t 에 대한 이차식인데, 모든 t 에서 0 이상이려면 판별식이 0 이하여야 한다.

(2uv)24v2u20(uv)2u2v2

양변에 제곱근을 씌우면 부등식이 나온다. ■ 등호는 판별식이 0일 때, 곧 어떤 t 에서 u+tv=0 이 될 때다. 두 벡터가 나란할 때만 등호라는 뜻이다.

이것을 쓰면 삼각부등식이 나온다.

u+v2=u2+2(uv)+v2u2+2uv+v2=(u+v)2

이름 그대로 '삼각형의 두 변의 합은 나머지 한 변보다 길다'는 말이고, 등호는 두 벡터가 같은 방향일 때다(코시-슈바르츠의 등호 조건에 더해 내적이 양수여야 한다). 곧장 가는 것이 돌아가는 것보다 짧다는 당연한 사실을 임의 차원에서 증명한 셈이다.

예제 36

코시-슈바르츠 부등식을 써서 모든 실수 a,b,c 에 대해 (a+b+c)23(a2+b2+c2) 임을 보여라.

풀이 보기

왼쪽이 내적의 제곱 꼴이 되도록 두 벡터를 고르는 것이 요령이다. a+b+c(a,b,c)(1,1,1) 의 내적이다.

u=(a,b,c),v=(1,1,1)

코시-슈바르츠를 제곱한 꼴로 쓰면

(uv)2u2v2(a+b+c)2(a2+b2+c2)×3

이다. ■ v2=1+1+1=3 이 오른쪽의 3이다.

등호는 두 벡터가 나란할 때, 곧 (a,b,c)(1,1,1) 의 배수일 때다. 다시 말해 a=b=c 일 때다. a=b=c=2 로 확인하면 왼쪽이 36, 오른쪽이 3×12=36 ✓.

일반화도 같은 방식이다. n 개의 수에 대해 (a1++an)2n(a12++an2) 이 성립하고, 통계에서 평균과 분산을 다룰 때 이 형태를 만난다.

예제 37

u=(3,1), v=(1,2) 에 대해 삼각부등식이 성립함을 수치로 확인하고, 어떤 경우에 등호가 되는지 예를 들어라.

풀이 보기

왼쪽부터. u+v=(4,3) 이므로 u+v=16+9=5.

오른쪽은 u+v=10+53.162+2.236=5.398.

55.398 이므로 성립한다 ✓. 차이가 나는 만큼 두 벡터가 어긋나 있다는 뜻이다.

등호가 되는 경우. v=2u=(6,2) 로 잡아 보자. u+v=(9,3) 이고

u+v=310,u+v=10+210=310

같다. 두 화살표가 같은 방향이라 이어 붙여도 꺾이는 곳이 없고, 그래서 '돌아가는 길'이 곧 '곧장 가는 길'이 된 것이다.

반대로 v=u 이면 왼쪽은 0이고 오른쪽은 2u 라 차이가 가장 크다. 음수 배일 때는 등호가 되지 않는다는 점을 주의해야 한다.

직교와 정사영

이제 그림자를 정식으로 정의한다. uv 방향으로 내린 그림자를 정사영(orthogonal projection)이라 하고 projvu 로 적는다.

왼쪽은 u 가 v 방향 성분과 그에 수직인 성분으로 갈라지는 것을 보인다. 오른쪽은 수선의 발이 직선 위의 어느 점보다 u 에 가깝다는 것을 보인다. 9장의 최소제곱법이 오른쪽 그림에서 곧장 나온다
<왼쪽은 u 가 v 방향 성분과 그에 수직인 성분으로 갈라지는 것을 보인다. 오른쪽은 수선의 발이 직선 위의 어느 점보다 u 에 가깝다는 것을 보인다. 9장의 최소제곱법이 오른쪽 그림에서 곧장 나온다>[원본 보기]

구하는 방법은 모르는 것을 하나로 줄이는 것이다. 그림자는 v 와 나란하므로 projvu=tv 꼴이고, 남는 조각 utvv 와 직교해야 한다. 그 조건을 내적으로 적으면

(utv)v=0uv=t(vv)t=uvv2

이다. 따라서

projvu=uvv2v=(uv^)v^

오른쪽 형태가 뜻을 더 잘 보여 준다. uv^ 가 그림자의 길이(부호 포함)이고, v^ 가 방향이다.

그러면 어떤 벡터든 두 조각으로 갈라진다.

u=projvuv 와 나란한 조각+(uprojvu)v 와 직교하는 조각

이 분해가 이 문서에서 가장 자주 재사용되는 도구다. 9장의 그람-슈미트 과정도, 최소제곱법도 전부 이 한 줄을 되풀이하는 것이다.

예제 38

u=(1,3)v=(4,2) 방향으로 정사영하고, 남는 조각이 v 와 직교함을 확인하라.

풀이 보기

공식에 넣기 전에 분자와 분모를 따로 구한다.

uv=1(4)+3(2)=10,v2=16+4=20

t=1020=12,projvu=12(4,2)=(2,1)

남는 조각은

uprojvu=(1,3)(2,1)=(1,2)

직교를 확인한다. (1,2)(4,2)=4+4=0 ✓.

검산을 하나 더 해 두자. 피타고라스가 맞아야 한다. u2=1+9=10 이고, 두 조각의 제곱 합은 (4+1)+(1+4)=10 ✓.

t=1/2 이 나온 것은 그림자가 v 의 절반 지점에 떨어졌다는 뜻이다. t>1 이면 v 를 넘어서고, t<0 이면 반대쪽에 떨어진다. t 의 부호와 크기를 읽는 습관을 들이면 답이 그럴듯한지 바로 판단할 수 있다.

예제 39

P(1,3) 과 직선 3x+4y=5 사이의 거리를 구하라.

풀이 보기

직선까지의 거리는 수선의 발까지의 거리이고, 그것은 정사영으로 구한다. 여기서 쓸 것은 (a,b) 가 직선 ax+by=c법선벡터라는 사실이다. 직선 위의 두 점의 차 (x2x1, y2y1)(a,b) 와 내적하면 cc=0 이 되기 때문이다.

그러니 n=(3,4) 이고 n=5 다. 직선 위의 아무 점이나 하나 잡는다. (3,1) 을 넣으면 94=5 ✓ 이므로 P0=(3,1) 로 둔다.

이제 PP0 를 법선 방향으로 정사영한 길이가 거리다.

PP0=(13, 3(1))=(2,4)

d=|(PP0)n^|=|(2)(3)+4(4)|5=|6+16|5=105=2

P0 를 다른 점으로 잡아도 답이 같다. (1,2) 도 직선 위의 점인데(3+8=5), PP0=(2,1) 이고 |6+4|/5=2 로 같다. 직선에 나란한 성분은 거리에 보태지지 않기 때문이다.

이 계산을 일반적으로 정리하면 익숙한 공식이 된다.

d=|ax0+by0c|a2+b2=|3(1)+4(3)5|5=105=2

좌표기하에서 외우던 점과 직선 사이 거리 공식이 정사영 한 번이었다.

외적과 스칼라 삼중곱

내적은 결과가 수였다. 결과가 벡터인 곱도 있는데, R3 에서만 정의된다. 외적(cross product)이다.

u×v=(u2v3u3v2, u3v1u1v3, u1v2u2v1)

외우기 어려운 식이지만 4장의 행렬식으로 적으면 규칙이 보인다.

u×v=|ijku1u2u3v1v2v3|

여기서 i,j,kx,y,z 축 방향의 단위벡터다. 첫 행에 벡터를 넣은 것은 정식 행렬식이 아니라 기억을 돕는 형식이지만, 1행으로 여인자 전개하면 정확히 위 정의가 나온다.

외적은 두 벡터가 만드는 평면에 수직이고, 크기는 그 평행사변형의 넓이다. 오른손 네 손가락을 u 에서 v 로 감을 때 엄지가 가리키는 쪽이 방향이며, 순서를 바꾸면 정반대가 된다
<외적은 두 벡터가 만드는 평면에 수직이고, 크기는 그 평행사변형의 넓이다. 오른손 네 손가락을 u 에서 v 로 감을 때 엄지가 가리키는 쪽이 방향이며, 순서를 바꾸면 정반대가 된다>[원본 보기]

성질을 정리한다.

성질식 또는 내용
두 벡터에 모두 수직u(u×v)=0, v(u×v)=0
크기는 평행사변형의 넓이u×v=uvsinθ
순서를 바꾸면 부호가 뒤집힌다v×u=(u×v)
나란하면 영벡터u×v=0 이면 두 벡터가 나란하다
결합법칙이 없다(u×v)×wu×(v×w)

내적과 견주면 대칭이 보인다. 내적은 cosθ 를, 외적의 크기는 sinθ 를 잰다. 그래서 내적이 0이면 수직이고 외적이 영벡터이면 나란하다. 두 벡터의 관계를 양쪽 끝에서 재는 두 도구인 셈이다.

외적과 내적을 이어 붙이면 부피가 나온다. 스칼라 삼중곱이다.

밑면의 넓이가 외적의 크기이고, 높이는 세 번째 벡터를 그 외적 방향으로 정사영한 길이다. 둘을 곱한 것이 부피이며, 그 값이 세 벡터를 행으로 쌓은 행렬의 행렬식과 같다
<밑면의 넓이가 외적의 크기이고, 높이는 세 번째 벡터를 그 외적 방향으로 정사영한 길이다. 둘을 곱한 것이 부피이며, 그 값이 세 벡터를 행으로 쌓은 행렬의 행렬식과 같다>[원본 보기]

(u×v)w=|u1u2u3v1v2v3w1w2w3|

왼쪽을 기하로 읽으면 '밑넓이 곱하기 높이'다. u×v 가 밑넓이이고, w 를 그 방향으로 정사영한 길이가 높이다. 그리고 이 값은 4장에서 정의한 3×3 행렬식과 정확히 같다. 4장에서 '행렬식은 부피'라고 한 주장이 여기서 증명된 셈이다.

따라서 삼중곱이 0이라는 것은 상자가 납작하다는 것, 곧 세 벡터가 한 평면 위에 있다는 뜻이다.

예제 40

u=(1,2,3), v=(4,5,6) 의 외적을 구하고, 두 벡터가 만드는 삼각형의 넓이를 구하라.

풀이 보기

행렬식 형식으로 적고 1행으로 전개한다. 체스판 부호 +,,+ 를 잊지 말아야 한다.

u×v=|ijk123456|=i(2635)j(1634)+k(1524)

=i(3)j(6)+k(3)=(3,6,3)

검산은 직교로 한다. 외적은 두 벡터에 모두 수직이어야 한다.

u(u×v)=3+129=0 ✓, v(u×v)=12+3018=0

이 검산은 거의 모든 계산 실수를 잡아낸다. 가운데 항의 부호를 빠뜨리는 실수가 특히 잦은데, 그러면 직교 검사가 곧바로 깨진다.

평행사변형의 넓이는 외적의 크기다.

u×v=9+36+9=54=36

삼각형은 그 절반이므로 3623.67 이다.

예제 41

u=(2,0,0), v=(1,2,0), w=(1,1,2) 가 만드는 평행육면체의 부피를 구하라. 또 a=(1,2,3), b=(2,1,0), c=(3,3,3) 이 한 평면 위에 있는지 판정하라.

풀이 보기

부피. 두 방법이 있고 답이 같아야 한다.

먼저 외적을 거쳐 간다. u×v=(0002, 0120, 2201)=(0,0,4) 이므로

(u×v)w=(0,0,4)(1,1,2)=8

다음으로 행렬식으로 직접 구한다. 1행에 0이 둘 있으니 1행으로 전개한다.

|200120112|=2|2012|=2×4=8

같다. 부피는 8이다. 기하로 확인해도 맞는다. 밑면은 uv 가 만드는 평행사변형인데 밑변 2, 높이 2라 넓이가 4이고, 높이는 wz 성분인 2이므로 4×2=8 ✓.

판정. 삼중곱이 0인지 보면 된다. 그런데 계산하기 전에 c=a+b 임을 알아챌 수 있다. (1+2, 2+1, 3+0)=(3,3,3) ✓.

한 벡터가 다른 둘의 합이면 그 셋은 같은 평면 안에 있고, 4장의 성질대로 행렬식이 0이다. 실제로 셋째 행에서 첫째와 둘째 행을 빼면 0인 행이 나온다. 세 벡터는 한 평면 위에 있다.

상자의 부피가 0이라는 것과, 이 세 벡터를 열로 갖는 행렬이 특이행렬이라는 것과, 그 세 벡터로는 공간을 채울 수 없다는 것이 모두 같은 말이다.

직선과 평면

마지막으로 벡터로 도형을 적는다. 여기서 얻는 식들은 계산기하와 물리에서 곧바로 쓰인다.

직선은 '출발점 하나와 방향 하나'로 정해진다. 점 P0 를 지나고 방향이 d 인 직선 위의 점은

x=P0+td(tR)

로 모두 적힌다. 이것을 매개형이라 하고, t 를 매개변수라 한다. 성분으로 풀어 쓰면 x=x0+td1 처럼 좌표마다 한 줄씩 나온다.

평면 위의 직선에는 표현이 하나 더 있다. 법선형이다. 법선벡터 n 에 수직인 점들만 모으면 직선이 된다.

n(xP0)=0

왼쪽은 출발점에서 방향벡터를 t 배만큼 따라가는 표현이고, 오른쪽은 법선과 수직인 점만 모은 표현이다. 오른쪽 식을 성분으로 풀면 학교에서 쓰던 ax + by = c 가 그대로 나온다
<왼쪽은 출발점에서 방향벡터를 t 배만큼 따라가는 표현이고, 오른쪽은 법선과 수직인 점만 모은 표현이다. 오른쪽 식을 성분으로 풀면 학교에서 쓰던 ax + by = c 가 그대로 나온다>[원본 보기]

그런데 R3 에서는 이 두 표현이 서로 다른 것을 준다. 매개형은 여전히 직선이지만, 법선형 n(xP0)=0평면이 된다. 공간에서 한 방향에 수직인 것들은 직선이 아니라 평면 전체이기 때문이다. 성분으로 적으면

a(xx0)+b(yy0)+c(zz0)=0ax+by+cz=d

이고, 일차방정식의 계수가 그대로 법선벡터다. 3장에서 '미지수 셋짜리 일차방정식 하나가 평면 하나'라고 했던 것이 여기서 완전히 설명된다.

예제 42

세 점 A(1,0,0), B(0,2,0), C(0,0,3) 을 지나는 평면의 방정식을 구하라.

풀이 보기

평면을 적으려면 지나는 점 하나와 법선 하나가 필요하다. 점은 셋 다 쓸 수 있으니 법선을 구하는 것이 일이다.

법선은 평면 안의 두 방향에 모두 수직이어야 한다. '두 벡터에 모두 수직인 벡터'를 주는 도구가 바로 외적이다.

AB=(1,2,0),AC=(1,0,3)

n=AB×AC=i(2300)j((1)(3)0(1))+k(02(1))=(6,3,2)

이제 A(1,0,0) 을 지나고 법선이 (6,3,2) 인 평면을 적는다.

6(x1)+3(y0)+2(z0)=06x+3y+2z=6

검산은 나머지 두 점을 넣어 보는 것이다. B3×2=6 ✓, C2×3=6 ✓.

이 식을 6으로 나누면 x1+y2+z3=1 이 되는데, 분모가 각 축과 만나는 좌표와 같다. 절편으로 적은 평면의 방정식이다.

예제 43

P(1,2,3) 과 평면 2x+3y+6z=12 사이의 거리를 구하라.

풀이 보기

앞 절에서 점과 직선 사이 거리를 정사영으로 구했다. 평면도 똑같다. 차원만 하나 올라갔을 뿐 법선 방향으로 정사영하는 것은 그대로다.

평면에 나란한 성분은 아무리 길어도 거리에 보태지지 않는다. 법선 방향 성분만 남기는 것, 곧 정사영이 거리를 재는 일의 전부다
<평면에 나란한 성분은 아무리 길어도 거리에 보태지지 않는다. 법선 방향 성분만 남기는 것, 곧 정사영이 거리를 재는 일의 전부다>[원본 보기]

법선은 계수에서 그대로 읽는다. n=(2,3,6) 이고 n=4+9+36=49=7 이다.

평면 위의 점을 하나 잡는다. y=z=0 으로 두면 2x=12 이므로 P0=(6,0,0) 이다.

PP0=(16, 20, 30)=(5,2,3)

이것을 법선 방향으로 정사영한 길이가 거리다.

d=|(PP0)n|n=|(5)(2)+2(3)+3(6)|7=|10+6+18|7=147=2

일반 공식으로 정리하면 이렇게 된다. 평면이 ax+by+cz=d 이고 점이 (x0,y0,z0) 일 때

거리=|ax0+by0+cz0d|a2+b2+c2

넣어 보면 |2+6+1812|/7=14/7=2 로 같다 ✓.

답이 말이 되는지 보자. 평면 위의 점 P0 까지의 직선 거리는 (5,2,3)=386.16 인데 평면까지의 거리는 2다. 수선의 발이 가장 가깝다고 했으니 거리는 반드시 이보다 작아야 하고, 실제로 그렇다. 이 부등호 검사는 계산 실수를 잡는 데 쓸모가 많다.

5장 정리

기호 또는 용어
Rn실수 n 개를 순서대로 늘어놓은 것들의 집합. 원소를 벡터라 한다
합과 스칼라배성분끼리 더하기, 모든 성분에 곱하기. 화살표를 이어 붙이기와 길이 바꾸기
노름 vv12++vn2. 화살표의 길이
단위벡터 v^v/v. 방향만 남기고 길이를 1로 맞춘 것
거리uv. 차 벡터의 길이
내적 uvuivi=uvcosθ. 열벡터로는 uTv
직교내적이 0. θ=90°
코시-슈바르츠|uv|uv. 등호는 두 벡터가 나란할 때
삼각부등식u+vu+v. 등호는 같은 방향일 때
정사영projvu=uvv2v. 남는 조각은 v 와 직교
외적 u×vR3 한정. 두 벡터에 수직이고 크기는 평행사변형의 넓이
스칼라 삼중곱(u×v)w. 평행육면체의 부피이고 3×3 행렬식과 같다
직선x=P0+td (매개형)
평면n(xP0)=0, 곧 ax+by+cz=d. 계수가 법선벡터다
점과 평면 사이 거리|ax0+by0+cz0d|/a2+b2+c2. 법선 방향 정사영

여기까지가 이 문서의 1부다. 지금까지 다룬 것은 모두 '수의 나열'과 '수의 표'였고, 그 위에서 계산과 기하를 붙였다. 그런데 합과 스칼라배라는 두 연산만 놓고 보면, 다항식도 함수도 행렬도 벡터와 똑같은 규칙을 따른다. 다음 장은 거기서 출발한다. 벡터가 무엇으로 만들어졌는지는 잊고, 무엇을 할 수 있는지만 남기는 것이다.

일반 벡터공간

5장까지의 벡터는 '수를 늘어놓은 것'이었다. 그런데 다항식 1+3x2x2 를 생각해 보자. 다항식끼리는 더할 수 있고 수를 곱할 수도 있으며, 그 두 연산은 벡터의 합·스칼라배와 똑같은 규칙을 따른다. 행렬도 그렇고, 함수도 그렇다.

이 장에서 답할 질문은 둘이다. 공통되는 규칙만 뽑아 두면 무엇이 좋은가, 그리고 그 규칙 위에서 '공간의 크기'를 어떻게 재는가. 두 번째 물음의 답이 차원과 랭크이고, 그것이 3장부터 미뤄 온 여러 물음을 한꺼번에 정리한다.

앞에서 가져오는 것은 3장의 행렬 표기와 가우스 소거법, 일차결합, 축(pivot)과 자유변수, 4장의 행렬식, 5장의 Rn 과 내적이다. 기초수학에서는 집합 기호와 함수 개념을 쓴다.

규칙만 남기고 정체는 잊는다

5장의 Rn 에서 우리가 실제로 쓴 성질을 세어 보면 열 개다. 아래 열 개를 모두 만족하는 집합 V벡터공간(vector space)이라 하고, 그 원소를 벡터라 부른다. u,v,wV 의 원소, k,m 은 실수다.

덧셈에 대한 다섯스칼라배에 대한 다섯
닫힘: u+vV닫힘: kuV
교환: u+v=v+u분배: k(u+v)=ku+kv
결합: (u+v)+w=u+(v+w)분배: (k+m)u=ku+mu
항등원: u+0=u0V 가 있다결합: k(mu)=(km)u
역원: u+(u)=0uV 가 있다항등원: 1u=u

이 목록을 외울 필요는 없다. 요점은 여기에 '성분'이라는 말이 한 번도 나오지 않는다는 것이다. 원소가 무엇으로 만들어졌는지는 묻지 않고 무엇을 할 수 있는지만 묻는다. 그래서 생김새가 전혀 다른 것들이 같은 자격으로 들어온다.

네 가지는 생김새가 전혀 다르지만 더하기와 수 곱하기가 같은 규칙을 따른다. 그래서 한 번 증명한 정리를 네 곳 모두에서 쓸 수 있다. 이것이 공리로 올라가는 유일한 이유다
<네 가지는 생김새가 전혀 다르지만 더하기와 수 곱하기가 같은 규칙을 따른다. 그래서 한 번 증명한 정리를 네 곳 모두에서 쓸 수 있다. 이것이 공리로 올라가는 유일한 이유다>[원본 보기]

자주 쓰는 벡터공간에는 이름이 있다. Rn, 차수가 n 이하인 다항식 전체 Pn, m×n 행렬 전체 Mmn, 어떤 구간에서 정의된 함수 전체 F(a,b) 다. 마지막 것에서 '더하기'는 (f+g)(x)=f(x)+g(x) 로 정의한다.

공리에서 곧바로 따라 나오는 사실이 몇 가지 있다. 정의에 없으니 증명해야 한다.

0u=0,k0=0,(1)u=u

첫 번째만 보이면 나머지는 비슷하다. 0u=(0+0)u=0u+0u 이므로 양변에 (0u) 를 더하면 0=0u 다. ■ 왼쪽의 0은 수이고 오른쪽의 0 은 벡터라는 점을 놓치면 이 줄이 동어반복으로 보인다.

예제 44

차수가 2 이하인 다항식 전체 P2 가 벡터공간임을 확인하라. 특히 영벡터와 역원이 무엇인지 밝혀라.

풀이 보기

확인할 것은 열 개 공리지만, 다항식의 덧셈과 실수배는 같은 차수의 계수끼리 더하고 곱하는 것이므로 실수의 성질이 그대로 옮겨 온다. 교환·결합·분배는 각 계수 자리에서 실수의 교환·결합·분배일 뿐이다. 실제로 볼 것은 닫힘성과 항등원·역원 셋이다.

닫힘성. p=a0+a1x+a2x2q=b0+b1x+b2x2 를 더하면 (a0+b0)+(a1+b1)x+(a2+b2)x2 이고 여전히 차수가 2 이하다 ✓. 실수배도 마찬가지다 ✓.

영벡터. 모든 계수가 0인 다항식, 곧 영다항식이다. 어떤 p 에 더해도 p 그대로다 ✓.

역원. 모든 계수의 부호를 뒤집은 p 다 ✓.

답이 말이 되는지 보자. P2 의 원소는 계수 세 개로 완전히 정해지므로 (a0,a1,a2) 라는 R3 의 점과 짝지을 수 있다. 그리고 방금 확인한 덧셈·실수배가 정확히 R3 의 그것과 같다. P2R3 를 다른 글씨로 적은 것이라 해도 된다. 이 '같음'을 정식으로 부르는 이름이 7장의 동형사상이다.

예제 45

다음 둘은 벡터공간인가. (1) 차수가 정확히 2인 다항식 전체 (2) 성분이 모두 양수인 R2 의 점 전체.

풀이 보기

벡터공간이 아님을 보이려면 공리 하나를 어기는 예를 하나 찾으면 된다. 열 개를 다 확인할 필요가 없다.

(1) p=x2+1q=x2+x 는 둘 다 차수가 정확히 2다. 그런데 p+q=x+1 은 차수가 1이라 이 집합 밖이다. 덧셈 닫힘성을 어긴다. 영다항식이 들어 있지 않다는 점에서도 이미 실격이다.

(2) u=(1,2)1 을 곱하면 (1,2) 인데 성분이 음수라 집합 밖이다. 스칼라배 닫힘성을 어긴다. 더하기만 보면 아무 문제가 없다는 점이 함정이다.

두 반례가 알려 주는 것이 있다. 어떤 집합이 벡터공간인지 볼 때 가장 먼저 의심할 곳은 닫힘성이고, 그중에서도 음수 배와 영벡터다. 다음 절의 판정법이 이 관찰을 그대로 규칙으로 만든 것이다.

부분공간 — 큰 공간 안의 작은 공간

벡터공간 V 의 부분집합 W같은 덧셈과 스칼라배로 그 자체로 벡터공간이면, WV부분공간(subspace)이라 한다.

다행히 열 개를 다시 확인할 필요는 없다. 교환·결합·분배 같은 것은 큰 공간에서 이미 성립하므로 부분집합에서도 자동으로 성립한다. 확인할 것은 밖으로 나가지 않는가뿐이다.

부분공간 판정법. WV 가 다음 셋을 만족하면, 그리고 그때만 부분공간이다.

  1. 0W (그래서 W 는 비어 있지 않다)
  2. u,vWu+vW
  3. uW, k 가 실수 kuW

첫 조건은 사실 셋째에서 따라 나오지만(k=0), 먼저 확인하면 아닌 것을 가장 빨리 걸러낼 수 있어서 따로 적어 둔다. 원점을 지나지 않으면 그 자리에서 끝이다.

원점을 지나는 직선은 부분공간이다. 원점을 비켜 간 직선은 두 벡터를 더하는 순간 직선을 벗어나고, 제1사분면은 더하기는 견디지만 −1 배에서 무너진다. 판정법의 세 조건이 각각 어디서 걸리는지가 보인다
<원점을 지나는 직선은 부분공간이다. 원점을 비켜 간 직선은 두 벡터를 더하는 순간 직선을 벗어나고, 제1사분면은 더하기는 견디지만 −1 배에서 무너진다. 판정법의 세 조건이 각각 어디서 걸리는지가 보인다>[원본 보기]

그림의 왼쪽이 중요한 이유가 있다. 3장에서 동차연립방정식 Ax=0 의 해집합이 원점을 지나는 직선이나 평면이었던 것을 기억할 것이다. 그것이 우연이 아니라는 말을 이제 할 수 있다. 두 해를 더해도 해이고 상수배해도 해이므로, 동차연립방정식의 해집합은 언제나 부분공간이다. 상수항이 하나라도 0이 아니면 0 이 해가 아니라 부분공간이 되지 못한다.

예제 46

R3 의 다음 부분집합이 부분공간인지 판정하라. (1) W1={(x,y,z)x+y+z=0} (2) W2={(x,y,z)x+y+z=1} (3) W3={(x,y,z)xy=0}

풀이 보기

세 조건을 순서대로 본다. 영벡터 → 덧셈 → 스칼라배.

(1) (0,0,0)0+0+0=0 을 만족한다 ✓. 두 점 u,v 가 조건을 만족하면 성분합이 각각 0이므로 u+v 의 성분합도 0+0=0 ✓. ku 의 성분합은 k0=0 ✓. 부분공간이다. 이것은 원점을 지나는 평면이다.

(2) (0,0,0) 의 성분합은 0이지 1이 아니다. 첫 조건에서 탈락. 원점을 지나지 않는 평면이라 부분공간이 될 수 없다.

(3) 영벡터는 들어 있고(00=0) 스칼라배도 견딘다. 그런데 (1,0,0)(0,1,0) 은 둘 다 조건을 만족하는데 합 (1,1,0)xy=10 이라 밖이다. 덧셈에서 탈락.

(3)이 알려 주는 것은 세 조건 중 둘만 통과해도 소용없다는 것이다. 이 집합은 두 평면(x=0y=0)을 합친 모양인데, 각각은 부분공간이어도 합집합은 부분공간이 아니다.

예제 47

2×2 행렬 전체 M22 안에서 (1) 대칭행렬 전체 (2) 가역행렬 전체 가 부분공간인지 판정하라.

풀이 보기

(1) 대칭행렬. 3장의 정의로 AT=A 인 행렬이다. 영행렬은 대칭이다 ✓. AT=A, BT=B 이면 전치의 성질에서 (A+B)T=AT+BT=A+B ✓. (kA)T=kAT=kA ✓. 부분공간이다.

(2) 가역행렬. 영행렬은 가역이 아니다. 첫 조건에서 탈락. 덧셈도 어긴다. II 는 둘 다 가역인데 합은 영행렬이라 가역이 아니다.

두 답의 차이를 짚어 두자. (1)의 조건 AT=A 는 성분들에 대한 일차 조건이라 덧셈과 상수배를 견딘다. (2)의 조건 detA0 은 일차가 아니다. 부분공간을 만드는 것은 언제나 '= 0' 꼴의 일차 조건이고, 부등식이나 고차식이 끼면 거의 예외 없이 부분공간이 아니다.

일차결합과 생성

3장에서 Ax 를 정의하면서 일차결합이라는 말을 이미 썼다. 여러 벡터에 수를 곱해 더한 것이다. 이제 정식으로 확장한다. 벡터 v1,,vrV 와 실수 k1,,kr 에 대해

k1v1+k2v2++krvr

를 그 벡터들의 일차결합이라 한다. 계수를 온갖 값으로 바꿔 가며 만들 수 있는 것을 전부 모은 집합을 생성(span)이라 하고 span{v1,,vr} 로 적는다.

생성은 언제나 부분공간이다. 일차결합 둘을 더하면 계수끼리 더해져 여전히 일차결합이고, 상수배해도 계수가 상수배될 뿐이며, 계수를 전부 0으로 두면 영벡터가 나오기 때문이다. 생성은 '주어진 벡터들을 품는 가장 작은 부분공간'이라고 말해도 같다.

벡터 하나로는 직선까지밖에 못 간다. 방향이 다른 둘이 있으면 그 둘의 눈금이 평면을 덮는다. R³ 에서 둘을 잡으면 원점을 지나는 평면이 된다. 몇 개를 모았는가가 아니라 방향이 몇 가지인가가 크기를 정한다
<벡터 하나로는 직선까지밖에 못 간다. 방향이 다른 둘이 있으면 그 둘의 눈금이 평면을 덮는다. R³ 에서 둘을 잡으면 원점을 지나는 평면이 된다. 몇 개를 모았는가가 아니라 방향이 몇 가지인가가 크기를 정한다>[원본 보기]

여기서 계산 문제 하나가 생긴다. 어떤 벡터가 주어진 벡터들의 생성에 들어 있는가? 이 물음은 겉보기와 달리 새로운 문제가 아니다.

bspan{v1,,vr} 라는 것은 k1v1++krvr=b 를 만족하는 계수가 있다는 뜻이고, 벡터들을 열로 세워 행렬 A 를 만들면 이것이 정확히 Ak=b 다. 생성 판정은 연립일차방정식이 풀리는가 하는 물음이며, 3장의 소거법이 그대로 답한다.

예제 48

b=(1,2,3)span{(1,1,0), (0,1,1)} 에 들어 있는가? 들어 있다면 계수를 구하라.

풀이 보기

물음을 방정식으로 옮긴다. k1(1,1,0)+k2(0,1,1)=(1,2,3)k1,k2 가 있는가.

두 벡터를 열로 세워 첨가행렬을 만든다. 열로 세우는 것이 요점이다.

[101112013] R2R1 [101011013] R3R2 [101011002]

마지막 행이 0=2 다. 해가 없으므로 들어 있지 않다.

기하로 읽으면 이렇다. 두 벡터가 생성하는 것은 R3 안의 평면 하나이고, (1,2,3) 은 그 평면 밖에 있다. 상수 열에 축이 생겼다는 것이 '평면 밖'의 대수적 표현이다.

답을 검산하는 방법이 하나 더 있다. 두 생성벡터에 모두 수직인 방향을 외적으로 구하면 (1,1,0)×(0,1,1)=(1,1,1) 이고, 이것이 그 평면의 법선이다. (1,2,3)(1,1,1)=12+3=20 이므로 평면 위에 있지 않다 ✓. 소거에서 나온 2와 같은 수가 나온 것은 우연이 아니다.

예제 49

{(1,0,1), (0,1,1), (1,1,0)}R3 를 생성하는가?

풀이 보기

이번에는 특정한 b 가 아니라 모든 b 에 대해 Ak=b 가 풀려야 한다. 4장의 표에 이 조건이 이미 있다. 정사각행렬이라면 detA0 이면 된다.

세 벡터를 열로 세운다.

A=[101011110],detA=1(01)0+1(01)=2

0이 아니므로 어떤 b 를 주어도 해가 있다. 생성한다.

만약 detA=0 이었다면 세 벡터가 한 평면에 눌려 있어 그 평면 밖의 b 에는 닿지 못했을 것이다. 4장에서 '열들이 낮은 차원에 눌려 있다'고 말한 것이 지금은 '생성하는 것이 R3 보다 작다'로 정확히 번역된다.

일차독립과 일차종속

앞 예제의 두 상황을 갈랐던 것은 결국 벡터들 사이에 군더더기가 있는가였다. 그것을 정의로 만든다.

벡터 v1,,vr 에 대한 벡터방정식

k1v1+k2v2++krvr=0

은 언제나 k1==kr=0 이라는 해를 갖는다. 이것을 자명해라 한다(3장의 동차연립방정식에서 쓴 말 그대로다).

종속이라는 말의 뜻은 식을 옮겨 보면 드러난다. 어떤 ki0 이면 그 항만 왼쪽에 남기고 ki 로 나눌 수 있다.

vi=k1kiv1(vi 항은 빼고)

일차종속이란 그중 적어도 하나가 나머지의 일차결합으로 적힌다는 뜻이고, 그 하나는 생성에 아무것도 보태지 않는 군더더기다.

두 벡터가 평면을 하나 정한다. 셋째가 그 평면 안에 있으면 앞의 둘로 만들 수 있으니 새 방향이 아니고, 평면을 벗어나야 비로소 공간 전체를 생성한다. 일차독립과 종속의 차이는 이 한 장면이 전부다
<두 벡터가 평면을 하나 정한다. 셋째가 그 평면 안에 있으면 앞의 둘로 만들 수 있으니 새 방향이 아니고, 평면을 벗어나야 비로소 공간 전체를 생성한다. 일차독립과 종속의 차이는 이 한 장면이 전부다>[원본 보기]

몇 가지는 계산하지 않고도 판정할 수 있다. 익혀 두면 시간을 아낀다.

예제 50

v1=(1,2,1), v2=(2,1,1), v3=(7,8,1) 이 일차독립인지 판정하고, 종속이면 관계식을 하나 적어라.

풀이 보기

판정할 것은 k1v1+k2v2+k3v3=0 이 자명해뿐인가다. 벡터를 열로 세운 계수행렬을 소거한다. 동차연립방정식이라 상수 열은 계속 0이니 적지 않는다.

[127218111] R22R1, R3R1 [127036036]

 R3R2, 13R2 [127012000]

축이 1열과 2열에만 있고 3열에는 없다. k3 가 자유변수이므로 자명하지 않은 해가 있고 일차종속이다.

관계식을 뽑는다. 마지막 행렬을 기약 행사다리꼴까지 가면 R12R2[103012000] 이다. k3=1 로 두면 k1=3, k2=2 이므로

3v12v2+v3=0,v3=3v1+2v2

검산. 3(1,2,1)+2(2,1,1)=(3,6,3)+(4,2,2)=(7,8,1) ✓.

기약 행사다리꼴의 비축열이 관계식을 그대로 알려 준다는 점이 이 계산의 값어치다. 3열이 (3,2,0) 인데, 그것이 곧 '3열 = 1열의 3배 + 2열의 2배'라는 뜻이다. 행 연산은 열들 사이의 이런 관계를 바꾸지 않기 때문이다.

예제 51

P2 에서 (1) {1, x, x2} (2) {1+x, 1x, x} 의 일차독립 여부를 판정하라.

풀이 보기

벡터가 다항식이라 '성분'이 없어 보이지만, 판정 방법은 같다. 벡터방정식을 세우고 자명해뿐인지 본다.

(1) k11+k2x+k3x2=0모든 x 에 대해 성립해야 한다. 여기서 오른쪽 0은 수 0이 아니라 영다항식이다. 다항식이 항등적으로 0이려면 계수가 전부 0이어야 하므로 k1=k2=k3=0. 일차독립.

(2) 눈으로 보인다. (1+x)(1x)=2x 이므로

1(1+x)+(1)(1x)+(2)x=0

계수 (1,1,2) 가 자명하지 않은 해다. 일차종속.

눈에 보이지 않을 때를 위한 방법도 적어 둔다. (1)에서 {1,x,x2} 이 독립임을 알았으므로 다항식을 계수의 나열로 바꿔 적어도 된다. 1+x(1,1,0), 1x(1,1,0), x(0,1,0) 이고, 이 세 벡터를 열로 세운 행렬의 행렬식은 셋째 행이 전부 0이라 0이다. 종속이 다시 확인된다 ✓. 기저를 하나 정하면 어떤 벡터공간의 문제든 Rn 의 문제로 바뀐다는 것이 다음 절의 주제다.

기저와 차원, 그리고 좌표

이제 '딱 알맞게 모은 벡터들'을 정의할 수 있다. 벡터공간 V 의 벡터 모음 B={v1,,vn} 이 다음 둘을 만족하면 V기저(basis)라 한다.

  1. span(B)=V — 모자라지 않는다
  2. B 가 일차독립 — 남지 않는다

두 조건이 정반대 방향으로 압박한다. 벡터를 늘리면 생성은 쉬워지고 독립은 어려워진다. 기저는 그 줄다리기가 정확히 균형을 이루는 지점이다.

여기에 한 가지 사실이 더해져야 '차원'이라는 말을 쓸 수 있다. 같은 벡터공간의 기저는 개수가 모두 같다. 이 개수를 V차원이라 하고 dimV 로 적는다. 증명은 'n 개가 생성하는 공간에서 n 개보다 많은 벡터는 반드시 종속'이라는 사실에서 나오는데, 여기서는 결과만 쓴다.

dimRn=n, dimPn=n+1 (기저 {1,x,,xn}), dimMmn=mn 이다. Pn 의 차원이 n 이 아니라 n+1 인 것은 상수항 자리가 하나 더 있기 때문이다.

기저를 하나 정하면 좌표가 생긴다. B={v1,,vn} 이 기저일 때, 임의의 wV

w=c1v1++cnvn

로 적히는데, 이 적는 방법이 단 하나뿐이다. 두 가지 방법이 있다면 두 식을 빼서 자명하지 않은 관계식이 나와 독립성에 어긋나기 때문이다. 그래서 계수들을 모은 것이 벡터마다 하나로 정해지고, 이것을 좌표벡터라 하며 [w]B=(c1,,cn) 로 적는다.

화살표는 하나인데 좌표는 둘이다. 표준기저의 눈금으로 재면 (4, 2), 기울어진 기저의 눈금으로 재면 (3, −1) 이다. 벡터는 실체이고 좌표는 그것을 재는 자에 붙은 숫자라는 점이 이 그림의 전부다
<화살표는 하나인데 좌표는 둘이다. 표준기저의 눈금으로 재면 (4, 2), 기울어진 기저의 눈금으로 재면 (3, −1) 이다. 벡터는 실체이고 좌표는 그것을 재는 자에 붙은 숫자라는 점이 이 그림의 전부다>[원본 보기]

이 구분이 8장까지 계속 쓰인다. 벡터는 기저와 무관하고 좌표는 기저에 달려 있다. Rn 에서 그 구분이 흐릿한 것은 표준기저 {e1,,en} 를 워낙 당연하게 써 왔기 때문이다. (4,2) 라고 적을 때 우리는 이미 기저를 하나 고른 것이다.

예제 52

B={(1,1), (1,1)}R2 의 기저임을 보이고, w=(4,2) 의 좌표벡터 [w]B 를 구하라.

풀이 보기

기저이려면 생성하고 독립이어야 하는데, 벡터 개수가 차원과 같을 때는 둘 중 하나만 확인하면 된다. R2 에서 두 개를 모았으므로 독립이기만 하면 자동으로 기저다. 그리고 독립은 행렬식으로 본다.

det[1111]=1+1=20

0이 아니므로 독립이고 기저다 ✓.

좌표를 구한다. c1(1,1)+c2(1,1)=(4,2) 를 풀면 되고, 성분으로 적으면 c1c2=4, c1+c2=2 다. 더하면 2c1=6 이므로 c1=3, 빼면 c2=1.

[w]B=(3,1)

검산. 3(1,1)(1,1)=(3,3)(1,1)=(4,2) ✓.

답이 말이 되는가. w 는 오른쪽 위를 향하고 있고 (1,1) 도 그렇다. 그러니 첫 계수가 크고 양수인 것이 자연스럽다. 둘째 계수가 음수인 것은 (1,1) 이 왼쪽 위를 향해 있어 조금 되돌려야 하기 때문이다. 앞의 그림에서 확인할 수 있다.

예제 53

P2 에서 B={1, x1, (x1)2} 가 기저임을 보이고, p(x)=x2+2x+3 의 좌표벡터를 구하라.

풀이 보기

dimP2=3 이고 벡터가 셋이므로 독립만 보이면 된다. 표준기저 {1,x,x2} 의 계수로 옮겨 적으면 1(1,0,0), x1(1,1,0), (x1)2=x22x+1(1,2,1) 이다. 열로 세우면 상삼각행렬이라 행렬식이 대각성분의 곱 111=10 이다. 독립이고 기저다 ✓.

좌표를 구하는 요령은 높은 차수부터 맞춰 나가는 것이다. x2 을 만들 수 있는 것은 셋째 항뿐이므로 c3=1.

p(x1)2=(x2+2x+3)(x22x+1)=4x+2

남은 것에서 x 를 만들 수 있는 것은 둘째 항뿐이므로 c2=4.

(4x+2)4(x1)=6

마지막으로 c1=6 이다. 따라서 [p]B=(6,4,1).

검산. 6+4(x1)+(x1)2=6+4x4+x22x+1=x2+2x+3 ✓.

같은 다항식의 좌표가 표준기저에서는 (3,2,1) 이고 이 기저에서는 (6,4,1) 이다. 다항식은 하나인데 숫자 세 쌍이 둘 나왔다. 이 계산은 사실 x=1 에서 테일러 전개를 한 것과 같고, 미적분에서 만나는 그 계산이 여기서는 '기저를 바꾼 좌표'로 보인다.

기저 변환 — 좌표 사이를 오가기

같은 벡터의 좌표가 기저마다 다르다면, 두 좌표 사이를 오가는 방법이 필요하다. 그 방법이 전이행렬이다.

왼쪽의 벡터는 하나뿐이고 기저를 고를 때마다 오른쪽에 좌표가 새로 생긴다. 두 좌표 사이를 오가는 것이 전이행렬이며, 방향이 반대인 두 전이행렬은 서로 역행렬이다
<왼쪽의 벡터는 하나뿐이고 기저를 고를 때마다 오른쪽에 좌표가 새로 생긴다. 두 좌표 사이를 오가는 것이 전이행렬이며, 방향이 반대인 두 전이행렬은 서로 역행렬이다>[원본 보기]

기저 B={b1,,bn} 에서 B={b1,,bn} 으로 옮긴다고 하자. 구하려는 것은 모든 v 에 대해

[v]B=PBB[v]B

를 만족하는 행렬이다. 이 행렬이 무엇인지는 vbj 를 넣어 보면 나온다. [bj]Bj 번째 자리만 1인 벡터이므로 오른쪽은 Pj 번째 열이다. 따라서

PBBj 번째 열은 [bj]B, 곧 옛 기저벡터를 새 기저로 잰 좌표다.

Rn 에서 이것을 구하는 실용적인 절차가 있다. 기저벡터들을 열로 세운 행렬을 각각 B, B 라 하면(같은 글자를 행렬로도 쓴다) 첨가행렬을 소거하면 된다.

[BB] 행 연산 [IPBB]

왜 이렇게 되는가. 왼쪽 절반을 I 로 만드는 행 연산은 3장에 따라 (B)1 를 곱하는 것과 같으므로, 오른쪽 절반은 (B)1B 가 된다. 그리고 이것이 정확히 전이행렬이다.

예제 54

R2 에서 B={(1,0), (0,1)}, B={(1,2), (3,1)} 일 때 PBBPBB 를 구하라.

풀이 보기

B 가 표준기저라 B=I 이고, B 의 두 벡터를 열로 세우면 B=[1321] 이다.

PBB 부터 구한다. [BB]=[BI] 를 소거하는데, 이것은 3장에서 역행렬을 구하던 바로 그 계산이다.

[13102101] R22R1 [13100521]

 15R2 [1310012515]

 R13R2 [101535012515]

PBB=[1/53/52/51/5]

반대 방향은 소거할 것도 없다. [BB]=[IB] 는 이미 왼쪽이 I 다.

PBB=[1321]

두 행렬이 서로 역행렬인지 확인하자. 행렬식이 16=5 이므로 3장의 공식으로 [1321]1=15[1321]=[1/53/52/51/5] 로 정확히 같다 ✓.

결과를 말로 옮기면 이렇다. 새 기저벡터를 열로 세운 행렬은 '새 좌표 → 표준좌표' 방향이고, 그 역행렬이 반대 방향이다. 방향을 자꾸 헷갈리게 되는데, B 의 열이 곧 bj 의 표준좌표라는 점을 떠올리면 매번 다시 세울 수 있다.

예제 55

앞 예제의 두 기저에서, B 좌표가 (1,0) 인 벡터의 B 좌표를 구하고 두 좌표가 같은 벡터를 가리키는지 확인하라.

풀이 보기

구하려는 것은 [v]B 이고, 아는 것은 [v]B=(1,0) 과 앞에서 구한 전이행렬이다.

[v]B=PBB[10]=[1/53/52/51/5][10]=[1/52/5]

두 좌표가 같은 벡터인지 확인한다. B 가 표준기저이므로 [v]B=(1,0) 은 벡터 (1,0) 그 자체다. 한편

15(1,2)+25(3,1)=(15+65, 25+25)=(1,0)

같다 ✓.

여기서 늘 걸리는 곳을 짚어 둔다. 전이행렬의 열이 새 기저벡터인 것이 아니라, 그 역행렬의 열이 새 기저벡터다. 좌표를 바꾸는 방향과 기저벡터가 가는 방향이 서로 반대이기 때문이다. 자를 촘촘하게 바꾸면 같은 길이라도 눈금 수는 커지는 것과 같은 이치다.

행렬이 거느리는 세 공간과 랭크

이제 도구를 행렬에 되돌려 쓴다. m×n 행렬 A 에는 세 개의 부분공간이 딸려 있다.

열공간이 특히 중요한 이유가 있다. 3장에서 Ax열들의 일차결합이라고 했으므로, Ax=b 에 해가 있다는 것은 곧 b 가 열공간에 들어 있다는 뜻이다. 3장에서 '해가 있는가'라고 물었던 것이 여기서는 '도달할 수 있는 곳인가'가 된다.

이 공간들의 기저를 구하는 데 필요한 사실이 둘 있다.

  1. 기본 행연산은 행공간과 영공간을 바꾸지 않는다. 행공간은 행들의 일차결합만 취하므로 그렇고, 영공간은 해집합이므로 3장에서 이미 확인한 사실이다.
  2. 기본 행연산은 열공간을 바꾸지만, 열들 사이의 일차 관계는 바꾸지 않는다. 그래서 소거 후 축이 있는 열의 원래 자리를 찾아 원래 행렬에서 뽑으면 열공간의 기저가 된다.

두 번째의 '원래 자리'를 놓치는 것이 가장 흔한 실수다. 소거한 행렬의 열을 그대로 쓰면 안 된다.

행공간과 열공간의 차원은 언제나 같다. 소거해 보면 둘 다 축의 개수가 되기 때문이다. 3장에서 '축의 개수'라고만 부르던 이 수에 이제 이름을 준다. 랭크(rank)이고 rank(A) 로 적는다. 우리말로는 계수(階數)라 하는데, 3장부터 '계수'를 일차식의 계수(coefficient)라는 뜻으로 써 왔으므로 이 문서에서는 헷갈리지 않게 랭크로 적는다. 영공간의 차원은 퇴화차수(nullity)라 하고 nullity(A) 로 적는다.

그러면 3장에서 세었던 것이 정리 하나가 된다. 열은 축열이거나 아니거나 둘 중 하나이고, 축열의 개수가 랭크, 나머지(자유변수)의 개수가 퇴화차수다. 그래서

계수-퇴화차수 정리. m×n 행렬 A 에 대해 rank(A)+nullity(A)=n

정의역 Rⁿ 이 두 조각으로 갈린다. 한 조각은 통째로 0 으로 눌리고(영공간), 나머지 조각만 열공간에 일대일로 살아남는다. 두 조각의 차원을 더하면 n 이 되는 것이 계수-퇴화차수 정리다
<정의역 Rⁿ 이 두 조각으로 갈린다. 한 조각은 통째로 0 으로 눌리고(영공간), 나머지 조각만 열공간에 일대일로 살아남는다. 두 조각의 차원을 더하면 n 이 되는 것이 계수-퇴화차수 정리다>[원본 보기]

그림에서 '일대일로 대응한다'고 적은 것은 지금 단계에서는 그럴듯한 그림으로만 받아들이면 된다. 정확한 진술과 증명은 7장에서 핵과 상을 정의한 뒤에 한다.

예제 56

A=[1035111401212149] 의 랭크, 열공간의 기저, 영공간의 기저를 구하고 계수-퇴화차수 정리를 확인하라.

풀이 보기

셋 다 소거 한 번으로 나온다. 기약 행사다리꼴까지 간다.

 R2+R1, R42R1 [1035012101210121]

 R2, R3R2, R4R2 [1035012100000000]

랭크. 축이 1열과 2열, 두 개다. rank(A)=2.

열공간의 기저. 축이 1열과 2열에 있으므로 원래 행렬 A 1열과 2열을 뽑는다.

{(1,1,0,2), (0,1,1,1)}

나머지 두 열은 이 둘로 만들어진다. 기약 행사다리꼴의 3열이 (3,2) 이므로 c3=3c1+2c2, 4열이 (5,1) 이므로 c4=5c1c2 다. 검산: 3(1,1,0,2)+2(0,1,1,1)=(3,1,2,4) 이고 A 의 3열이 (3,1,2,4) ✓.

영공간의 기저. 3열과 4열에 축이 없으니 x3=s, x4=t 가 자유변수다. 두 행은 x13s+5t=0, x2+2st=0 이므로

x=s(3,2,1,0)+t(5,1,0,1)

기저는 {(3,2,1,0), (5,1,0,1)} 이고 nullity(A)=2.

정리 확인. rank+nullity=2+2=4=n ✓. 열이 넷이고 그중 둘은 축열, 둘은 자유변수 열이었으니 당연한 결과다.

답이 말이 되는가. 랭크가 2라는 것은 A 의 네 열이 사실은 2차원 평면 안에 눌려 있다는 뜻이고, 실제로 3열과 4열을 앞의 두 열로 적어 냈다. 4×4 인데 랭크가 4가 아니므로 detA=0 이고 역행렬이 없다.

예제 57

A4×6 행렬이고 rank(A)=3 이다. (1) Ax=0 의 해집합은 몇 차원인가 (2) Ax=b 는 모든 bR4 에 대해 해를 갖는가 (3) 해를 가질 때 해는 몇 개인가?

풀이 보기

소거해 볼 행렬이 없으니 정리만으로 답해야 한다. 확인할 것은 랭크가 행의 수 4와 열의 수 6 각각에 대해 무엇을 뜻하는가다.

(1) 열이 6개이므로 nullity=nrank=63=3. 해집합은 R6 안의 3차원 부분공간이다.

(2) 열공간은 R4 의 부분공간인데 차원이 랭크와 같은 3이다. 3<4 이므로 열공간이 R4 전체가 되지 못한다. 따라서 열공간 밖의 b 에 대해서는 해가 없다.

(3) 해가 하나라도 있으면, 그 해에 영공간의 아무 벡터나 더해도 여전히 해다. A(x0+n)=Ax0+0=b 이기 때문이다. 영공간이 3차원이므로 해집합은 3차원만큼 퍼진 무수히 많은 해이고, 모양은 '특정한 해 하나 + 영공간'이다.

마지막 문장이 3장에서 매개변수로 적었던 해집합의 정체다. (1,3,0)+t(1,1,1) 같은 답에서 앞부분이 특정한 해, 뒷부분이 영공간이었다. 해집합은 영공간을 통째로 평행이동한 것이고, 그래서 상수항이 0이 아니면 원점을 지나지 않아 부분공간이 되지 못한다.

정사각행렬에 대한 동치 명제

여기까지 오면 3장부터 흩어져 있던 말들이 한 줄로 꿰인다. 4장 끝에서 detA0 을 두고 다섯 줄짜리 표를 만들었는데, 이제 그 표에 여러 줄을 덧붙일 수 있다.

n×n 행렬 A 에 대해 다음은 모두 같은 말이다. 하나가 참이면 전부 참이고, 하나가 거짓이면 전부 거짓이다.

어디서 나온 말인가내용
3장 — 역행렬A 가 가역이다. A1 이 있다
3장 — 소거A 의 기약 행사다리꼴이 I 다. 축이 n 개다
3장 — 기본행렬A 가 기본행렬들의 곱으로 적힌다
3장 — 해Ax=b 가 모든 b 에 대해 해를 정확히 하나 갖는다
3장 — 동차Ax=0 이 자명해만 갖는다
4장 — 행렬식detA0
6장 — 독립A 의 열들이 일차독립이다. 행들도 그렇다
6장 — 생성A 의 열들이 Rn 을 생성한다
6장 — 기저A 의 열들이 Rn 의 기저다
6장 — 랭크rank(A)=n, 곧 nullity(A)=0
6장 — 공간col(A)=row(A)=Rn, null(A)={0}
왼쪽 하나가 참이면 오른쪽이 전부 참이고 하나가 거짓이면 전부 거짓이다. 서로 다른 장에서 따로 배운 말들이 같은 사실을 다른 각도에서 부른 이름이었다는 것이 이 그림의 요점이다
<왼쪽 하나가 참이면 오른쪽이 전부 참이고 하나가 거짓이면 전부 거짓이다. 서로 다른 장에서 따로 배운 말들이 같은 사실을 다른 각도에서 부른 이름이었다는 것이 이 그림의 요점이다>[원본 보기]

7장과 8장에서 이 목록에 세 줄이 더 붙는다. T(x)=Ax단사이자 전사라는 것, 핵이 {0}이라는 것, 그리고 0A 의 고유값이 아니라는 것이다.

이 표를 쓰는 방법은 이렇다. 확인하기 가장 쉬운 항목 하나만 확인하면 된다. 2×23×3 이면 행렬식이 빠르고, 큰 행렬이면 소거가 빠르며, 열에 눈에 띄는 관계가 보이면 그것으로 끝난다.

예제 58

A=[123456789] 가 가역인지, 계산을 가장 적게 하는 방법으로 판정하라. 가역이 아니라면 랭크와 퇴화차수를 말하라.

풀이 보기

행렬식을 계산해도 되지만 더 빠른 길이 있다. 열들 사이의 관계를 눈으로 찾는 것이다.

열이 (1,4,7), (2,5,8), (3,6,9) 인데 각 성분이 1씩, 그리고 다시 1씩 늘어난다. 그렇다면 c1+c3=(4,10,16)=2c2 다. 곧

c12c2+c3=0

자명하지 않은 관계식이 나왔으므로 열들이 일차종속이고, 표에 따라 가역이 아니다. 행렬식을 계산하지 않고 끝났다.

랭크는 얼마인가. 열 셋 중 하나가 군더더기이므로 랭크가 3은 아니다. 1열과 2열은 서로 배수가 아니므로 독립이고, 따라서 랭크는 2다. 계수-퇴화차수 정리로 nullity=32=1.

영공간까지 덤으로 나온다. 위 관계식의 계수가 바로 영공간의 벡터이므로 null(A)=span{(1,2,1)} 이다. 검산: A(1,2,1)=(14+3, 410+6, 716+9)=(0,0,0) ✓.

확인 삼아 행렬식을 계산해도 0이 나온다. 그러나 그 계산은 '왜 0인가'를 알려 주지 않는다. 열 사이의 관계를 먼저 찾는 습관이 시간도 아끼고 뜻도 알려 준다.

예제 59

A=[1234234534564567] 가 가역인지 랭크로 판정하고, 같은 결론을 행렬식으로 확인하라. 가역이 아니라면 영공간의 기저까지 구하라.

풀이 보기

표의 어느 줄로 판정해도 결론은 같아야 한다. 여기서는 '6장 — 랭크' 줄과 '4장 — 행렬식' 줄을 각각 써서 두 길이 정말 같은 곳에 닿는지 본다.

랭크로. 소거한다. 1행을 축으로 아래 세 행을 비운다. R22R1, R33R1, R44R1.

[1234012302460369]

아래 세 행이 서로 배수다. R32R2, R43R2 를 하면 두 행이 통째로 0이 된다.

[1234012300000000]

축이 1열과 2열, 곧 둘뿐이다. rank(A)=24 이므로 표의 '랭크' 줄에 따라 가역이 아니다. 계수-퇴화차수 정리로 nullity(A)=42=2 다.

행렬식으로. 4×4 를 여인자 전개로 풀면 항이 24개지만, 위 소거를 그대로 쓰면 한 줄로 끝난다. 4장에서 본 사실 둘을 쓴다. 배수를 더하는 행연산은 행렬식을 바꾸지 않고, 성분이 전부 0인 행이 있으면 행렬식이 0이다. 따라서 detA=0 이고, 표의 '행렬식' 줄에 따라 역시 가역이 아니다 ✓. 두 길이 같은 곳에 닿았다.

영공간의 기저. 축이 3열과 4열에 없으므로 x3x4 가 자유변수다. 2행은 x22x33x4=0 이니 x2=2x33x4 이고, 이것을 1행 x1+2x2+3x3+4x4=0 에 넣으면 x1=x3+2x4 다.

null(A)=span{(1,2,1,0), (2,3,0,1)}

검산. A(1,2,1,0) 의 네 성분은 각각 14+3=0, 26+4=0, 38+5=0, 410+6=0 ✓. A(2,3,0,1)26+4=0, 49+5=0, 612+6=0, 815+7=0 ✓. 두 벡터가 서로 배수가 아니므로 독립이고, 개수 2가 퇴화차수와 맞는다 ✓.

이 예제가 표를 쓰는 방식 그대로다. 확인하기 가장 쉬운 줄 하나로 판정하고, 미심쩍으면 다른 줄로 검산한다. 여기서는 소거 한 번이 랭크와 행렬식과 영공간을 한꺼번에 주었다.

6장 정리

기호 또는 용어
벡터공간 V덧셈과 스칼라배가 열 개 공리를 만족하는 집합. Rn, Pn, Mmn, 함수 공간
부분공간 W0 을 품고 덧셈과 스칼라배에 닫힌 부분집합. 이 셋만 확인하면 된다
일차결합k1v1++krvr
생성 span(S)S 의 원소로 만들 수 있는 모든 일차결합. 언제나 부분공간
일차독립k1v1++krvr=0 이 자명해뿐
일차종속자명하지 않은 해가 있다. 하나가 나머지의 일차결합
기저일차독립이면서 전체를 생성하는 모음. 모자라지도 남지도 않는다
차원 dimV기저의 원소 개수. dimRn=n, dimPn=n+1, dimMmn=mn
좌표벡터 [v]B기저 B 로 적었을 때의 계수. 기저마다 다르고 기저를 정하면 하나뿐
전이행렬 PBB[v]B=PBB[v]B. [BB][IP] 로 구한다
행공간 row(A)행들이 생성하는 Rn 의 부분공간. 행 연산으로 변하지 않는다
열공간 col(A)열들이 생성하는 Rm 의 부분공간. Ax=b 가 풀릴 b 의 범위
영공간 null(A)Ax=0 의 해집합. 행 연산으로 변하지 않는다
랭크 rank(A)축의 개수. 행공간과 열공간의 공통 차원
퇴화차수 nullity(A)영공간의 차원. 자유변수의 개수
계수-퇴화차수 정리rank(A)+nullity(A)=n (n 은 열의 개수)

이 장에서 'A 가 벡터 x 를 벡터 Ax 로 보낸다'는 표현을 여러 번 썼다. 열공간을 '도달할 수 있는 곳'이라 부르고 영공간을 '0으로 눌리는 곳'이라 부른 것도 그 관점이다. 그런데 그 관점을 정식으로 정의한 적이 없다. 다음 장이 그 일을 한다. 행렬을 함수로 보는 것이고, 그렇게 보는 순간 6장의 부분공간들과 8장의 고유값이 하나의 이야기가 된다.

선형변환

3장부터 지금까지 행렬은 두 얼굴을 가지고 있었다. 하나는 '연립방정식의 계수를 담아 둔 표'이고, 다른 하나는 4장에서 넓이를 잴 때, 6장에서 열공간을 말할 때 슬며시 쓰던 '벡터를 벡터로 보내는 장치'다. 두 번째 얼굴을 정식으로 다루는 것이 이 장이다.

이 장에서 답할 질문은 셋이다. 행렬을 함수로 보면 무엇이 달라지는가, 왜 하필 그 두 조건을 만족하는 함수만 다루는가, 그리고 같은 변환인데 행렬이 여러 개일 수 있는가. 마지막 물음의 답이 8장의 대각화로 곧장 이어진다.

앞에서 가져오는 것은 3장의 행렬 곱과 역행렬, 4장의 행렬식, 5장의 정사영, 6장의 부분공간·기저·좌표·랭크다. 기초수학에서는 기초수학의 함수 어휘(정의역·공역·상·단사·전사·전단사·합성)와 /posts/fundamental/elementary-mathematics.html > 삼각함수의 덧셈정리를 쓴다.

두 조건만 남긴 함수

벡터공간 V 에서 벡터공간 W 로 가는 함수 T:VW 가 다음 둘을 만족하면 선형변환(linear transformation)이라 한다.

  1. 덧셈 보존: T(u+v)=T(u)+T(v)
  2. 스칼라배 보존: T(ku)=kT(u)

왜 하필 이 둘인가. 6장에서 벡터공간에 있는 연산이 덧셈과 스칼라배 둘뿐이었기 때문이다. 구조를 지키는 함수란 그 구조를 이루는 연산을 지키는 함수이고, 연산이 둘이니 조건도 둘이다. 두 조건을 합치면 한 줄로 적을 수 있다.

T(k1u+k2v)=k1T(u)+k2T(v)

일차결합을 먼저 하고 보내나, 먼저 보내고 일차결합을 하나 결과가 같다. 이 성질이 이 장 전체를 굴린다.

조건에서 곧바로 따라 나오는 것이 있다. k=0 을 넣으면 T(0)=0 이다. 선형변환은 원점을 반드시 원점으로 보낸다. 이것 하나로 걸러지는 함수가 많다.

왼쪽의 정사각 격자가 가운데에서 기울어진 격자가 된다. 직선은 직선으로, 평행한 것은 평행한 것으로, 등간격은 등간격으로 가고 원점은 제자리다. 오른쪽 평행이동은 격자 모양을 그대로 두지만 원점을 옮기므로 선형변환이 아니다
<왼쪽의 정사각 격자가 가운데에서 기울어진 격자가 된다. 직선은 직선으로, 평행한 것은 평행한 것으로, 등간격은 등간격으로 가고 원점은 제자리다. 오른쪽 평행이동은 격자 모양을 그대로 두지만 원점을 옮기므로 선형변환이 아니다>[원본 보기]

그림의 왼쪽 둘이 선형변환이 하는 일의 전부다. 격자를 격자로 보낸다. 늘리고 기울이고 돌리고 뒤집을 수는 있지만, 휘게 하거나 찢거나 통째로 밀 수는 없다. 휘면 직선이 직선으로 가지 않고, 밀면 원점이 움직인다.

예제 60

다음 함수가 선형변환인지 판정하라. (1) T(x,y)=(2xy, x) (2) T(x,y)=(x+1, y) (3) T(x,y)=(x2, y) (4) T(x,y)=(|x|, y)

풀이 보기

선형이 아님을 보이려면 반례 하나면 되고, 선형임을 보이려면 두 조건을 일반적으로 확인해야 한다. 그리고 맨 먼저 T(0)=0 인지 본다. 가장 빨리 걸러진다.

(1) T(0,0)=(0,0) ✓ 이니 계속 본다. u=(u1,u2), v=(v1,v2) 로 두면

T(u+v)=(2(u1+v1)(u2+v2), u1+v1)=(2u1u2, u1)+(2v1v2, v1)=T(u)+T(v)

스칼라배도 같은 방식으로 성립한다. 선형변환이다.

(2) T(0,0)=(1,0)(0,0). 선형이 아니다. 평행이동이 섞여 있다.

(3) T(0,0)=(0,0) 이지만 T(2(1,0))=T(2,0)=(4,0) 인 반면 2T(1,0)=2(1,0)=(2,0) 이다. 다르다. 선형이 아니다.

(4) T(0,0)=(0,0) 이고 덧셈도 언뜻 될 것 같지만, T(1(1,0))=T(1,0)=(1,0) 이고 T(1,0)=(1,0) 이다. 선형이 아니다.

(3)과 (4)가 알려 주는 것이 있다. T(0)=0필요조건일 뿐 충분조건이 아니다. 그것만 통과했다고 선형이라 단정하면 안 된다. 한편 성분이 전부 일차식이고 상수항이 없으면 언제나 선형변환이라는 것은 (1)의 계산을 일반화하면 나온다.

예제 61

다음이 선형변환인지 판정하라. (1) 다항식을 미분하는 D:PnPn1, D(p)=p (2) 2×2 행렬의 행렬식 det:M22R (3) 전치 T(A)=AT

풀이 보기

정의역과 공역이 Rn 이 아니어도 판정 방법은 같다. 두 조건을 그대로 확인한다.

(1) 미분. 기초수학의 미분법에서 (f+g)=f+g(kf)=kf 를 배웠다. 이것이 정확히 두 조건이다. 선형변환이다. 미분의 다섯 규칙 중 앞의 둘은 사실 '미분은 선형이다'라는 한 문장이었다.

(2) 행렬식. 4장에서 이미 확인했다. det(A+B)detA+detB 다. 예를 들어 A=B=I 이면 왼쪽은 det(2I)=4, 오른쪽은 1+1=2 다. 선형이 아니다. 4장에서 '행렬식에는 덧셈 규칙이 없다'고 한 것이 이 말이다.

(3) 전치. 3장의 성질에서 (A+B)T=AT+BT 이고 (kA)T=kAT 다. 선형변환이다.

(1)이 이 예제의 요점이다. 미적분에서 따로 배운 규칙들이 여기서는 '미분이라는 선형변환'의 정의가 된다. 그래서 미분방정식을 선형대수의 언어로 다시 쓸 수 있고, 실제로 그렇게 한다.

행렬로 나타내기 — 열은 기저의 상이다

선형변환은 함수라서 무한히 많은 입력에 대한 답을 정해야 할 것 같지만, 실제로는 기저를 어디로 보내는지만 알면 끝난다.

T:RnRm 이 선형이라 하자. 임의의 x=(x1,,xn) 은 표준기저의 일차결합 x1e1++xnen 이므로

T(x)=x1T(e1)++xnT(en)

이고, 오른쪽은 3장에서 정의한 '열들의 일차결합', 곧 행렬 곱이다. 따라서 T(e1),,T(en)열로 세운 m×n 행렬 A 를 만들면 T(x)=Ax 다. 이 AT표준행렬이라 한다.

왼쪽에서 x 를 기저의 일차결합으로 쪼개면, 오른쪽에서 T(x) 는 같은 계수로 기저의 상을 일차결합한 것이 된다. 계수 2 와 1 이 양쪽에서 그대로라는 점이 요점이며, 그래서 T 를 알려면 기저의 상만 알면 된다
<왼쪽에서 x 를 기저의 일차결합으로 쪼개면, 오른쪽에서 T(x) 는 같은 계수로 기저의 상을 일차결합한 것이 된다. 계수 2 와 1 이 양쪽에서 그대로라는 점이 요점이며, 그래서 T 를 알려면 기저의 상만 알면 된다>[원본 보기]

뒤집어 말하면, 3장에서 낯설게 정의한 행렬 곱은 선형변환을 적는 유일한 방법이었다. 곱을 그렇게 정의하지 않으면 이 대응이 성립하지 않는다.

예제 62

원점을 중심으로 반시계 방향 θ 만큼 돌리는 회전변환의 표준행렬을 구하라.

풀이 보기

구할 것은 2×2 행렬이고, 필요한 것은 T(e1)T(e2) 둘뿐이다. 회전이 선형변환이라는 것은 그림에서 받아들이자. 길이와 각을 보존하므로 평행사변형이 평행사변형으로 가고, 그래서 덧셈이 보존된다.

e1=(1,0) 은 단위원 위의 각 0인 점이다. θ 만큼 돌리면 각이 θ 인 점, 곧

T(e1)=(cosθ, sinθ)

e2=(0,1) 은 각이 90° 인 점이므로 돌리면 각이 θ+90° 다. 삼각함수의 관계 cos(θ+90°)=sinθ, sin(θ+90°)=cosθ 를 쓰면

T(e2)=(sinθ, cosθ)

둘을 열로 세운다.

Rθ=[cosθsinθsinθcosθ]

검산 두 가지. θ=0 이면 I 가 되어야 하는데 실제로 그렇다 ✓. θ=90° 이면 [0110] 이고, 이것을 (1,0) 에 곱하면 (0,1) 이다. 오른쪽을 보던 화살표가 위를 보게 되었으니 반시계 방향이 맞다 ✓.

행렬식도 확인해 두자. cos2θ+sin2θ=1 이다. 4장에서 행렬식이 넓이 배율이라 했으니, 회전은 넓이를 바꾸지 않는다는 사실과 정확히 맞는다.

예제 63

R2 에서 원점을 지나고 방향이 단위벡터 a^ 인 직선 위로 정사영하는 변환의 표준행렬을 구하고, a^=15(2,1) 인 경우를 계산하라.

풀이 보기

5장에서 정사영을 projax=(xa^)a^ 로 구했다. 이것이 선형인지부터 보자. 내적이 덧셈과 스칼라배에 대해 선형이므로 x 에 대해 선형이다 ✓.

표준행렬을 얻는 방법은 두 가지다. 하나는 기저의 상을 구하는 것이고, 다른 하나는 식을 행렬 곱으로 다시 적는 것이다. 뒤쪽이 더 깔끔하다. 5장에서 내적을 xa^=a^Tx 로 적을 수 있었으므로

T(x)=(a^Tx)a^=a^(a^Tx)=(a^a^T)x

가운데에서 수 하나를 벡터 앞뒤로 옮긴 것이 요령이다. 수는 어디에 곱해도 되지만 행렬 곱은 결합법칙만 쓸 수 있으므로, 이렇게 묶으면 표준행렬이 드러난다.

P=a^a^T

열벡터 곱하기 행벡터라 결과가 2×2 행렬이다. a^=15(2,1) 을 넣으면

P=15[21][21]=15[4221]

검산 세 가지. Pa^a^ 그대로여야 한다. 15[4221]15[21]=155[105]=15[21] ✓. 직선에 수직인 (1,2) 는 0으로 가야 한다. 15(44, 22)=(0,0) ✓. 그리고 detP=125(44)=0 인데, 평면이 직선으로 눌리니 넓이가 0인 것이 맞다 ✓.

한 가지 더. P2=P 다. 이미 직선 위에 있는 것을 다시 사영해도 제자리이기 때문이다. 이런 행렬을 사영행렬이라 하고 9장에서 부분공간으로 확장한다.

R2 의 기본 변환들

손으로 확인할 수 있는 변환 다섯 가지를 모아 둔다. 뒤에서 예를 들 때 계속 쓴다.

같은 격자가 다섯 가지로 달라진다. 회전과 반사는 넓이를 그대로 두고, 확대는 배율의 제곱만큼 늘리고, 전단은 기울이되 넓이를 지키며, 사영만 격자를 직선으로 눌러 되돌릴 수 없게 만든다
<같은 격자가 다섯 가지로 달라진다. 회전과 반사는 넓이를 그대로 두고, 확대는 배율의 제곱만큼 늘리고, 전단은 기울이되 넓이를 지키며, 사영만 격자를 직선으로 눌러 되돌릴 수 없게 만든다>[원본 보기]
변환표준행렬det
회전 θ[cosθsinθsinθcosθ]1길이와 각을 지킨다
x 축 반사[1001]1길이는 지키고 방향(자리 순서)을 뒤집는다
k 배 확대[k00k]k2모든 방향으로 똑같이 늘린다
가로 전단[1k01]1높이에 비례해 옆으로 민다. 넓이는 그대로
x 축 사영[1000]0평면을 직선으로 누른다. 되돌릴 수 없다

행렬식 열을 눈여겨보라. 4장에서 '행렬식은 넓이 배율'이라 했고 'det=0 이면 가역이 아니다'라고 했는데, 그 두 문장이 이 표에서 그대로 읽힌다. 사영만 det=0 이고 사영만 되돌릴 수 없다. 반사의 det=1 에서 음수 부호는 넓이가 아니라 방향이 뒤집혔다는 표시다.

예제 64

원점을 지나고 방향이 단위벡터 a^ 인 직선에 대해 대칭시키는 변환의 표준행렬이 R=2a^a^TI 임을 보이고, a^=15(2,1) 인 경우를 구하라.

풀이 보기

구하려는 것은 반사행렬이고, 이미 아는 것은 앞 예제의 사영행렬 P=a^a^T 다. 둘의 관계를 그림으로 찾는다.

5장의 분해를 쓴다. 어떤 벡터든 직선과 나란한 조각 Px 와 직선에 수직인 조각 xPx 로 갈라진다. 대칭이란 나란한 조각은 그대로 두고 수직인 조각의 부호만 뒤집는 것이다.

Rx=Px(xPx)=2Pxx=(2PI)x

따라서 R=2a^a^TI 다. ■

값을 넣는다. 앞에서 P=15[4221] 였으므로

R=25[4221][1001]=15[854425]=15[3443]

검산. detR=125(916)=1 이다. 반사이므로 1 이 나와야 하고 실제로 그렇다 ✓. 또 두 번 반사하면 제자리여야 한다. R2=125[9+161212121216+9]=I ✓.

직선 위의 벡터는 그대로 있고 수직인 벡터는 뒤집힌다는 것도 확인된다. R(2,1)=15(6+4, 83)=(2,1) ✓, R(1,2)=15(38, 4+6)=(1,2) ✓. 이 두 방향이 8장에서 말할 고유벡터다.

예제 65

어떤 도형의 넓이가 6이다. 여기에 A=[3112] 를 적용하면 넓이가 얼마가 되는가? 또 B=[2412] 를 적용하면?

풀이 보기

4장에서 detA 가 단위정사각형이 가는 평행사변형의 넓이라고 했다. 격자의 모든 칸이 똑같이 늘어나므로 어떤 도형이든 넓이가 |detA|가 된다.

detA=61=5 이므로 넓이는 6×5=30.

detB=44=0 이므로 넓이는 0이다. 도형이 직선 하나로 눌려 버렸다는 뜻이다.

B 를 좀 더 보자. 두 열 (2,1)(4,2) 는 배수 관계라 같은 직선 위에 있다. 그래서 Bxx 가 무엇이든 그 직선 위의 점이 된다. 평면 전체가 직선으로 접힌 것이고, 접힌 것은 펼 수 없으니 B 는 가역이 아니다. 6장의 표대로 랭크가 1, 퇴화차수가 1이다.

부호도 뜻이 있다. det 가 음수인 변환을 먹이면 넓이는 절댓값만큼 변하고 도형의 앞뒤가 뒤집힌다. 시계 방향으로 적던 꼭짓점 순서가 반시계 방향이 된다.

합성이 행렬 곱인 이유

변환을 이어서 하는 것은 함수의 합성이다. S:RnRp 의 표준행렬을 B, T:RpRm 의 표준행렬을 A 라 하면

(TS)(x)=T(S(x))=T(Bx)=A(Bx)=(AB)x

이다. 세 번째 등호에서 3장의 결합법칙을 썼다. 그래서 합성의 표준행렬은 두 행렬의 곱이고, 순서는 함수 합성과 같이 오른쪽 것을 먼저 적용한다.

전단을 하고 회전을 한 결과가 오른쪽이다. 가운데를 건너뛰고 한 번에 가는 행렬이 두 행렬의 곱이며, 먼저 하는 변환이 곱에서 오른쪽에 온다. 3장에서 낯설게 정의한 행렬 곱이 사실은 이 그림을 적은 것이다
<전단을 하고 회전을 한 결과가 오른쪽이다. 가운데를 건너뛰고 한 번에 가는 행렬이 두 행렬의 곱이며, 먼저 하는 변환이 곱에서 오른쪽에 온다. 3장에서 낯설게 정의한 행렬 곱이 사실은 이 그림을 적은 것이다>[원본 보기]

3장에서 행렬 곱이 결합법칙은 만족하지만 교환법칙은 만족하지 않는다고 했다. 이제 그 이유를 말할 수 있다. 함수의 합성은 언제나 결합법칙을 만족하지만(어느 쪽으로 묶든 '차례로 적용한다'는 사실은 같다), 순서를 바꾸면 다른 일이 벌어진다. 옷을 입고 나가는 것과 나가서 옷을 입는 것이 다른 것과 같다.

예제 66

90° 회전 T 와 가로 전단 S(x,y)=(x+y, y) 에 대해 TSST 를 구하고, (1,0) 이 각각 어디로 가는지 비교하라.

풀이 보기

두 표준행렬은 A=[0110], B=[1101] 다.

TS=AB=[0110][1101]=[0111]

ST=BA=[1101][0110]=[1110]

다르다. (1,0) 을 넣어 본다. TS(1,0)=(0,1) 이고 ST(1,0)=(1,1) 이다.

왜 갈리는지는 순서를 따라가면 보인다. TS: 전단이 먼저인데 (1,0) 은 높이가 0이라 밀리지 않고 그대로 (1,0), 그 다음 회전해서 (0,1). ST: 회전이 먼저라 (1,0)(0,1) 이 되고, 이제 높이가 1이 되었으므로 전단이 옆으로 1만큼 밀어 (1,1).

전단이 '높이에 비례해' 미는 변환이라, 회전을 먼저 해서 높이를 만들어 주었느냐가 결과를 가른다. 교환법칙이 성립하지 않는다는 것이 계산 규칙의 결함이 아니라 세상의 사실이라는 점을 이 예가 보여 준다.

예제 67

θ 만큼 돌린 뒤 φ 만큼 더 돌리면 θ+φ 만큼 돌린 것과 같다. 이 사실을 행렬 곱으로 적고, 삼각함수의 덧셈정리를 유도하라.

풀이 보기

물음을 식으로 옮기면 RφRθ=Rθ+φ 다. 왼쪽을 계산해서 오른쪽과 성분끼리 비교하면 된다.

RφRθ=[cosφsinφsinφcosφ][cosθsinθsinθcosθ]

1행 1열은 cosφcosθsinφsinθ, 2행 1열은 sinφcosθ+cosφsinθ 다. 곱을 다 하면

RφRθ=[cosφcosθsinφsinθ(sinφcosθ+cosφsinθ)sinφcosθ+cosφsinθcosφcosθsinφsinθ]

한편 오른쪽은 Rθ+φ=[cos(θ+φ)sin(θ+φ)sin(θ+φ)cos(θ+φ)] 다. 1행 1열과 2행 1열을 비교하면

cos(θ+φ)=cosθcosφsinθsinφ,sin(θ+φ)=sinθcosφ+cosθsinφ

기초수학에서 배운 덧셈정리다. ■

여기서는 두 회전을 이어 하면 각이 더해진다는 기하적 사실에서 대수 공식을 끌어냈다. 외우기 어려운 공식이 '돌리고 또 돌리면 각이 더해진다'는 한 문장으로 줄어든 셈이다. 덤으로 회전끼리는 RφRθ=RθRφ 로 교환법칙이 성립한다는 것도 보인다. 각의 덧셈이 교환법칙을 만족하기 때문이다.

핵과 상

함수를 다룰 때 늘 묻는 두 가지가 있다. 어디로 가는가무엇이 겹치는가다. 선형변환 T:VW 에 대해

둘 다 부분공간이다. 핵의 경우, T(u)=T(v)=0 이면 T(u+v)=0+0=0 이고 T(ku)=k0=0 이며 T(0)=0 이다. 상도 같은 방식으로 확인된다.

그런데 T(x)=Ax 인 경우 이 둘은 새로운 것이 아니다.

ker(T)=null(A) 이고 im(T)=col(A) 다.

앞의 것은 정의가 글자 그대로 같다. 뒤의 것은 Ax 가 열들의 일차결합이므로 상이 곧 열들이 생성하는 공간이기 때문이다. 6장에서 '도달할 수 있는 곳'이라 불렀던 것이 정확히 상이다.

평면 전체가 직선 하나로 눌린다. 왼쪽 점선 위의 점은 전부 같은 곳으로 가고, 그 점선을 원점까지 밀어 놓은 직선이 핵이다. 오른쪽에서 도달하는 직선이 상이며 그 밖의 점에는 닿지 못한다
<평면 전체가 직선 하나로 눌린다. 왼쪽 점선 위의 점은 전부 같은 곳으로 가고, 그 점선을 원점까지 밀어 놓은 직선이 핵이다. 오른쪽에서 도달하는 직선이 상이며 그 밖의 점에는 닿지 못한다>[원본 보기]

그러면 6장의 계수-퇴화차수 정리가 새 옷을 입는다. dimker(T)=nullity(A) 이고 dimim(T)=rank(A) 이므로

dimker(T)+dimim(T)=dimV

이다. 말로 옮기면 정의역의 차원 가운데 핵에서 잃은 만큼이 상에서 줄어든다. 잃은 것과 남은 것의 합은 언제나 처음 것이다. 6장의 그림에서 '일대일로 대응한다'고 적었던 것이 이 등식의 내용이다.

예제 68

T(x,y,z)=(x+y+z, 2x+2y+2z) 의 핵과 상을 구하고 각각의 차원을 말하라.

풀이 보기

먼저 표준행렬을 적는다. 기저의 상은 T(1,0,0)=(1,2), T(0,1,0)=(1,2), T(0,0,1)=(1,2) 이므로

A=[111222]

상. 세 열이 모두 (1,2) 로 같다. 그러니 상은 span{(1,2)}, 곧 R2 안의 직선이고 차원은 1이다. 랭크가 1이라는 말과 같다.

핵. Ax=0 은 사실상 x+y+z=0 한 줄이다(둘째 행은 첫 행의 2배라 새 정보가 없다). y=s, z=t 로 두면 x=st 이므로

ker(T)={s(1,1,0)+t(1,0,1)}=span{(1,1,0), (1,0,1)}

R3 안의 평면이고 차원은 2다.

정리 확인. 2+1=3=dimR3 ✓.

그림으로 읽으면 이렇다. R3 이라는 3차원이 들어가서 1차원 직선으로 나왔다. 2차원어치가 사라졌고, 사라진 그 2차원이 핵이다. x+y+z=0 이라는 평면 전체가 원점 하나로 뭉개진 것이다.

예제 69

미분변환 D:P3P3, D(p)=p 의 핵과 상을 구하고 차원 정리를 확인하라.

풀이 보기

정의역은 차수 3 이하의 다항식 전체이고 dimP3=4 다(기저 {1,x,x2,x3}).

핵. 미분해서 0이 되는 다항식은 상수함수뿐이다. ker(D)=span{1} 이고 차원은 1이다.

상. D(1)=0, D(x)=1, D(x2)=2x, D(x3)=3x2 이므로 상은 span{1,x,x2}=P2 이고 차원은 3이다. 미분하면 차수가 하나 내려가므로 x3 은 만들 수 없다.

정리 확인. 1+3=4=dimP3 ✓.

이 결과를 미적분의 말로 옮기면 익숙한 두 문장이 된다. 핵이 상수뿐이라는 것은 부정적분의 적분상수가 하나뿐이라는 말이고, 상이 P2 라는 것은 차수 2 이하 다항식은 전부 적분할 수 있다는 말이다. 미적분에서 따로 배운 두 사실이 차원 정리 한 줄에 들어 있다.

단사·전사·동형사상

기초수학에서 함수의 어휘를 배웠다. 그것을 그대로 쓴다. 다만 선형변환에서는 판정이 훨씬 쉬워진다.

T 가 단사 ker(T)={0}

왜인가. T(u)=T(v) 이면 선형성에서 T(uv)=0 이므로 uvker(T) 다. 핵이 {0} 뿐이면 u=v 이고, 핵에 다른 것이 있으면 서로 다른 둘이 같은 곳으로 간다. ■

일반 함수라면 '겹치는 점이 있는가'를 정의역 전체에서 확인해야 하는데, 선형변환은 원점 한 곳만 보면 된다. 이것이 선형성이 주는 큰 이득이다.

전사는 정의 그대로 im(T)=W 다. 그리고 두 물음이 차원 정리로 묶인다. T:RnRn 처럼 정의역과 공역의 차원이 같으면

T 가 단사nullity=0rank=nT 가 전사

다. 정사각행렬에서는 단사와 전사가 같은 말이라는 뜻이고, 6장의 동치 명제 목록에 이 두 줄이 추가된다.

단사이면서 전사인 선형변환을 동형사상(isomorphism)이라 하고, 그런 것이 있으면 두 벡터공간이 동형이라 한다. 동형인 두 공간은 이름표만 다르고 구조가 같다. 6장에서 P2R3 를 두고 '같은 것을 다른 글씨로 적었다'고 한 것이 이것이다.

여기서 중요한 정리 하나가 나온다. 차원이 n 인 실수 벡터공간은 모두 Rn 과 동형이다. 기저를 하나 잡고 좌표벡터를 대응시키면 그것이 동형사상이기 때문이다. 그래서 6장에서 다항식 문제를 계수의 나열로 바꿔 풀 수 있었다.

예제 70

T(x,y)=(xy, 2x2y) 가 단사인지 전사인지 판정하라. 또 S(x,y)=(xy, x+y) 는 어떤가?

풀이 보기

표준행렬을 적고 핵을 본다.

T. A=[1122] 이고 detA=2+2=0 이다. 가역이 아니므로 6장의 표에 따라 자명하지 않은 해가 있다. 실제로 x=y 이면 전부 0으로 가므로

ker(T)=span{(1,1)}{0}

단사가 아니다. 정사각행렬이므로 전사도 아니다. 상은 span{(1,2)} 인 직선뿐이다.

S. B=[1111] 이고 detB=1+1=20 이다. 단사이자 전사, 곧 동형사상이다.

S 의 정체를 짚어 두면 재미있다. B=2[1/21/21/21/2] 인데 오른쪽 행렬은 45° 회전이다. 즉 S45° 돌리고 2 배 늘리는 변환이다. 넓이 배율이 (2)2=2 이고 이것이 detB 와 맞는다 ✓.

판정에서 실제로 한 일은 행렬식 계산 하나뿐이다. 6장의 동치 명제 목록 덕분에 '단사인가'라는 함수의 물음이 'det0 인가'라는 산수로 바뀌었다.

예제 71

T:P2R3T(a0+a1x+a2x2)=(a0, a1, a2) 로 정의하면 동형사상임을 보여라. 그리고 이것을 써서 {1+x, x+x2, 1+x2}P2 의 기저인지 판정하라.

풀이 보기

선형성. 다항식을 더하면 계수끼리 더해지고, 상수배하면 계수가 상수배되므로 두 조건이 성립한다 ✓.

단사. T(p)=(0,0,0) 이면 모든 계수가 0이므로 p 는 영다항식이다. 핵이 {0} 뿐이다 ✓.

전사. 아무 (a0,a1,a2) 를 주어도 a0+a1x+a2x2 가 그리로 간다 ✓. 따라서 동형사상이다.

이제 판정 문제를 옮긴다. 동형사상은 일차독립을 보존하므로(T 가 단사라 관계식이 그대로 옮겨 간다) 세 다항식이 기저인지 묻는 것은 그 상이 R3 의 기저인지 묻는 것과 같다.

1+x(1,1,0),x+x2(0,1,1),1+x2(1,0,1)

열로 세워 행렬식을 구한다.

det[101110011]=1(10)0+1(10)=20

0이 아니므로 세 벡터가 기저이고, 따라서 세 다항식도 P2 의 기저다.

이 예제의 요점은 답이 아니라 방법이다. 기저를 하나 정하는 순간 어떤 벡터공간의 문제든 Rn 의 행렬 계산으로 옮겨 갈 수 있다. 함수 공간이든 행렬 공간이든 마찬가지다.

기저를 바꾸면 행렬이 어떻게 바뀌는가

이 절이 이 장의 마지막이자 8장의 출발점이다.

6장에서 벡터는 하나인데 좌표는 기저마다 다르다고 했다. 선형변환도 마찬가지다. 변환은 하나인데 그것을 적은 행렬은 기저마다 다르다.

왼쪽과 오른쪽은 같은 변환이다. 표준기저의 자로 재면 두 기저벡터가 모두 방향까지 바뀌어 행렬이 뒤섞이지만, 기울어진 기저의 자로 재면 두 방향이 각각 3배와 1배로 늘어날 뿐이라 대각행렬이 된다
<왼쪽과 오른쪽은 같은 변환이다. 표준기저의 자로 재면 두 기저벡터가 모두 방향까지 바뀌어 행렬이 뒤섞이지만, 기울어진 기저의 자로 재면 두 방향이 각각 3배와 1배로 늘어날 뿐이라 대각행렬이 된다>[원본 보기]

T:RnRn 의 표준행렬을 A 라 하고, 새 기저 B={b1,,bn} 을 잡자. 6장에서 기저벡터를 열로 세운 행렬 P=[b1  bn] 이 'B 좌표 → 표준좌표' 방향이라고 했다. 곧 x=P[x]B 다.

이제 B 좌표에서 출발해 B 좌표로 답하는 경로를 따라간다. 좌표를 표준으로 바꾸고, A 를 적용하고, 다시 B 좌표로 되돌린다.

[T(x)]B=P1AP[x]B

따라서 기저 B 에서 본 T 의 행렬은 [T]B=P1AP 다.

왼쪽으로 곧장 내려가는 길이 표준기저에서의 A 이고, 오른쪽으로 돌아 내려가는 길이 새 기저에서의 D 다. 두 길의 결과가 같으므로 A = PDP⁻¹ 이며, 이 관계가 8장의 닮음이다
<왼쪽으로 곧장 내려가는 길이 표준기저에서의 A 이고, 오른쪽으로 돌아 내려가는 길이 새 기저에서의 D 다. 두 길의 결과가 같으므로 A = PDP⁻¹ 이며, 이 관계가 8장의 닮음이다>[원본 보기]

이런 관계에 있는 두 행렬, 곧 어떤 가역행렬 P 에 대해 C=P1APAC닮았다(similar)고 한다. 방금 본 것을 한 문장으로 하면 이렇다.

닮은 두 행렬은 같은 선형변환을 서로 다른 기저에서 적은 것이다.

그러면 자연스러운 물음이 생긴다. 기저를 잘 고르면 그 행렬을 가장 단순하게, 이를테면 대각행렬로 만들 수 있는가? 위 그림의 오른쪽 패널이 그런 경우였다. 그 물음이 8장의 주제다.

예제 72

A=[2112] 로 주어진 변환을 기저 B={(1,1), (1,1)} 에서 적은 행렬 [T]B 를 구하라.

풀이 보기

필요한 것은 PP1 이다. 새 기저벡터를 열로 세운다.

P=[1111],detP=11=2

3장의 공식으로 역행렬을 구한다.

P1=12[1111]=12[1111]

이제 곱한다. 오른쪽부터 계산하는 것이 편하다.

AP=[2112][1111]=[3131]

[T]B=P1(AP)=12[1111][3131]=12[6002]=[3001]

대각행렬이 나왔다.

왜 이렇게 되었는지는 계산 없이도 보인다. A(1,1)=(3,3)=3(1,1) 이고 A(1,1)=(1,1) 이다. 두 기저벡터가 각각 방향은 그대로이고 길이만 3배와 1배가 된 것이다. 그러니 그 기저에서 보면 변환은 '첫 축으로 3배, 둘째 축으로 1배'일 뿐이고, 그것을 적은 행렬이 diag(3,1) 이다.

검산으로 닮음 불변량을 보자. detA=41=3 이고 det[T]B=31=3 ✓. 대각합도 2+2=43+1=4 로 같다. 같은 변환을 적은 것이니 이런 값들이 같아야 마땅하고, 8장에서 이 사실을 정리로 세운다.

예제 73

앞 절에서 구한 반사행렬 R=15[3443] 을 기저 B={(2,1), (1,2)} 에서 적으면 어떤 행렬이 되는가. 계산하기 전에 답을 예상하라.

풀이 보기

예상. R 은 방향 (2,1) 인 직선에 대한 반사였다. 그 직선 위의 벡터는 제자리이고 수직인 벡터는 부호가 뒤집힌다. 그런데 (2,1) 은 직선 방향이고 (1,2) 는 그에 수직이다(내적이 22=0). 그러니 답은 diag(1,1) 일 것이다.

확인. P=[2112], detP=41=5 이므로

P1=15[2112]=15[2112]

RP=15[3443][2112]=15[105510]=[2112]

[R]B=P1(RP)=15[2112][2112]=15[5005]=[1001]

예상대로다 ✓.

여기서 얻을 교훈은 계산이 아니라 순서다. 변환이 무엇을 하는지 알면 좋은 기저가 먼저 보이고, 그 기저에서 행렬은 저절로 단순해진다. 8장은 이 순서를 거꾸로 간다. 행렬만 주어졌을 때 좋은 기저를 찾아내는 방법을 만드는 것이고, 그 방법이 고유값과 고유벡터다.

7장 정리

기호 또는 용어
선형변환 T:VWT(u+v)=T(u)+T(v), T(ku)=kT(u). 언제나 T(0)=0
표준행렬A=[T(e1)  T(en)]. 열이 기저의 상이다
회전 Rθ[cosθsinθsinθcosθ], det=1
직선 위로의 사영P=a^a^T. P2=P, detP=0
직선에 대한 반사R=2a^a^TI. R2=I, detR=1
전단[1k01]. 넓이를 바꾸지 않는다
합성TS 의 행렬은 AB. 먼저 하는 것이 오른쪽
넓이 배율|detA| 배. 부호가 음수면 방향이 뒤집힌다
ker(T)T(v)=0 인 것들. null(A) 와 같다
im(T)도달하는 곳 전체. col(A) 와 같다
차원 정리dimker(T)+dimim(T)=dimV
단사 판정ker(T)={0}. 원점 한 곳만 보면 된다
동형사상단사이자 전사인 선형변환. 차원 n 인 공간은 모두 Rn 과 동형
기저 변환[T]B=P1AP. P 의 열은 새 기저벡터
닮음C=P1AP 인 관계. 같은 변환을 다른 기저에서 적은 것

6장의 동치 명제 목록에 이 장의 항목을 더한다. n×n 행렬 A 가 가역인 것은 T(x)=Ax단사인 것과 같고, 전사인 것과 같고, 동형사상인 것과 같으며, ker(T)={0} 인 것과 같다.

마지막 절이 남긴 물음을 다음 장에서 푼다. 주어진 행렬을 대각행렬로 만드는 기저를 어떻게 찾는가. 그런 기저의 벡터들은 '변환해도 방향이 그대로인 벡터'여야 하고, 그것을 찾는 것이 고유값 문제다.

고유값과 고유벡터

7장은 물음 하나를 남겼다. 주어진 행렬을 가장 단순하게 만드는 기저를 어떻게 찾는가. 7장의 마지막 예제에서 답이 이미 한 번 나왔다. 좋은 기저의 벡터들은 변환해도 방향이 바뀌지 않는 벡터였다. 그런 벡터를 찾는 방법을 만드는 것이 이 장이다.

이 장에서 답할 질문은 셋이다. 방향이 유지되는 벡터를 어떻게 찾는가, 그런 벡터로 기저를 만들 수 있는가, 그리고 못 만들면 무엇이 문제인가. 마지막 물음에 대한 답 하나가 '고유값이 실수가 아니어서'이고, 그 자리에서 복소수가 들어온다.

앞에서 가져오는 것은 3장의 역행렬, 4장의 행렬식과 특히 detA=0 의 뜻, 5장의 내적과 직교, 그리고 (Au)v=u(ATv), 6장의 영공간·기저·차원, 7장의 선형변환과 닮음이다. 기초수학에서는 복소수와 극형식, 근과 계수의 관계를 쓴다.

방향이 그대로인 벡터

n×n 행렬 A영벡터가 아닌 벡터 x 에 대해

Ax=λx

를 만족하는 스칼라 λ 가 있으면, xA고유벡터(eigenvector), λ 를 그에 대응하는 고유값(eigenvalue)이라 한다.

뜻은 그림으로 보는 편이 빠르다. 보통의 벡터는 행렬을 곱하면 방향이 틀어지는데, 고유벡터는 원점을 지나는 같은 직선 위에 머물고 길이만 λ 배가 된다.

왼쪽에서 두 벡터는 변환 뒤 방향이 틀어졌다. 오른쪽 두 방향은 같은 직선 위에 남아 길이만 3배와 1배로 바뀐다. 이 두 방향이 고유벡터이고 3 과 1 이 고유값이다
<왼쪽에서 두 벡터는 변환 뒤 방향이 틀어졌다. 오른쪽 두 방향은 같은 직선 위에 남아 길이만 3배와 1배로 바뀐다. 이 두 방향이 고유벡터이고 3 과 1 이 고유값이다>[원본 보기]

정의에서 조심할 곳이 둘 있다.

예제 74

A=[2112] 에 대해 (1,1), (1,1), (1,0) 이 고유벡터인지 판정하고, 맞으면 고유값을 구하라.

풀이 보기

판정 방법은 정의 그대로다. 곱해 보고 원래 벡터의 배수인지 본다.

A[11]=[33]=3[11] — 고유벡터이고 λ=3.

A[11]=[11]=1[11] — 고유벡터이고 λ=1.

A[10]=[21](2,1)(1,0) 의 배수가 아니다. 고유벡터가 아니다.

고유벡터는 하나가 아니라 직선 하나만큼 있다는 점을 짚어 두자. x 가 고유벡터면 A(kx)=kAx=kλx=λ(kx) 이므로 kx 도 같은 고유값의 고유벡터다. 그래서 (2,2)(5,5) 도 모두 λ=3 의 고유벡터다. 하나를 대표로 골라 쓰는 것뿐이다.

예제 75

다음 변환의 고유값과 고유벡터를 계산 없이 그림으로 찾아라. (1) 직선 위로의 정사영 (2) 직선 에 대한 반사 (3) k 배 확대 (4) 90° 회전

풀이 보기

물어야 할 것은 '어느 방향이 제자리 직선에 남는가'이고, 그 방향에서 '길이가 몇 배가 되는가'다.

(1) 사영. 직선 위의 벡터는 그대로이므로 λ=1. 에 수직인 벡터는 0으로 가므로 λ=0. 고유값이 1,0 이다. λ=0 이 있으니 사영은 가역이 아니고, 7장에서 detP=0 이었던 것과 맞는다.

(2) 반사. 위는 그대로라 λ=1, 수직 방향은 부호가 뒤집혀 λ=1. 7장 마지막 예제에서 얻은 diag(1,1) 이 바로 이 두 고유값을 늘어놓은 것이었다.

(3) 확대. 모든 벡터가 k 배가 되므로 모든 방향이 고유벡터이고 고유값은 k 하나다.

(4) 회전. 어떤 방향도 제자리 직선에 남지 않는다. 90° 돌리면 원래 직선과 수직이 되기 때문이다. 실수 고유값이 없다.

(4)가 이 장의 마지막 절로 이어진다. 실수 범위에서 고유값이 없다는 것은 '문제가 없다'는 뜻이 아니라 '수의 범위를 넓혀야 한다'는 뜻이다. 기초수학에서 x2=1 을 풀려고 복소수를 만들었던 것과 같은 자리다.

특성방정식 — 고유값을 찾는 방법

그림으로 찾는 것은 몇몇 특별한 변환에서만 가능하다. 일반적인 방법이 필요하다.

Ax=λx 를 한쪽으로 모은다. 오른쪽의 λxλIx 로 적는 것이 요령이다. 그래야 x 를 묶을 수 있다.

(AλI)x=0

이것은 동차연립방정식이다. 우리가 원하는 것은 x0 인 해, 곧 자명하지 않은 해다. 그런데 3장과 4장에서 그 조건을 이미 배웠다. 자명하지 않은 해가 있다는 것은 계수행렬이 가역이 아니라는 것이고, 그것은

det(AλI)=0

과 같은 말이다. 이 방정식을 특성방정식(characteristic equation)이라 하고, 왼쪽 식을 λ 에 대한 다항식으로 보아 특성다항식이라 한다. n×n 행렬이면 n 차 다항식이 된다.

왼쪽은 특성다항식의 그래프이고 근이 둘이다. 오른쪽은 그 근 하나에서 A − λI 가 평면을 선분으로 눌러 버리는 모습이다. 넓이가 0 이 되니 행렬식이 0 이고, 눌려서 0 으로 가는 방향이 고유벡터가 된다
<왼쪽은 특성다항식의 그래프이고 근이 둘이다. 오른쪽은 그 근 하나에서 A − λI 가 평면을 선분으로 눌러 버리는 모습이다. 넓이가 0 이 되니 행렬식이 0 이고, 눌려서 0 으로 가는 방향이 고유벡터가 된다>[원본 보기]

특성다항식을 얻고 나면 다음은 인수분해다. 기초수학의 인수정리와 근과 계수의 관계가 그대로 쓰인다.

계산을 아끼는 사실 하나. 삼각행렬의 고유값은 주대각선 성분 그 자체다. AλI 도 삼각행렬이고, 4장에서 삼각행렬의 행렬식이 대각성분의 곱이므로 특성다항식이 곧바로 인수분해된 꼴로 나오기 때문이다.

예제 76

A=[3232] 의 고유값을 구하라.

풀이 보기

특성다항식을 세운다. 대각선에서 λ 를 빼는 것이 전부다.

det(AλI)=|3λ232λ|=(3λ)(2λ)6

전개한다.

=63λ+2λ+λ26=λ2λ12=(λ4)(λ+3)

고유값은 λ=4λ=3 이다.

검산하는 좋은 방법이 있다. 2×2 특성다항식은 언제나

λ2(대각성분의 합)λ+detA

꼴이다. 여기서 대각성분의 합은 3+(2)=1, detA=66=12 이므로 λ2λ12 ✓. 근과 계수의 관계로 뒤집어 보면 고유값의 합이 대각성분의 합, 곱이 행렬식이다. 실제로 4+(3)=1 ✓, 4×(3)=12 ✓. 이 검산은 n×n 에서도 성립한다.

예제 77

A=[101112002] 의 고유값을 구하라.

풀이 보기

3×3 이라 3차 다항식이 나온다. 0이 많은 줄로 전개하는 것이 요령이고, 여기서는 3행에 0이 둘이다.

det(AλI)=|1λ0111λ2002λ|

3행으로 여인자 전개하면 앞의 두 항이 0이므로

=(2λ)|1λ011λ|=(2λ)(1λ)2

고유값은 λ=2λ=1 이고, λ=1중근이다.

검산. 대각성분의 합은 1+1+2=4 이고 고유값의 합은 2+1+1=4 ✓(중근은 두 번 센다). 곱은 211=2 이고, 실제로 3행으로 전개한 detA=2(110)=2 ✓.

3차 이상에서 인수분해가 막히면 기초수학의 인수정리를 쓴다. 상수항의 약수를 하나씩 대입해 보아 0이 되는 값 α 를 찾고, (λα) 로 나눠 차수를 하나 낮추면 된다. 다만 이 문서의 예제는 손으로 인수분해되도록 골라 두었다.

고유공간과 두 가지 중복도

고유값을 찾았으면 고유벡터를 찾을 차례다. λ 를 정해 놓고 보면

(AλI)x=0

의 해집합이 곧 그 고유값의 고유벡터 전체(에 영벡터를 더한 것)다. 6장의 말로 하면 AλI 의 영공간이고, 부분공간이다. 이것을 λ 에 대한 고유공간(eigenspace)이라 한다.

고유공간을 구하는 것은 새로운 계산이 아니다. 3장의 소거법으로 동차연립방정식을 풀면 된다.

여기서 두 가지 '개수'가 나온다. 둘을 구분하는 것이 이 장에서 가장 걸리는 곳이다.

둘은 같을 수도 있고 다를 수도 있다. 다만 언제나 기하적 중복도 대수적 중복도이고, 특히 기하적 중복도는 1 이상이다(고유값이라면 고유벡터가 적어도 하나는 있다). 이 부등식이 다음 절의 대각화 조건을 지배한다.

두 행렬 모두 고유값이 3 하나뿐이고 대수적 중복도가 2다. 갈리는 것은 살아남는 방향의 개수다. 왼쪽에서는 어느 방향으로 쏘아도 화살표가 제 점선 위에 남고, 오른쪽에서는 가로축 하나만 남고 나머지는 전부 기운다. 그 남는 방향의 개수가 기하적 중복도다
<두 행렬 모두 고유값이 3 하나뿐이고 대수적 중복도가 2다. 갈리는 것은 살아남는 방향의 개수다. 왼쪽에서는 어느 방향으로 쏘아도 화살표가 제 점선 위에 남고, 오른쪽에서는 가로축 하나만 남고 나머지는 전부 기운다. 그 남는 방향의 개수가 기하적 중복도다>[원본 보기]

예제 78

앞 예제의 A=[101112002] 의 각 고유값에 대한 고유공간의 기저를 구하고 두 중복도를 비교하라.

풀이 보기

고유값은 λ=2 (단근)와 λ=1 (중근)이었다. 각각에 대해 (AλI)x=0 을 푼다.

λ=2.

A2I=[101112000] R2+R1, R1 [101013000]

x3=t 가 자유변수다. 둘째 행에서 x2=3t, 첫째 행에서 x1=t 이므로 고유공간의 기저는 {(1,3,1)} 이고 차원은 1이다.

검산. A(1,3,1)=(11, 132, 2)=(2,6,2)=2(1,3,1) ✓.

λ=1.

AI=[001102001] 정리 [100001000]

축이 1열과 3열에 있으므로 x2=s 만 자유변수다. x1=0, x3=0 이므로 기저는 {(0,1,0)} 이고 차원은 1이다.

비교. λ=2 는 대수적 1, 기하적 1로 같다. λ=1대수적 2, 기하적 1로 다르다.

그래서 일차독립인 고유벡터를 다 모아도 (1,3,1)(0,1,0) 둘뿐이다. R3 의 기저를 만들려면 셋이 필요한데 하나가 모자란다. 이 행렬로는 고유벡터로 된 기저를 만들 수 없다. 다음 절에서 이것이 '대각화 불가능'이라 불린다.

예제 79

B=[3003]C=[3103] 의 고유값과 두 중복도를 각각 구하고 차이를 설명하라.

풀이 보기

둘 다 상삼각행렬이므로 고유값은 대각성분, 곧 λ=3 뿐이고 대수적 중복도는 둘 다 2다. 갈리는 것은 기하적 중복도다.

B. B3I=O(영행렬)이므로 (B3I)x=0 은 모든 x 가 해다. 고유공간이 R2 전체이고 기하적 중복도가 2다. 실제로 B=3I 는 3배 확대라 모든 방향이 고유벡터다.

C. C3I=[0100] 이고 [0100][xy]=[y0]=0 이려면 y=0 이다. 고유공간이 span{(1,0)} 인 직선이고 기하적 중복도가 1이다.

왜 갈렸는가. C 는 3배 확대에 전단이 섞인 변환이다. 7장에서 전단은 가로축 방향만 제자리에 두고 다른 방향은 모두 기울인다고 했다. 그래서 살아남는 방향이 하나뿐이다.

두 행렬의 고유값이 똑같은데 성질이 전혀 다르다는 점이 요점이다. 고유값만으로는 행렬을 알 수 없고 고유공간까지 봐야 한다.

닮음, 그리고 대각화

닮음 불변량

7장에서 C=P1AP 인 관계를 닮음이라 부르고, 그것이 '같은 변환을 다른 기저에서 적은 것'이라고 했다. 같은 변환이라면 기저와 상관없는 성질은 그대로여야 한다. 그런 성질을 닮음 불변량이라 한다.

먼저 새 기호 하나가 필요하다. 정사각행렬의 주대각선 성분을 모두 더한 값을 대각합(trace)이라 하고 tr(A) 로 적는다. 앞 절의 검산에서 '대각성분의 합'이라 부른 그것이다.

대각합에는 놀라운 성질이 있다. tr(AB)=tr(BA) 다. 곱 자체는 교환법칙이 성립하지 않는데도 대각합은 같다. 양쪽 다 ijaijbji 로 같은 합이 되기 때문이다.

이제 불변량을 모은다. C=P1AP 라 하자.

불변량왜 같은가
특성다항식det(CλI)=det(P1(AλI)P)=det(AλI)
고유값과 그 대수적 중복도특성다항식이 같으므로 근도 같다
행렬식detC=det(P1)detAdetP=detA
대각합tr(P1AP)=tr(APP1)=tr(A)
랭크와 퇴화차수가역행렬을 곱해도 축의 개수가 변하지 않는다
고유공간의 차원(기하적 중복도)xA 의 고유벡터면 P1xC 의 고유벡터다

첫 줄의 계산에서 P1(AλI)P=P1APλP1P=CλI 를 썼다. 4장의 곱의 행렬식과 det(P1)=1/detP 가 나머지를 해 준다.

이 표의 쓸모는 두 방향이다. 하나는 계산의 검산이고, 다른 하나는 닮지 않았음을 보이는 것이다. 불변량 하나만 달라도 닮지 않았다고 단정할 수 있다. 반대로 전부 같다고 해서 닮았다고 단정할 수는 없다.

예제 80

A=[1203]B=[2002] 는 닮았는가? AC=[3501] 는 어떤가?

풀이 보기

닮음을 직접 보려면 P 를 찾아야 하지만, 닮지 않았음은 불변량 하나로 끝난다. 값싼 것부터 본다.

AB. 대각합은 1+3=42+2=4 로 같고 행렬식도 34 … 다르다. detA=3, detB=4 이므로 닮지 않았다.

고유값으로 봐도 같은 결론이다. A 는 삼각행렬이라 고유값이 1,3 이고 B2,2 다. 애초에 다르다.

AC. 둘 다 삼각행렬이라 고유값이 각각 {1,3}{3,1} 로 같다. 대각합 4, 행렬식 3도 같다. 불변량으로는 걸러지지 않는다.

이 경우는 실제로 닮았다. 고유값이 서로 다른 둘이라 두 행렬 모두 diag(1,3) 와 닮고, 닮음은 추이적이기 때문이다. AD 이고 CD 이면 AC 다.

정리하면 이렇다. 불변량이 다르면 닮지 않았다고 단정할 수 있고, 같으면 더 봐야 한다. 앞 절의 B=3IC=[3103] 가 그 '더 봐야 하는' 예다. 고유값도 대각합도 행렬식도 같지만 기하적 중복도가 달라 닮지 않았다. 실은 3I 는 어떤 P 로 바꿔도 P1(3I)P=3I 라 자기 자신하고만 닮는다.

대각합이 불변량이라는 사실에서 실용적인 요령이 하나 나온다. n×n 에서 고유값의 합은 대각합, 곱은 행렬식이다. 특히 2×2 에서는 특성다항식이 λ2tr(A)λ+detA 이므로 행렬식을 전개할 것도 없이 곧장 세울 수 있다. 예를 들어 [4211] 이면 tr=5, det=6 이므로 λ25λ+6=0 에서 고유값이 2,3 이다. 앞으로 이 요령을 계속 쓰고, 계산이 끝나면 합과 곱으로 검산한다.

대각화의 조건과 절차

이제 7장이 남긴 물음에 답한다.

정사각행렬 A 가 대각화 가능(diagonalizable)하다는 것은 P1AP 가 대각행렬이 되는 가역행렬 P 가 있다는 뜻이다.

언제 가능한가. P1AP=DAP=PD 로 옮겨 적고 열별로 보면 답이 바로 나온다. P 의 열을 p1,,pn, D 의 대각성분을 λ1,,λn 이라 하면

AP=[Ap1  Apn],PD=[λ1p1  λnpn]

왼쪽에서 두 고유벡터가 A 를 지나도 제 직선 위에 남고 길이만 λ 배가 된다. 오른쪽은 그 사실을 열 단위로 적은 것이다. AP 의 j 열은 A p~j, PD 의 j 열은 λ~j p~j 이므로, 두 행렬이 같다는 말은 열마다 A p~j = λ~j p~j 라는 말과 똑같다. 이것이 P 의 열이 반드시 고유벡터여야 하는 이유다
<왼쪽에서 두 고유벡터가 A 를 지나도 제 직선 위에 남고 길이만 λ 배가 된다. 오른쪽은 그 사실을 열 단위로 적은 것이다. AP 의 j 열은 A p~j, PD 의 j 열은 λ~j p~j 이므로, 두 행렬이 같다는 말은 열마다 A p~j = λ~j p~j 라는 말과 똑같다. 이것이 P 의 열이 반드시 고유벡터여야 하는 이유다>[원본 보기]

두 행렬이 같다는 것은 열마다 Apj=λjpj 라는 뜻, 곧 P 의 열이 전부 고유벡터라는 뜻이다. 그리고 P 가 가역이어야 하므로 그 열들이 일차독립이어야 한다.

조건을 적기 전에 어느 수 범위에서 대각화하는가를 정해야 한다. 이 문서의 표기 규약은 스칼라를 실수로 본다고 했으므로, 아래는 실수 범위의 진술이다. PD 의 성분도 실수여야 한다는 뜻이다. 정리하면

A 가 실수 범위에서 대각화 가능 A 가 일차독립인 실수 고유벡터를 n 개 갖는다 특성다항식의 근이 모두 실수이고, 각 고유값에서 기하적 중복도 = 대수적 중복도

마지막 동치에서 근이 모두 실수라는 단서를 빼면 안 된다. 대수적 중복도의 총합이 n 이 되는 것은 복소수까지 세었을 때이고, 실수 근만 세면 총합이 n 에 못 미칠 수 있기 때문이다. 그런 행렬은 실수 고유값마다 기하적 = 대수적이 되더라도 실수 고유벡터를 n 개 모을 수 없어 대각화되지 않는다. 이 장 뒤의 회전행렬이 정확히 그런 경우이고, 실수 고유값이 아예 없어 조건의 뒷부분을 공허하게 만족한다. 단서가 없으면 그 행렬이 대각화된다는 잘못된 결론이 나온다.

복소수까지 허용하면 사정이 달라진다. 대수학의 기본정리 덕에 근은 중복을 세어 언제나 n 개이므로, 조건이 '각 고유값에서 기하적 = 대수적 중복도' 하나로 줄어든다. 회전행렬도 복소수 범위에서는 대각화된다. 그 이야기는 이 장의 복소 고유값 절에서 한다.

남은 근거는 서로 다른 고유값에 대응하는 고유벡터는 일차독립이라는 사실이고, 이렇게 보인다. 종속이라면 종속이 되는 가장 짧은 관계식을 하나 잡고, 그 식에 A 를 적용한 것과 어느 한 고유값을 곱한 것을 빼면 더 짧은 관계식이 나와 모순이다.

여기서 곧바로 따라 나오는 편리한 판정법이 있다. n×n 행렬이 서로 다른 실수 고유값을 n 개 가지면 반드시 대각화 가능하다. 근이 전부 실수이고 중복근이 없으니 중복도를 걱정할 일이 없기 때문이다. 중복근이 있거나 실수가 아닌 근이 섞여 있을 때만 더 따져 보면 된다.

절차는 셋이다. 특성방정식을 풀어 고유값을 구하고, 각 고유공간의 기저를 구하고, 그것들을 열로 세워 P 를 만든다. D 는 대응하는 고유값을 같은 순서로 늘어놓은 대각행렬이다. 순서를 맞추는 것이 유일한 함정이다.

예제 81

A=[0123] 를 대각화하라.

풀이 보기

1단계 — 고유값. tr(A)=3, detA=0+2=2 이므로

λ2+3λ+2=(λ+1)(λ+2)=0λ=1, 2

서로 다른 둘이므로 대각화 가능하다는 것이 이 시점에 이미 확정된다.

2단계 — 고유벡터. λ=1 일 때

A+I=[1122]

이므로 x+y=0, 곧 p1=(1,1). λ=2 일 때

A+2I=[2121]

이므로 2x+y=0, 곧 p2=(1,2).

3단계 — 조립. 순서를 맞춰 세운다.

P=[1112],D=[1002]

검산은 AP=PD 를 보는 것이 역행렬을 구하는 것보다 빠르다.

AP=[0123][1112]=[1214],PD=[1112][1002]=[1214]

같다 ✓.

P 의 열 순서를 바꾸면 D 의 대각성분 순서도 따라 바뀐다. 대각화는 하나로 정해지지 않는다. 고유벡터의 배수를 바꿔도, 순서를 바꿔도 여전히 옳은 대각화다.

예제 82

A=[5105] 가 대각화 가능한지 판정하라. 가능하지 않다면 그 이유를 기하적으로 설명하라.

풀이 보기

삼각행렬이므로 고유값은 λ=5 뿐이고 대수적 중복도는 2다. 중복근이 있으니 고유공간의 차원을 따져야 한다.

A5I=[0100]

랭크가 1이므로 6장의 계수-퇴화차수 정리에 따라 퇴화차수는 21=1 이다. 기하적 중복도가 1이고 대수적 중복도 2보다 작으므로 대각화할 수 없다.

일차독립인 고유벡터가 하나뿐이니 P 의 두 열을 채울 수 없다는 것이 대수적인 이유다.

기하적인 이유는 이렇다. A=5[11/501] 이므로 이 변환은 5배 확대와 전단의 합성이다. 대각화가 가능하다는 것은 '적당한 기울어진 좌표계에서 보면 각 축 방향으로 늘리기만 하는 변환'이라는 뜻인데, 전단은 어떤 좌표계에서 봐도 기울이는 동작이 남는다. 격자를 아무리 비스듬히 그려도 전단은 그 격자를 밀어 버린다.

대각화할 수 없는 행렬을 어디까지 단순하게 만들 수 있는지는 조르당 표준형이라는 이름으로 다루는데, 이 문서의 범위를 넘는다. 다행히 실무에서 가장 자주 만나는 대칭행렬은 언제나 대각화되고, 그것이 이 장 뒷부분의 주제다.

대각화가 값을 하는 곳 — 거듭제곱과 점화식

대각화의 값어치는 A 를 여러 번 곱해야 할 때 드러난다. A=PDP1 이면

A2=PDP1PDP1=PD2P1,Ak=PDkP1

이다. 가운데에서 P1P=I 가 계속 지워지는 것이 전부다. 그리고 대각행렬의 거듭제곱은 대각성분만 거듭제곱하면 끝이다.

위쪽은 행렬 곱을 99번 하는 길이고 아래쪽은 고유값을 100제곱하는 길이다. 분해와 복원에 곱셈 몇 번이 들지만 그 사이의 거듭제곱이 통째로 사라진다. 점화식과 마르코프 연쇄와 미분방정식이 전부 이 우회로를 쓴다
<위쪽은 행렬 곱을 99번 하는 길이고 아래쪽은 고유값을 100제곱하는 길이다. 분해와 복원에 곱셈 몇 번이 들지만 그 사이의 거듭제곱이 통째로 사라진다. 점화식과 마르코프 연쇄와 미분방정식이 전부 이 우회로를 쓴다>[원본 보기]

예제 83

A=[2112] 에 대해 Ak 의 일반식을 구하고 A10 을 계산하라.

풀이 보기

앞에서 이 행렬의 고유값이 3,1 이고 고유벡터가 (1,1), (1,1) 임을 확인했다. 7장 마지막 절에서 쓴 P 를 그대로 쓴다.

P=[1111],D=[3001],P1=12[1111]

이제 조립한다. Dk=diag(3k,1) 이므로

Ak=PDkP1=[1111][3k001]12[1111]

앞의 두 개를 먼저 곱하면 [3k13k1] 이고, 여기에 나머지를 곱하면

Ak=12[3k+13k13k13k+1]

검산부터 한다. k=1 이면 12[4224]=[2112]A 자신이다 ✓. k=0 이면 12[2002]=I ✓.

k=10 을 넣는다. 310=59049 이므로

A10=12[59050590485904859050]=[29525295242952429525]

검산 하나 더. det(A10)=(detA)10=310=59049 여야 한다. 실제로 295252295242=(29525+29524)(2952529524)=59049 ✓. 4장의 곱의 행렬식이 여기서 검산 도구가 되었다.

k 가 커질 때의 거동도 읽힌다. 3k 이 압도적으로 커지므로 Ak 의 네 성분이 거의 같아지고, 그 결과 Akx 는 어떤 x 로 출발하든 방향이 (1,1) 에 가까워진다. 가장 큰 고유값의 고유벡터가 장기적으로 이긴다는 것이 이런 계산의 일반적인 결론이다.

예제 84

피보나치 수열 F0=0, F1=1, Fn+1=Fn+Fn1 의 일반항을 고유값으로 구하라.

풀이 보기

먼저 점화식을 행렬로 옮겨야 한다. 연달은 두 항을 한 벡터로 묶는 것이 요령이다.

[Fn+1Fn]=[1110][FnFn1]

곱해 보면 첫 성분이 Fn+Fn1 이고 둘째가 Fn 이라 점화식과 맞는다 ✓. 이 행렬을 A 라 하면 [Fn+1Fn]=An[F1F0] 이다.

고유값. tr(A)=1, detA=1 이므로

λ2λ1=0λ=1±52

두 근을 φ=1+52, ψ=152 라 하자. 서로 다르므로 대각화 가능하다.

일반항의 꼴. An=PDnP1 이고 Dn=diag(φn,ψn) 이므로, An 의 모든 성분은 φnψn 의 일차결합이다. 따라서

Fn=c1φn+c2ψn

인 상수가 있다. 이 꼴을 알아낸 것이 고유값이 해 준 일의 전부이고, 상수는 처음 두 항으로 정한다.

F0=0 에서 c1+c2=0, F1=1 에서 c1φ+c2ψ=1 이다. 앞의 식에서 c2=c1 이므로

c1(φψ)=1,φψ=5c1=15

Fn=15((1+52)n(152)n)

검산. n=5 이면 φ511.09, ψ50.09 이므로 (11.09+0.09)/2.2365 이고 실제로 F5=5 ✓.

답이 말이 되는가. |ψ|0.618<1 이라 ψn 은 빠르게 0에 가까워진다. 그러니 큰 n 에서 Fnφn/5 이고, 이웃한 두 항의 비가 φ 에 수렴한다. 황금비가 여기서 나온다. 정수만 나오는 수열의 일반항에 무리수가 들어 있는 것이 이상해 보이지만, 두 항이 정확히 상쇄되어 언제나 정수가 된다.

이 절의 그림 설명이 '점화식과 마르코프 연쇄와 미분방정식이 전부 이 우회로를 쓴다'고 적었는데, 실제로 풀어 보인 것은 거듭제곱과 점화식 둘뿐이다. 마르코프 연쇄와 연립미분방정식은 이 문서에서 다루지 않는다. 둘 다 여기서 배운 Ak=PDkP1 을 그대로 쓰지만, 상태 벡터가 무엇을 뜻하는지와 무엇으로 수렴하는지를 따로 세워야 해서 한 절로는 정직하게 담기지 않는다. 갈 곳은 마지막 장 「더 공부할 것」에 적어 두었다.

직교행렬과 대칭행렬 — 스펙트럼 정리

대각화가 언제나 되지는 않는다고 했다. 그런데 실대칭행렬은 언제나 되고, 그것도 가장 좋은 방식으로 된다. 이 절이 그 이야기다.

먼저 도구가 하나 필요하다. 열들이 서로 직교하고 길이가 1인 정사각행렬을 직교행렬(orthogonal matrix)이라 한다. 이 조건을 행렬로 적으면 QTQ(i,j) 성분이 i 열과 j 열의 내적이므로

QTQ=I,Q1=QT

다. 역행렬이 전치라는 것이 직교행렬을 쓰는 이유다. 소거할 필요 없이 뒤집어 적기만 하면 된다.

직교행렬은 길이와 각을 보존한다. 5장의 관계를 쓰면 한 줄이다.

Qx2=(Qx)(Qx)=x(QTQx)=xx=x2

즉 직교행렬이 나타내는 변환은 회전이거나 반사다(detQ=±1 이고 부호가 그것을 가른다). 7장의 표에서 회전과 반사만 넓이와 길이를 지켰던 것과 맞는다.

이제 대칭행렬이다. AT=A 인 실행렬에 대해 두 가지가 성립한다.

  1. 고유값이 모두 실수다. 증명은 복소수를 써야 하므로 다음 절로 미룬다.
  2. 서로 다른 고유값의 고유벡터는 직교한다.

두 번째를 보이자. 5장에서 증명해 둔 (Au)v=u(ATv) 를 쓴다. A 가 대칭이므로 오른쪽은 u(Av) 다. Au=λu, Av=μv 라 하면

λ(uv)=(Au)v=u(Av)=μ(uv)

이므로 (λμ)(uv)=0 이다. λμ 였으므로 uv=0. ■

단위원이 타원으로 간다. 대칭행렬이면 타원의 두 주축이 서로 수직이고 그 방향이 고유방향이다. 대칭이 아니면 고유방향이 비스듬히 어긋난다. 스펙트럼 정리가 말하는 것이 이 직각이다
<단위원이 타원으로 간다. 대칭행렬이면 타원의 두 주축이 서로 수직이고 그 방향이 고유방향이다. 대칭이 아니면 고유방향이 비스듬히 어긋난다. 스펙트럼 정리가 말하는 것이 이 직각이다>[원본 보기]

여기에 '중복도가 있어도 고유공간의 차원이 대수적 중복도만큼 나온다'는 사실을 더하면 다음이 나온다.

스펙트럼 정리. 실대칭행렬 A직교행렬로 대각화된다. 곧 직교행렬 Q 와 대각행렬 D 가 있어

A=QDQT,QTAQ=D

이다. 역도 성립한다. QDQT 꼴로 적히는 행렬은 전치해 보면 자기 자신이므로 반드시 대칭이다.

이 정리가 9장과 10장의 바탕이 된다. 9장의 최소제곱에서 ATA 가, 10장의 특이값 분해에서 다시 ATA 가 나오는데 그것이 언제나 대칭이기 때문이다.

한 가지는 정직하게 밝혀 둔다. 학부 교재는 보통 이 정리 다음에 이차형식 xTAx양정치성으로 넘어간다. 직교대각화가 그 식의 교차항을 없애 주기 때문에 두 주제가 한 몸이다. 이 문서는 이차형식과 양정치성을 다루지 않는다. 그래서 10장에서 주성분분석의 '퍼짐'을 말할 때도 그것이 이차형식이라는 말을 하지 못하고 지나간다. 무엇을 어디서 이어 읽으면 되는지는 마지막 장 「더 공부할 것」에 적어 두었다.

예제 85

A=[5222] 를 직교대각화하라.

풀이 보기

대칭행렬이므로 반드시 된다. 절차는 대각화와 같고 마지막에 고유벡터의 길이를 1로 맞추는 단계만 추가된다.

고유값. tr(A)=7, detA=104=6 이므로

λ27λ+6=(λ1)(λ6)=0λ=6, 1

고유벡터. λ=6 일 때 A6I=[1224] 이므로 x+2y=0, 곧 (2,1).

λ=1 일 때 AI=[4221] 이므로 2x+y=0, 곧 (1,2).

두 벡터의 내적은 22=0 이다. 직교한다 ✓. 계산하지 않아도 그래야 했지만, 확인해 보면 앞 계산의 실수를 잡을 수 있다.

정규화. 두 벡터 모두 길이가 5 이므로 나눠 준다.

Q=15[2112],D=[6001]

검산. QTQ=15[2112][2112]=15[5005]=I ✓ (이 Q 는 대칭이라 전치가 자기 자신이다). 그리고 AQ 의 첫 열이 15(10+2, 4+2)=15(12,6)=615(2,1)QD 의 첫 열과 같다 ✓.

기하로 읽으면 이렇다. A 는 방향 (2,1) 로 6배, 그에 수직인 방향 (1,2) 로 1배 늘리는 변환이다. 앞 그림의 가운데 패널이 이 상황이고, 단위원이 장축 6 단축 1인 타원으로 간다.

예제 86

Q=[1/32/32/32/31/32/32/32/31/3] 가 직교행렬임을 확인하고 Q1 을 적어라. 또 Q(1,2,2) 를 계산 없이 말하라.

풀이 보기

확인할 것은 각 열의 길이가 1이고 서로 직교하는가다.

길이부터. 첫 열은 19(1+4+4)=1 ✓. 둘째 열은 19(4+1+4)=1 ✓. 셋째 열은 19(4+4+1)=1 ✓.

직교. 1열과 2열의 내적은 19(2+24)=0 ✓. 1열과 3열은 19(24+2)=0 ✓. 2열과 3열은 19(422)=0 ✓.

직교행렬이므로 Q1=QT 다. 소거할 것 없이 행과 열을 바꿔 적으면 끝이다.

Q1=13[122212221]

마지막 물음. 직교행렬은 길이를 보존하므로 Q(1,2,2)=(1,2,2)=1+4+4=3 이다. 곱셈을 하지 않고 답했다.

이 성질이 실용적으로 중요한 이유가 있다. 수치계산에서 큰 행렬을 여러 번 곱하면 오차가 눈덩이처럼 커지는데, 직교행렬은 길이를 늘리지 않으므로 오차도 늘리지 않는다. 9장의 QR 분해와 10장의 특이값 분해가 직교행렬을 고집하는 데는 이 이유도 있다.

복소 고유값 — 회전이 남긴 문제

앞 절의 대각화 조건에 특성다항식의 근이 모두 실수라는 단서를 붙인 이유가 이 절이다. 그 단서를 걷어 내는 것이 여기서 하는 일이다.

앞에서 미룬 것이 둘 있다. 회전변환에 실수 고유값이 없다는 것과, 대칭행렬의 고유값이 실수라는 것의 증명이다. 둘 다 복소수를 들여야 풀린다.

특성방정식은 n 차 다항식이다. 실수 범위에서는 근이 없을 수 있지만, 복소수까지 넓히면 중복을 세어 언제나 정확히 n의 근이 있다. 기초수학에서 복소수를 소개하며 '모든 다항방정식이 근을 갖는다'고 한 것이 이 사실이고, 이름은 대수학의 기본정리다. 그러니 고유값을 복소수까지 허용하면 '고유값이 없다'는 경우가 사라진다. 이때 고유벡터의 성분도 복소수가 되고, 스칼라로 복소수를 허용한 벡터공간을 복소벡터공간이라 한다. Cn 이 그 표준적인 예다.

왼쪽에서 어떤 방향도 제자리 직선에 남지 않는다. 오른쪽 복소평면에서 고유값 두 개가 단위원 위에 켤레쌍으로 놓이고, 그 편각이 정확히 회전각이다. 실수 직선에는 없던 답이 평면으로 넓히자 나타났다
<왼쪽에서 어떤 방향도 제자리 직선에 남지 않는다. 오른쪽 복소평면에서 고유값 두 개가 단위원 위에 켤레쌍으로 놓이고, 그 편각이 정확히 회전각이다. 실수 직선에는 없던 답이 평면으로 넓히자 나타났다>[원본 보기]

예제 87

회전행렬 Rθ=[cosθsinθsinθcosθ] 의 고유값을 구하라.

풀이 보기

tr=2cosθ 이고 det=cos2θ+sin2θ=1 이므로 특성방정식은

λ22cosθλ+1=0

근의 공식을 쓴다.

λ=2cosθ±4cos2θ42=cosθ±cos2θ1=cosθ±isinθ

마지막에서 cos2θ1=sin2θ 를 썼다. 판별식이 음수이므로(θ0 이나 180° 가 아닌 한) 근이 켤레복소수 쌍이다.

답을 읽는다. 기초수학의 극형식으로 보면 cosθ+isinθ크기가 1이고 편각이 θ인 복소수다. 곧 고유값의 편각이 회전각이고 크기가 확대율(여기서는 1)이다. 앞 그림의 오른쪽이 이 사실을 그린 것이다.

θ=90° 이면 λ=±i 다. θ=0 이면 λ=1 (중근)이고 실제로 항등변환이라 모든 방향이 고유벡터다. θ=180° 이면 λ=1 (중근)이고 이것은 I, 곧 원점 대칭이라 역시 모든 방향이 고유벡터다. 회전이 실수 고유값을 갖는 것은 이 두 예외뿐이라는 것이 판별식에서 읽힌다.

일반적인 2×2 실행렬의 고유값이 켤레쌍 λ=a±bi 라면, 극형식으로 λ=r(cosθ±isinθ) 이고 r=|λ|=a2+b2 다. 그러면 그 행렬이 나타내는 변환은 θ 만큼 돌리고 r 배 늘리는 것이다(적당한 기저에서 보면 정확히 그렇고, 그렇지 않은 기저에서는 그것을 기울여 본 모양이다).

한 점에 행렬을 거듭 곱하면 궤적이 나선을 그린다. 고유값의 크기가 1 보다 크면 밖으로 감기고 작으면 원점으로 빨려 든다. 회전각은 편각이 정하고 감기는 속도는 크기가 정한다
<한 점에 행렬을 거듭 곱하면 궤적이 나선을 그린다. 고유값의 크기가 1 보다 크면 밖으로 감기고 작으면 원점으로 빨려 든다. 회전각은 편각이 정하고 감기는 속도는 크기가 정한다>[원본 보기]

그래서 x,Ax,A2x, 의 궤적이 나선이 된다. r>1 이면 밖으로, r<1 이면 원점으로, r=1 이면 원 위를 돈다. 진동하는 물리계나 순환하는 경제 모형에서 '진동이 커지는가 잦아드는가'를 판정하는 것이 정확히 이 r 을 보는 일이다.

예제 88

A=[1111] 의 고유값을 구하고, 이 변환이 기하적으로 무엇을 하는지 말하라. 또 Anx 의 궤적은 어떤 모양인가?

풀이 보기

tr(A)=2, detA=1+1=2 이므로

λ22λ+2=0λ=2±482=1±i

극형식으로 옮긴다. r=|1+i|=2 이고 편각은 θ=45° 다.

λ=2(cos45°+isin45°)

따라서 이 변환은 45° 회전과 2 배 확대의 합성이다.

검산. 7장에서 이 행렬을 만난 적이 있는데, 그때 A=2R45° 임을 직접 확인했다. 고유값에서 읽은 답과 정확히 같다 ✓. 넓이 배율도 맞는다. detA=2=(2)2 이고, 이것은 고유값의 곱 (1+i)(1i)=1+1=2이기도 하다 ✓.

궤적. r=2>1 이므로 한 번 곱할 때마다 45° 돌면서 2 배씩 커진다. 밖으로 감기는 나선이다. 여덟 번 곱하면 한 바퀴를 돌고 크기는 (2)8=16 배가 된다.

실수 고유값이 없다는 것을 '고유벡터가 없다'로 오해하지 않도록 하자. 복소 고유벡터는 있고, 그것을 실수 두 벡터로 갈라 적으면 회전이 일어나는 평면이 나온다. R2 에서는 그 평면이 전체라 눈에 띄지 않지만, 큰 행렬에서는 '여기서만 돌고 있다'는 부분공간을 집어 준다.

마지막으로 미뤄 둔 증명을 한다. 실대칭행렬의 고유값은 실수다. 복소수에서 내적을 정의할 때는 한쪽에 켤레를 씌워 uv=uivi 로 한다. 그래야 vv=|vi|2 가 0 이상인 실수가 되어 길이 노릇을 할 수 있기 때문이다. 이제 Ax=λx, x0 이라 하고 양변과 x 의 내적을 취하면

λ(xx)=(Ax)x=x(Ax)=λ(xx)

이다(가운데에서 A 가 실대칭이라는 것을 썼고, 마지막에서 켤레가 오른쪽에 붙는다는 규칙을 썼다). xx>0 이므로 λ=λ 이고, 그것은 λ 가 실수라는 뜻이다. ■

이 계산은 대칭이라는 조건을 복소수 세계로 옮기면 무엇이 되는지도 알려 준다. 켤레전치 A=AT 를 정의하고 A=A 인 복소행렬을 에르미트 행렬, A=A1 인 것을 유니타리 행렬이라 한다. 각각 실대칭행렬과 직교행렬의 복소판이고, 스펙트럼 정리도 그대로 성립한다. 양자역학의 상태 공간이 이 언어로 적힌다. 이 문서에서는 이름만 소개하고 더 다루지 않는다.

8장 정리

기호 또는 용어
고유벡터, 고유값Ax=λx, x0. 변환해도 방향이 유지되는 벡터와 그 배율
특성방정식det(AλI)=0. n 차 다항식이라 복소수까지 세면 근이 n 개
고유공간AλI 의 영공간. 부분공간이다
대수적 중복도특성방정식에서 그 고유값이 몇 중근인가
기하적 중복도고유공간의 차원. 언제나 대수적 중복도 이하이고 1 이상
대각합 tr(A)주대각선 성분의 합. 고유값의 합과 같다. tr(AB)=tr(BA)
고유값의 곱detA 와 같다. 2×2 특성방정식은 λ2tr(A)λ+detA
닮음 ACC=P1AP. 불변량은 특성다항식·고유값·행렬식·대각합·랭크·고유공간 차원
대각화P1AP=D. P 의 열이 고유벡터, D 의 대각성분이 대응하는 고유값
대각화 가능 조건(실수 범위)일차독립인 실수 고유벡터가 n 개. 곧 특성다항식의 근이 모두 실수이고 각 고유값에서 기하적 = 대수적 중복도
충분조건서로 다른 실수 고유값이 n 개면 반드시 대각화 가능. 복소수까지 허용하면 근이 n 개라 실수 조건이 사라진다
거듭제곱Ak=PDkP1. 대각행렬은 성분만 거듭제곱하면 된다
직교행렬 Q열이 정규직교. Q1=QT, 길이 보존, detQ=±1
스펙트럼 정리실대칭행렬은 직교대각화된다. A=QDQT
복소 고유값실행렬이면 켤레쌍으로 나온다. r(cosθ±isinθ) 는 θ 회전과 r 배 확대
켤레전치 AAT. 에르미트는 A=A, 유니타리는 A=A1

이 장에서 '좋은 기저를 고르면 행렬이 단순해진다'는 이야기를 했고, 대칭행렬에서는 그 좋은 기저가 직교하는 기저였다. 그런데 직교가 왜 그렇게 좋은지, 직교하지 않는 기저를 직교하게 고칠 수 있는지는 아직 말하지 않았다. 다음 장이 그 일을 한다. 내적을 공리로 일반화하고, 정규직교기저를 만들고, 그것으로 해가 없는 연립방정식의 가장 그럴듯한 답을 구하는 데까지 간다.

내적공간과 직교성

5장에서 내적을 배웠다. 화살표 두 개의 성분을 곱해 더하면 두 화살표가 이루는 각이 나왔고, 그것으로 길이와 거리와 정사영을 모두 잴 수 있었다. 6장에서는 화살표를 버렸다. 다항식도 함수도 행렬도 합과 스칼라배만 지키면 벡터라고 부르기로 했다. 그러면 자연스러운 물음이 하나 생긴다. 화살표가 아닌 벡터에도 길이와 각이 있는가.

있다. 그리고 그것을 만드는 방법은 5장의 내적이 지키던 성질 몇 개를 그대로 규칙으로 삼는 것이다. 이 장은 그 규칙에서 출발해, 두 함수가 '수직'이라는 말의 뜻을 정하고, 기울어진 기저를 직교기저로 펴는 절차를 만들고, 마지막으로 해가 없는 연립방정식에서 가장 그럴듯한 답을 골라내는 방법까지 간다. 이 장에서 답할 질문은 셋이다. 내적은 무엇으로 정해지는가, 직교기저는 왜 그렇게 편한가, 그리고 Ax=b 에 해가 없을 때 무엇을 구해야 하는가.

앞에서 가져오는 것은 많다. 3장의 행렬 연산과 전치, 4장의 행렬식, 5장의 내적·노름·정사영, 6장의 부분공간·기저·차원·계수와 영공간, 7장의 선형변환과 핵·상, 8장의 직교행렬과 대칭행렬이다. 기초수학에서는 /posts/fundamental/elementary-mathematics.html > 정적분을 한 번 쓴다.

내적을 공리로 다시 정의한다

5장의 점곱 uv=uivi 가 지키던 성질을 다시 꺼내 보자. 대칭이고, 덧셈에 분배되고, 스칼라를 밖으로 뺄 수 있고, 자기 자신과의 내적이 0 이상이었다. 이 넷만 있으면 5장에서 한 이야기가 전부 다시 나온다. 그러니 그 넷을 정의로 삼는다.

실벡터공간 V 위의 내적(inner product)이란 두 벡터에 실수 하나를 대응시키는 함수 u,v 로서 다음 넷을 만족하는 것이다.

  1. 대칭성u,v=v,u
  2. 가법성u+v,w=u,w+v,w
  3. 동차성ku,v=ku,v
  4. 양의 정부호v,v0 이고, v,v=0 인 것은 v=0 일 때뿐이다

내적을 갖춘 벡터공간을 내적공간(inner product space)이라 한다. 앞의 세 조건은 '계산이 잘 풀린다'는 조건이고, 넷째가 진짜 핵심이다. 넷째 덕분에 v,v 의 제곱근을 길이로 삼을 수 있다.

v=v,v,d(u,v)=uv,cosθ=u,vuv

각을 이렇게 정의하려면 오른쪽 값이 1 과 1 사이여야 하는데, 5장에서 한 코시-슈바르츠 증명이 공리 넷만 써서 그대로 통한다. 임의의 실수 t 에 대해

0u+tv, u+tv=v2t2+2u,vt+u2

이고, 이차식이 모든 t 에서 0 이상이려면 판별식이 0 이하여야 하므로 |u,v|uv 다. ■ 성분을 한 번도 쓰지 않았다는 점이 중요하다. 공리를 만족하는 어떤 내적에서도 코시-슈바르츠와 삼각부등식이 성립한다. 그리고 무엇보다 u,v=0 인 두 벡터를 직교한다고 부른다. 이 말이 이 장의 주인공이다.

내적은 하나가 아니다

같은 벡터공간에 서로 다른 내적을 얹을 수 있다. 대표적인 것 넷을 적어 둔다.

공간내적한마디
Rnu,v=uv=uTv유클리드 내적. 기본값이다
Rnu,v=w1u1v1++wnunvn가중 내적. 모든 wi>0 이어야 한다
Rnu,v=(Au)(Av)A 가 가역이면 내적이 된다. 위 둘을 모두 포함한다
구간에서 연속인 함수들f,g=abf(x)g(x)dx함수 공간의 내적. 이 장에서 계속 쓴다

셋째 줄은 확인해 둘 만하다. (Au)(Av)=uTATAv 인데, A 가 가역이면 v0 일 때 Av0 이므로 v,v=Av2>0 이다. 가역성이 넷째 공리를 보증한다. 넷째 줄이 이 절에서 가장 중요하다. 함수도 벡터이고, 두 함수의 곱을 적분한 값이 내적이 된다. 왜 이것이 내적인지는 공리를 하나씩 확인하면 된다. 대칭성은 fg=gf 이라 자명하고, 가법성과 동차성은 적분의 선형성이며, f,f=f20 이고 연속함수의 제곱을 적분해서 0이 되려면 f 가 항등적으로 0이어야 한다.

왼쪽 칸에서 두 함수를 곱해 만든 넓이가 내적이다. 가운데 칸처럼 위쪽 넓이와 아래쪽 넓이가 정확히 지워지면 두 함수는 직교한다. 오른쪽 칸이 말하듯 유클리드 내적의 시그마 자리에 적분이 들어앉은 것뿐이다
<왼쪽 칸에서 두 함수를 곱해 만든 넓이가 내적이다. 가운데 칸처럼 위쪽 넓이와 아래쪽 넓이가 정확히 지워지면 두 함수는 직교한다. 오른쪽 칸이 말하듯 유클리드 내적의 시그마 자리에 적분이 들어앉은 것뿐이다>[원본 보기]

그림의 오른쪽 칸을 한 번 더 읽어 두자. 유클리드 내적은 자리마다 곱해서 더한다. 함수의 내적은 모든 x 자리마다 곱해서 더한다. 자리가 유한개에서 연속으로 늘어나면 합이 적분이 되고, 그것이 전부다.

예제 89

R2 에 가중 내적 u,v=2u1v1+3u2v2 를 얹는다. u=(1,1), v=(3,2) 에 대해 내적과 두 노름을 구하고, 두 벡터가 직교하는지 판정하라. 유클리드 내적으로는 어떠한가?

풀이 보기

정의대로 넣는다. 가중치가 붙는 자리를 헷갈리지 않는 것이 전부다.

u,v=2(1)(3)+3(1)(2)=66=0

0이므로 이 내적에서는 직교한다. 노름은 자기 자신과의 내적의 제곱근이다.

u=2(1)2+3(1)2=5,v=2(9)+3(4)=30

유클리드 내적으로는 uv=32=10 이라 직교하지 않는다. 여기서 배울 것은 이것이다. 직교는 두 벡터만의 성질이 아니라 내적까지 포함한 성질이다. 어떤 자를 들고 재느냐에 따라 수직인지 아닌지가 달라진다. 그래서 앞으로 '직교'라고 할 때는 어떤 내적인지가 정해져 있어야 하고, 특별한 말이 없으면 유클리드 내적을 뜻한다.

가중 내적이 쓸모 있는 자리는 축마다 중요도가 다를 때다. 23 은 첫째 성분보다 둘째 성분을 더 무겁게 세겠다는 뜻이다. 이 내적은 위 표의 셋째 형태로도 적힌다. A=diag(2,3) 로 두면 (Au)(Av) 가 정확히 이 값이다.

예제 90

구간 [0,1] 에서 연속인 함수들의 공간에 f,g=01f(x)g(x)dx 를 얹는다. f(x)=1g(x)=x 에 대해 내적·노름·사이각을 구하고, h(x)=x12f 와 직교함을 보여라.

풀이 보기

구하려는 것은 모두 적분 하나씩이다. 차례로 계산한다.

f,g=011xdx=[x22]01=12

f2=011dx=1,g2=01x2dx=13

이므로 f=1, g=1/3 이다. 각은 정의를 그대로 쓴다.

cosθ=1/21×1/3=32θ=30°=π6

상수함수와 일차함수가 30도를 이룬다는 말이 처음에는 이상하게 들린다. 그러나 이 '각'은 그림 속의 각이 아니라 두 함수가 얼마나 같은 방향을 향하는가를 재는 수다. 둘 다 구간에서 양수라 예각이 나온 것이다. 남은 직교 확인은 적분 한 번이다.

f,h=01(x12)dx=[x22x2]01=1212=0

직교한다 ✓. 뜻을 읽어 두면 좋다. 상수함수 1 과 직교한다는 것은 그 함수의 평균이 0이라는 뜻이다. h 는 앞 절반에서 음수, 뒷 절반에서 양수라 넓이가 정확히 지워진다. 통계에서 '평균을 빼는 것'이 곧 상수 방향 성분을 없애는 정사영이라는 사실이 여기서 시작된다.

직교집합과 정규직교기저

영벡터가 아닌 벡터들이 서로 짝마다 직교하면 그 모임을 직교집합(orthogonal set)이라 하고, 거기에 더해 모두 길이가 1이면 정규직교집합(orthonormal set)이라 한다. 기호로 적으면 정규직교집합 {q1,,qk}

qi,qj={1i=j0ij

를 만족한다. 직교집합에는 공짜로 따라오는 성질이 하나 있다. 직교집합은 언제나 일차독립이다. 증명은 세 줄이다. c1v1++ckvk=0 이라 하고 양변에 vi 를 내적하면, ji 인 항은 전부 0이 되어 사라지고 civi,vi=0 만 남는다. vi0 이므로 vi,vi0 이고, 따라서 ci=0 이다. 모든 i 에 대해 그렇다. ■

6장에서 일차독립을 판정하려면 연립방정식을 풀어야 했다. 직교이기만 하면 그 수고가 없어진다. 그리고 진짜 이득은 그다음이다.

좌표가 내적 하나로 나온다

{q1,,qn} 이 정규직교기저라고 하자. 임의의 uu=c1q1++cnqn 으로 적을 수 있는데, 양변에 qi 를 내적하면 위와 같은 이유로 한 항만 살아남아 u,qi=ci 가 된다. 곧

u=u,q1q1+u,q2q2++u,qnqn

이다. 길이가 1이 아닌 직교기저 {vi} 라면 나누어 주면 된다.

u=u,v1v12v1++u,vnvn2vn

각 항이 5장의 정사영 projvu 와 똑같이 생겼다는 것을 눈여겨보자. 직교기저에서 좌표를 구하는 일은 각 축으로 그림자를 내리는 일이다.

왼쪽처럼 축이 직교하면 각 축에 수선을 내린 길이가 그대로 좌표다. 오른쪽처럼 축이 기울어져 있으면 수선의 발과 좌표가 어긋나서 연립방정식을 풀어야 한다
<왼쪽처럼 축이 직교하면 각 축에 수선을 내린 길이가 그대로 좌표다. 오른쪽처럼 축이 기울어져 있으면 수선의 발과 좌표가 어긋나서 연립방정식을 풀어야 한다>[원본 보기]

6장에서 좌표벡터를 구하려면 [v1vnu] 를 소거해야 했다. 기저가 정규직교면 그 일이 내적 n으로 줄어들고, 축이 서로 간섭하지 않으므로 한 축의 좌표를 구할 때 다른 축을 볼 필요도 없다. 덤으로 노름도 쉬워진다. u=ciqi 를 자기 자신과 내적하면 교차항이 전부 0이라

u2=c12+c22++cn2=iu,qi2

가 된다. 임의 차원의 피타고라스 정리이고, 이름은 파세발 항등식이다. 8장의 직교행렬도 여기서 다시 읽힌다. QTQ=I 라는 조건은 Q 의 열들이 정규직교집합이라는 말을 행렬로 적은 것이다. (QTQ)iji 열과 j 열의 내적이기 때문이다.

예제 91

q1=(35,45), q2=(45,35)R2 의 정규직교기저임을 확인하고, u=(5,10) 의 좌표를 구하라. 파세발 항등식도 확인하라.

풀이 보기

먼저 정규직교인지 본다. 확인할 것은 셋이다.

q12=925+1625=1,q22=1625+925=1,q1q2=1225+1225=0

모두 통과했다 ✓. 좌표는 내적이다.

c1=uq1=3+8=11,c2=uq2=4+6=2

검산은 되돌려 보는 것이다.

11q1+2q2=(33585, 445+65)=(5,10)

파세발도 맞는다. u2=125 이고 112+22=125 ✓. 만약 기저가 직교하지 않았다면 c1,c2 를 구하려고 이원일차연립방정식을 풀어야 했다. 지금은 곱셈 네 번으로 끝났고, 차원이 커질수록 이 차이가 커진다.

예제 92

v1=(1,1,1), v2=(1,1,0), v3=(1,1,2)R3 의 직교기저임을 확인하고, u=(3,0,3) 을 이 기저로 나타내라.

풀이 보기

직교인지 먼저 본다. 세 쌍을 모두 확인해야 한다.

v1v2=11+0=0,v1v3=1+12=0,v2v3=11+0=0

셋 다 0이므로 직교집합이고, 앞에서 본 정리에 따라 일차독립이다. R3 안의 일차독립인 벡터 세 개이니 기저다.

길이가 1이 아니므로 분모에 노름의 제곱을 놓는 쪽 공식을 쓴다.

v12=3,v22=2,v32=6

uv1=3+0+3=6,uv2=30+0=3,uv3=3+06=3

따라서 계수는 6/3=2, 3/2, 3/6=12 이고 u=2v1+32v212v3 이다.

검산. 2(1,1,1)+32(1,1,0)12(1,1,2)=(3,0,3) ✓ 정규직교로 만들고 싶으면 각각을 길이로 나누면 된다. v1/3, v2/2, v3/6 이 정규직교기저다. 직교성은 스칼라배에 영향을 받지 않는다는 점을 기억해 두면 계산이 편해진다. 분수를 끝까지 미루고 마지막에 정규화하면 된다.

직교여공간과 정사영

부분공간 W 에 대해, W모든 벡터와 직교하는 벡터들을 모은 것을 직교여공간(orthogonal complement)이라 하고 W 로 적는다.

W={vV:v,w=0 for all wW}

그리고 여기서 6장의 네 부분공간이 짝을 이룬다. Ax=0 이라는 식을 소리 내어 읽어 보자. A 의 각 행과 x 의 내적이 모두 0이라는 뜻이다. 그러니 영공간은 행공간과 직교한다.

Row(A)=N(A),Col(A)=N(AT)

두 번째 줄은 첫 줄을 AT 에 적용한 것이다(AT 의 행공간이 곧 A 의 열공간이다). N(AT)왼쪽 영공간이라 부른다.

정의역 쪽에서 행공간과 영공간이 직각으로 갈리고, 공역 쪽에서 열공간과 왼쪽 영공간이 직각으로 갈린다. A 는 행공간을 열공간으로 일대일로 옮기고 영공간은 통째로 0 으로 보낸다. 최소제곱에서 쓸 것은 오른쪽 그림이다
<정의역 쪽에서 행공간과 영공간이 직각으로 갈리고, 공역 쪽에서 열공간과 왼쪽 영공간이 직각으로 갈린다. A 는 행공간을 열공간으로 일대일로 옮기고 영공간은 통째로 0 으로 보낸다. 최소제곱에서 쓸 것은 오른쪽 그림이다>[원본 보기]

그림의 왼쪽에서 두 차원을 더하면 r+(nr)=n 이다. 6장의 계수-퇴화차수 정리가 '정의역이 직교하는 두 조각으로 갈린다'는 그림으로 다시 읽힌 것이다. 그리고 오른쪽 그림이 이 장 끝의 최소제곱에서 그대로 쓰인다. 잔차가 열공간과 직교한다는 말은 잔차가 왼쪽 영공간에 들어 있다는 말과 같다.

예제 93

A=[111123] 의 영공간을 구하고, 그것이 행공간과 직교함을 확인하라. 차원도 세어 보라.

풀이 보기

영공간은 Ax=0 의 해집합이다. 소거한다. 둘째 행에서 첫째 행을 빼면

[111012]

이고, 첫째 행에서 둘째 행을 빼면 기약 행사다리꼴 [101012] 이 된다. 셋째 열에 축이 없으니 x3 이 자유변수이고, x3=t 로 두면 x1=t, x2=2t 이라 N(A)=span{(1,2,1)} 이다.

직교 확인은 행마다 하면 된다. 행공간의 모든 벡터는 행들의 일차결합이므로, 행 둘과 직교하면 행공간 전체와 직교한다.

(1,1,1)(1,2,1)=12+1=0 ✓, (1,2,3)(1,2,1)=14+3=0

차원을 센다. 축이 둘이므로 계수는 2이고 행공간의 차원도 2다. 영공간의 차원은 1이다. 2+1=3=n ✓ 성질 셋째가 맞는다.

공역 쪽도 보자. 계수가 2이므로 열공간이 R2 전체이고 왼쪽 영공간은 {0} 이다. 열공간이 공역 전체라는 것은 Ax=b 가 어떤 b 에도 해를 갖는다는 뜻이라 이 행렬에는 최소제곱이 필요 없다.

부분공간으로 내리는 정사영

5장에서는 벡터 하나 방향으로 그림자를 내렸다. 이제 부분공간 전체로 내린다. W 의 직교기저 {w1,,wr} 를 알고 있다면 답은 각 축으로 내린 그림자를 모두 더한 것이다.

projWu=u,w1w12w1++u,wrwr2wr

정규직교기저라면 분모가 모두 1이라 u,qiqi 로 더 간단해진다. 기저가 직교해야 한다는 조건을 잊으면 안 된다. 기울어진 기저에 이 공식을 쓰면 틀린 값이 나온다. 왜 이것이 그림자인지는 확인할 수 있다. uprojWuwi 와 내적하면 u,wiu,wi=0 이다. 곧 남는 조각이 W 의 모든 기저와 직교하므로 W 에 들어 있다. 따라서 어떤 벡터든 두 조각으로 딱 한 가지 방법으로 갈린다.

u=projWuW+(uprojWu)W

왼쪽에서 u 가 평면 안의 조각과 평면에 수직인 조각으로 갈린다. 오른쪽은 그 수선의 발이 평면 안의 어느 점보다 u 에 가깝다는 것을 피타고라스 정리로 보인다. 이 그림이 이 장의 나머지 전부를 떠받친다
<왼쪽에서 u 가 평면 안의 조각과 평면에 수직인 조각으로 갈린다. 오른쪽은 그 수선의 발이 평면 안의 어느 점보다 u 에 가깝다는 것을 피타고라스 정리로 보인다. 이 그림이 이 장의 나머지 전부를 떠받친다>[원본 보기]

오른쪽 그림의 주장을 정리로 적어 둔다. 최선 근사 정리. p=projWu 라 하면 W 의 임의의 벡터 q 에 대해 upuq 이고, 등호는 q=p 일 때뿐이다. 증명은 한 줄이다. uq=(up)+(pq) 로 쪼개면 앞 조각은 W 에, 뒤 조각은 W 에 있어 서로 직교한다. 피타고라스 정리에 의해

uq2=up2+pq2up2

이고 등호는 p=q 일 때뿐이다. ■ 가장 가까운 점을 찾는 문제가 수직으로 내리는 문제와 같다는 이 사실이 최소제곱의 전부다.

사영을 행렬로 적는다

사영도 선형변환이므로 행렬로 적을 수 있다. W=Col(A) 이고 A 의 열이 일차독립이라 하자. 사영 p 는 열공간 안에 있으니 p=Ax 꼴이고, 남는 조각이 모든 열과 직교해야 하므로 AT(uAx)=0 이다. 정리하면 ATAx=ATu 이고, ATA 가 가역이면

p=A(ATA)1ATuP=A(ATA)1AT

사영행렬이다. A 의 열이 이미 정규직교라면 ATA=I 라서 P=QQT 로 줄어든다. 성질 넷을 적어 둔다.

성질
PT=P대칭이다. 정사영행렬의 표시다
P2=P한 번 내린 것을 또 내려도 그대로다
IPW 로의 사영행렬
trP=dimW대각합이 사영하는 공간의 차원이다

둘째 줄은 대수로도 보인다. P2=A(ATA)1(ATA)(ATA)1AT=A(ATA)1AT=P 다. 가운데 괄호와 그 오른쪽 역행렬이 서로 지워진다.

예제 94

W=span{(1,1,0), (1,1,1)} 로의 사영을 구하려 한다. u=(2,0,4) 의 사영과 남는 조각을 구하고, 피타고라스가 맞는지 확인하라.

풀이 보기

공식을 쓰기 전에 기저가 직교하는지부터 본다. 이것을 건너뛰면 답이 틀린다.

(1,1,0)(1,1,1)=11+0=0 ✓ 직교한다.

이제 각 축으로 내린다. 분모와 분자를 먼저 구한다.

w12=2,w22=3,uw1=2,uw2=20+4=6

projWu=22(1,1,0)+63(1,1,1)=(1,1,0)+(2,2,2)=(3,1,2)

남는 조각은 up=(2,0,4)(3,1,2)=(1,1,2) 다.

검산 두 가지. 직교는 (1,1,2)(1,1,0)=0 ✓, (1,1,2)(1,1,1)=0 ✓. 피타고라스는 u2=20 이고 p2+up2=14+6=20 ✓.

기하로 읽어 두자. W 는 원점을 지나는 평면이고, 그 법선은 5장의 외적으로 구할 수 있다. (1,1,0)×(1,1,1)=(1,1,2) 인데, 남는 조각 (1,1,2) 가 정확히 그 반대 방향이다. 남는 조각은 언제나 법선 방향이고, 그것이 W 가 직선 하나인 이유다(2+1=3).

예제 95

앞 예제의 W 에 대한 사영행렬 P 를 구하고, Pu 가 같은 답을 주는지 확인하라. trP 도 구하라.

풀이 보기

두 기저벡터를 열로 세운다.

A=[111101]ATA=[2003]

열이 직교하기 때문에 ATA 가 대각행렬로 나왔다. 이것이 직교기저를 쓰는 또 하나의 이득이고, 역행렬이 그냥 대각성분의 역수 diag(1/2,1/3) 이다. A(ATA)1A 의 첫 열을 2로, 둘째 열을 3으로 나눈 것이므로 여기에 AT 를 곱하면 된다.

P=[1/21/31/21/301/3][110111]=16[512152222]

확인한다. Pu=16(10+0+8, 2+08, 40+8)=16(18,6,12)=(3,1,2) ✓ 앞 예제와 같다.

P 가 대칭이라는 것도 눈으로 보인다 ✓. 대각합은 16(5+5+2)=2 인데, dimW=2 와 같다 ✓.

IP=16[112112224] 도 계산해 보면, 이것은 법선 n=(1,1,2) 에 대해 nnT/n2 와 정확히 같다. 직선으로의 사영행렬이다.

여기서 한 가지만 짚어 두자. P 는 계수가 2인 3×3 행렬이라 가역이 아니다. 당연하다. 사영은 정보를 버리는 변환이고, 버린 것은 되돌릴 수 없다.

그람-슈미트 과정과 QR 분해

지금까지 얻은 것은 모두 '직교기저가 있다면'으로 시작했다. 없으면 만들면 된다. 그 절차가 그람-슈미트 과정(Gram-Schmidt process)이고, 아이디어는 5장의 직교분해 한 줄을 되풀이하는 것뿐이다. 새 벡터를 가져올 때마다 지금까지 만든 것들과 겹치는 성분을 빼 버린다.

v1=u1

v2=u2u2,v1v12v1

v3=u3u3,v1v12v1u3,v2v22v2

k 번째 줄은 vk=ukprojWk1uk 이고 Wk1 은 앞에서 만든 k1 개가 생성하는 공간이다. 마지막에 각각을 길이로 나누면 정규직교기저다.

두 번째 칸이 이 절차의 전부다. u2 에서 v1 방향 성분을 빼면 남는 것이 v1 과 직교한다. 세 걸음을 지나는 동안 두 벡터가 생성하는 공간은 한 번도 바뀌지 않는다
<두 번째 칸이 이 절차의 전부다. u2 에서 v1 방향 성분을 빼면 남는 것이 v1 과 직교한다. 세 걸음을 지나는 동안 두 벡터가 생성하는 공간은 한 번도 바뀌지 않는다>[원본 보기]

두 가지를 기억해 두면 실수를 줄일 수 있다.

그리고 이 절차가 보증하는 것을 정확히 적어 두자. 모든 k 에 대해

span{v1,,vk}=span{u1,,uk}

이다. vkuk 에 앞선 것들의 일차결합을 더한 것이라 서로 오갈 수 있기 때문이다. 앞에서부터 잘라도 같은 공간이라는 이 성질이 다음 절의 QR 분해를 상삼각으로 만든다.

예제 96

u1=(1,1,1), u2=(0,1,1), u3=(0,0,1) 에 그람-슈미트를 적용해 R3 의 정규직교기저를 구하라.

풀이 보기

첫째는 그대로 둔다. v1=(1,1,1) 이고 v12=3 이다.

둘째. u2v1=0+1+1=2 이므로

v2=(0,1,1)23(1,1,1)=(23,13,13)

분수가 거슬리니 3을 곱해 v2=(2,1,1) 로 바꾼다. 방향이 같으므로 지장이 없다. (2,1,1)(1,1,1)=0 ✓ 이고 v22=6 이다.

셋째. 두 방향 모두 빼야 한다. u3v1=1 이고 u3v2=1 이므로

v3=(0,0,1)13(1,1,1)16(2,1,1)=(013+13, 01316, 11316)=(0,12,12)

2를 곱해 v3=(0,1,1) 로 둔다. 확인. (0,1,1)(1,1,1)=0 ✓, (0,1,1)(2,1,1)=0 ✓. 마지막으로 정규화한다.

q1=13(1,1,1),q2=16(2,1,1),q3=12(0,1,1)

span 이 유지되는지도 눈으로 보이면 좋다. v1u1 그 자체이고, v1,v2u2=v2+23v1 을 만들 수 있다. 순서를 바꾸면 다른 직교기저가 나온다는 점도 알아 두자. 그람-슈미트의 답은 하나가 아니라 입력 순서에 딸려 있다.

보충

구간 [1,1] 에서 f,g=11fgdx 를 쓸 때, {1,x,x2} 에 그람-슈미트를 적용하라. (적분이 필요한 예제다. 건너뛰어도 뒤를 읽는 데 지장이 없다.)

풀이 보기

절차는 똑같다. 내적이 적분으로 바뀌었을 뿐이다.

첫째. v1=1 이고 v12=111dx=2 다.

둘째. x,1=11xdx=0 이다. 홀함수를 대칭 구간에서 적분하면 0이기 때문이다. 뺄 것이 없으므로

v2=x,v22=11x2dx=23

셋째. 두 내적을 구한다.

x2,1=11x2dx=23,x2,x=11x3dx=0

따라서 v3=x22/3210=x213 이다.

확인해 두자. 11(x213)dx=2323=0 ✓ 이고 x 와도 홀함수라 0이다 ✓.

이렇게 얻은 1, x, x213, 르장드르 다항식이라 부른다(상수배 약속에 따라 계수가 조금 달라진다). 다항식을 직교기저로 바꿔 놓으면 '주어진 함수에 가장 가까운 2차 다항식'을 앞 절의 정사영 공식 한 번으로 구할 수 있다. 최소제곱의 함수판이 이것이다.

QR 분해

그람-슈미트를 행렬로 적으면 분해가 하나 떨어진다. 열이 일차독립인 m×n 행렬 A=[a1an] 에 그람-슈미트를 돌려 정규직교 열 q1,,qn 을 얻었다고 하자. 그러면 각 ajq1,,qj 만으로 만들어지고, 정규직교기저에서 좌표는 내적이므로

aj=aj,q1q1++aj,qjqj

다. 이 계수들을 열로 세워 쌓으면 A=QR 이고, R(i,j) 성분이 aj,qi 다. i>j 이면 이 값이 0이므로 R 은 상삼각행렬이다.

Q 의 열은 정규직교라서 Q 의 전치와 곱하면 단위행렬이 되고, R 은 상삼각이며 그 성분은 원래 열과 정규직교 벡터의 내적일 뿐이다. R 이 상삼각인 이유가 오른쪽에 적혀 있다
<Q 의 열은 정규직교라서 Q 의 전치와 곱하면 단위행렬이 되고, R 은 상삼각이며 그 성분은 원래 열과 정규직교 벡터의 내적일 뿐이다. R 이 상삼각인 이유가 오른쪽에 적혀 있다>[원본 보기]

계산 절차로 정리하면 이렇다. Q 를 먼저 만들고 R=QTA 로 한꺼번에 얻는 것이 실수가 적다. QTQ=In 이므로 QTA=QTQR=R 이기 때문이다.

3장의 LU 분해와 견주면 성격이 분명해진다. LU 는 소거 과정을 저장하고, QR 은 직교화 과정을 저장한다. R 의 대각성분 rii=vi 는 그람-슈미트가 만든 벡터의 길이라 모두 양수다. 덧붙여, A 가 정사각이면 QTQ=I 에서 detQ=±1 이므로 |detA|=r11r22rnn 이다. 4장에서 '행렬식은 부피'라고 한 것과 이어 읽으면, 회전만 하는 Q 는 부피를 바꾸지 못하고 부피를 만드는 것은 R 의 대각성분뿐이라는 뜻이다.

예제 98

A=[111012] 를 QR 분해하라.

풀이 보기

열을 벡터로 본다. a1=(1,1,1), a2=(1,0,2) 다.

첫 열. a1=3 이므로 q1=13(1,1,1) 이고 r11=3 이다.

둘째 열. 먼저 q1 방향 성분을 재면 r12=a2q1=(1+0+2)/3=3 이므로

v2=a2r12q1=(1,0,2)313(1,1,1)=(1,0,2)(1,1,1)=(0,1,1)

r22=v2=2 이고 q2=12(0,1,1) 이다. 정리하면

Q=[1/301/31/21/31/2],R=[3302]

검산. QR 의 열을 하나씩 만들어 본다. 첫 열은 3q1=(1,1,1) ✓. 둘째 열은

3q1+2q2=(1,1,1)+(0,1,1)=(1,0,2)

여기서 QQTI3아니다. Q 가 정사각행렬이 아니기 때문이다. 실제로 QQT 는 앞 절에서 본 열공간으로의 사영행렬이다. 이 구분을 놓치면 뒤에서 틀린다.

최소제곱 — 해가 없는 방정식을 푸는 법

이제 이 장의 목적지다. 현실에서 만나는 Ax=b대개 해가 없다. 측정을 20번 했는데 미지수는 셋이라면 방정식이 20개, 미지수가 3개다. 측정에 오차가 조금이라도 있으면 20개를 동시에 만족하는 x 는 존재하지 않는다.

그렇다고 손을 놓을 수는 없다. 물어야 할 것을 바꾼다. 정확히 맞힐 수 없다면, 가장 덜 틀리는 x 는 무엇인가. '덜 틀린다'를 잔차 벡터 r=bAx 의 길이로 재기로 하면, 문제는 이렇게 적힌다.

bAx^=minx bAx

x^최소제곱해(least squares solution)라 한다. 길이의 제곱을 최소로 한다는 뜻에서 붙은 이름이다. 답은 이미 나와 있다. Ax 가 갈 수 있는 곳은 A 의 열공간뿐이다. 그러니 이 문제는 '열공간 안에서 b 에 가장 가까운 점을 찾아라'와 똑같고, 앞 절의 최선 근사 정리에 의해 그 점은 수선의 발이다.

왼쪽 그림 하나가 최소제곱의 전부다. Ax 는 색칠한 평면 위만 돌아다니므로 그 위에 없는 b 에는 닿지 못하고, 할 수 있는 최선은 수직으로 내리는 것이다. 오른쪽은 그 조건을 식으로 옮기면 정규방정식이 나온다는 것을 보인다
<왼쪽 그림 하나가 최소제곱의 전부다. Ax 는 색칠한 평면 위만 돌아다니므로 그 위에 없는 b 에는 닿지 못하고, 할 수 있는 최선은 수직으로 내리는 것이다. 오른쪽은 그 조건을 식으로 옮기면 정규방정식이 나온다는 것을 보인다>[원본 보기]

유도를 다시 한번 천천히 따라가자. 최적의 x^ 에서 잔차 r=bAx^ 는 열공간과 직교해야 한다. 열공간은 A 의 열들이 생성하므로, 직교한다는 말은 A 의 모든 열과 내적이 0이라는 말이다. 열들과의 내적을 한꺼번에 적는 방법이 ATr 이다. 곧

AT(bAx^)=0 ATAx^=ATb 

이것을 정규방정식(normal equation)이라 한다. 원래의 m 개짜리 방정식이 n 개짜리로 줄었고, 무엇보다 반드시 해를 갖는다. 5장에서 증명한 (Au)v=u(ATv) 로 같은 결론을 얻을 수도 있다. 잔차가 열공간의 모든 벡터와 직교한다는 것은 모든 x 에 대해 (Ax)r=0 이라는 뜻인데, 이것은 x(ATr)=0 과 같고, 모든 x 에 대해 성립하려면 ATr=0 이어야 한다. 행렬을 내적의 반대편으로 넘기면 전치가 붙는다는 규칙이 정확히 여기서 값을 한다.

언제 하나로 정해지는가

정규방정식의 해가 하나이려면 ATA 가 가역이어야 한다. 그 조건은 놀랍도록 간단하다. ATA 가 가역 ⟺ A 의 열이 일차독립. 증명은 영공간을 견주면 된다. ATAx=0 이면 양변에 xT 를 곱해 xTATAx=Ax2=0 이므로 Ax=0 이다. 거꾸로도 자명하다. 곧 N(ATA)=N(A) 이고, 열이 일차독립이면 두 영공간이 모두 자명하다. ■ 그때 답은 이렇게 적힌다.

x^=(ATA)1ATb,Ax^=A(ATA)1ATb=Pb

다. 오른쪽이 앞 절의 사영행렬과 글자 하나 다르지 않다. 최소제곱해를 대입한 결과가 곧 b 의 사영이라는 사실이 식으로 확인된 셈이다.

실제 계산에서는 ATA 를 직접 만들지 않는다. 조건수가 제곱되어 오차에 약해지기 때문이다(10장에서 다시 이야기한다). 대신 QR 분해를 쓴다. A=QR 를 정규방정식에 넣으면

RTQTQRx^=RTQTbRTRx^=RTQTbRx^=QTb

가 된다(R 이 가역이라 RT 를 지울 수 있다). 상삼각행렬 하나만 뒤에서 앞으로 대입해 풀면 끝난다.

갈림길은 하나뿐이다. b 가 열공간 안에 있으면 3장의 소거법으로 끝이고, 없으면 수직으로 내려 정규방정식을 얻는다. 그다음은 열이 독립인지에 따라 답이 하나인지 여럿인지가 갈린다
<갈림길은 하나뿐이다. b 가 열공간 안에 있으면 3장의 소거법으로 끝이고, 없으면 수직으로 내려 정규방정식을 얻는다. 그다음은 열이 독립인지에 따라 답이 하나인지 여럿인지가 갈린다>[원본 보기]

예제 99

A=[100111], b=(1,1,0) 에 대해 Ax=b 에 해가 없음을 보이고, 최소제곱해와 잔차를 구하라.

풀이 보기

해가 없음을 먼저 확인한다. 세 줄을 그대로 읽으면 x1=1, x2=1, x1+x2=0 이다. 앞의 둘을 셋째에 넣으면 2=0 이라 모순이다. 해가 없다 ✓.

정규방정식을 세운다. ATA 의 성분 하나하나가 열끼리의 내적이라는 것을 기억하면 빠르다.

ATA=[a1a1a1a2a2a1a2a2]=[2112],ATb=(a1b, a2b)=(1,1)

2x1+x2=1x1+2x2=1 을 더하면 3(x1+x2)=2, 빼면 x1=x2 이므로 x^=(13,13) 이다. 잔차를 구한다. Ax^=(13,13,23) 이므로

r=bAx^=(113, 113, 023)=(23,23,23)

검산은 직교로 한다. a1r=23+023=0 ✓, a2r=0+2323=0

오차의 크기는 r=3×49=231.155 다. 이보다 작게 만드는 x 는 없다. 다른 값을 넣어 보면 확인된다. x=(1,1) 을 넣으면 Ax=(1,1,2) 이고 r=(0,0,2)=2 로 더 크다.

예제 100

앞의 QR 예제에 나온 A=[111012]b=(1,2,2) 에 대해, QR 분해로 최소제곱해를 구하고 정규방정식으로 검산하라.

풀이 보기

앞에서 구한 것을 그대로 쓴다. q1=13(1,1,1), q2=12(0,1,1), R=[3302].

오른쪽 변부터 만든다. Q 의 열과 b 의 내적 둘이다.

QTb=(q1b, q2b)=(1+2+23, 02+22)=(53, 0)

이제 Rx^=QTb아래에서 위로 푼다. 상삼각행렬이라 마지막 줄에 미지수가 하나뿐이다.

2x^2=0  x^2=0,3x^1+3(0)=53  x^1=53

정규방정식으로 검산. ATA=[3335] 이고 ATb=(1+2+2, 1+0+4)=(5,5) 다. 두 식을 빼면 2x^2=0 이므로 x^2=0, 그러면 3x^1=5 에서 x^1=5/3 ✓ 같다.

잔차는 r=(1,2,2)53(1,1,1)=(23,13,13) 이고 두 열과의 내적이 각각 0이다 ✓. x^2=0 이 나온 것은 둘째 열 방향으로 b 가 조금도 기울어 있지 않았다는 뜻이고, 실제로 q2b=0 이었다.

직선 맞추기 — 회귀

최소제곱이 가장 자주 쓰이는 자리는 점들에 직선을 맞추는 일이다. 자료 (x1,y1),,(xm,ym) 이 있고 y=a+bx 로 설명하고 싶다고 하자. 모든 점을 정확히 지나려면

a+bxi=yi(i=1,,m)

이어야 하는데, 점이 셋 이상이고 일직선 위에 있지 않으면 해가 없다. 이것을 행렬로 적으면 정확히 우리가 다뤄 온 꼴이다.

[1x11x21xm]A[ab]=[y1y2ym]y

A 의 첫 열은 1로만 이루어져 있고 둘째 열은 x 값들이다. 정규방정식 ATAx^=ATy 를 성분으로 풀어 쓰면

[mxixixi2][ab]=[yixiyi]

이다. 풀면 익숙한 공식이 나온다.

b=mxiyi(xi)(yi)mxi2(xi)2,a=y¯bx¯

왼쪽에서 굵은 세로선이 잔차이고 그 제곱 합이 최소가 된 상태다. 잔차의 합이 0이고 x 와의 내적도 0인데, 그 두 줄이 정규방정식 두 줄 그 자체다. 오른쪽은 최소제곱이 세로 거리를 재지 수직 거리를 재지 않는다는 것을 보인다
<왼쪽에서 굵은 세로선이 잔차이고 그 제곱 합이 최소가 된 상태다. 잔차의 합이 0이고 x 와의 내적도 0인데, 그 두 줄이 정규방정식 두 줄 그 자체다. 오른쪽은 최소제곱이 세로 거리를 재지 수직 거리를 재지 않는다는 것을 보인다>[원본 보기]

그림의 왼쪽 아래 두 줄을 다시 보자. 정규방정식의 두 줄은 각각 이런 뜻이다.

상수항 a 를 둔 회귀에서 잔차의 합이 언제나 0인 이유가 이것이다. 통계 교과서가 '잔차의 평균은 0'이라고 적는 사실은 별도의 성질이 아니라 정규방정식의 첫 줄이다. 한 가지 오해도 미리 걷어 둔다. 최소제곱이 줄이는 것은 세로 거리이지 점에서 직선까지의 수직 거리가 아니다. y 를 예측하는 것이 목적이므로 y 방향 오차만 세는 것이다. 수직 거리를 줄이는 방법은 따로 있고, 그것이 10장의 주성분분석이다.

확장도 쉽다. y=a+bx+cx2 으로 맞추고 싶으면 Axi2 열을 하나 더 붙이면 그만이다. 미지수에 대해 일차이기만 하면 곡선을 맞추는 문제도 최소제곱이다.

예제 101

네 점 (1,2),(2,3),(3,5),(4,6) 에 직선 y=a+bx 를 최소제곱으로 맞추고, 잔차와 그 성질을 확인하라.

풀이 보기

구하려는 것은 ab 다. 필요한 합을 먼저 표로 정리한다.

ixiyixi2xiyi
11212
22346
335915
4461624
10163047

m=4 이므로 정규방정식은

[4101030][ab]=[1647]

이다. 공식에 넣어도 되고 직접 풀어도 된다.

b=4(47)10(16)4(30)102=2820=1.4,a=y¯bx¯=41.4×2.5=0.5

맞춘 직선은 y=0.5+1.4x 다.

잔차를 계산한다. 예측값은 차례로 1.9, 3.3, 4.7, 6.1 이므로

r=(0.1, 0.3, 0.3, 0.1)

검산 두 줄. 정규방정식이 말하는 대로 되었는지 본다.

ri=0.10.3+0.30.1=0

xiri=1(0.1)+2(0.3)+3(0.3)+4(0.1)=0.10.6+0.90.4=0

잔차 제곱 합은 0.01+0.09+0.09+0.01=0.20 이고 어떤 직선을 가져와도 이보다 작아지지 않는다. 눈대중으로 y=0.6+1.3x 를 잡으면 예측값이 1.9, 3.2, 4.5, 5.8 이고 제곱 합이 0.34 로 더 크다. 마지막으로 기하를 붙여 두자. 자료가 네 개이므로 yR4 의 벡터이고, A 의 두 열이 만드는 것은 그 안의 평면이다. 직선 맞추기란 4차원 공간의 점 하나를 평면으로 수직으로 내리는 일이었다. 그림으로 볼 수는 없지만 계산은 앞의 예제들과 한 글자도 다르지 않다.

9장 정리

기호 또는 용어
내적 u,v대칭 · 가법 · 동차 · 양의 정부호를 만족하는 함수. 유클리드 내적은 그중 하나다
노름과 거리v=v,v, d(u,v)=uv
함수 공간의 내적f,g=abf(x)g(x)dx. 직교란 곱의 넓이가 지워진다는 뜻
직교집합짝마다 내적이 0인 영벡터 아닌 벡터들. 언제나 일차독립이다
정규직교기저직교이고 길이가 1. 좌표가 ci=u,qi 로 나오고 u2=ci2 (파세발)
직교여공간 WW 의 모든 벡터와 직교하는 것들. dimW+dimW=n
네 부분공간Row(A)=N(A), Col(A)=N(AT)
부분공간으로의 정사영projWu=u,wiwi2wi. 기저가 직교해야 하고, 그 발이 W 안에서 가장 가깝다
사영행렬P=A(ATA)1AT, 정규직교 열이면 P=QQT. P2=P=PT
그람-슈미트 과정앞에서 만든 것들과 겹치는 성분을 빼며 직교기저를 만든다. span 이 보존된다
QR 분해A=QR. Q 는 정규직교 열, R 은 상삼각이고 R=QTA
최소제곱해bAx 를 최소로 하는 x^. Ax^b 의 열공간 사영이다
정규방정식ATAx^=ATb. 잔차가 열공간과 직교한다는 조건 그 자체
최소제곱의 유일성ATA 가 가역 ⟺ A 의 열이 일차독립. 그때 x^=(ATA)1ATb
QR 로 푸는 최소제곱Rx^=QTb. 수치적으로 더 안전하다
직선 맞추기A 의 열이 1 과 x. 잔차의 합과 xiri 가 0인 것이 정규방정식이다

이 장에서 한 일을 한 문장으로 줄이면 '수직으로 내린다'이다. 좌표를 구하는 일도, 기저를 펴는 일도, 해가 없는 방정식에서 최선을 고르는 일도 전부 정사영이었다.

다음 장은 이 도구를 행렬 자체에 겨눈다. 지금까지는 '주어진 부분공간'으로 내렸는데, 10장에서는 행렬이 스스로 가장 좋은 직교기저를 두 벌 내놓게 한다. 정의역 쪽에 한 벌, 공역 쪽에 한 벌이다. 그것이 특이값 분해다.

특이값 분해와 응용

8장에서 대각화를 배웠다. A=PDP1 로 쪼개면 행렬의 정체가 드러났고, 거듭제곱도 점화식도 쉬워졌다. 그런데 그 도구에는 조건이 여럿 붙어 있었다. 정사각행렬이어야 하고, 고유벡터가 충분히 많아야 하고, 실수 범위에서 고유값이 없을 수도 있었다. 현실에서 만나는 행렬 대부분은 이 조건을 하나도 만족하지 않는다. 자료를 담은 행렬은 보통 세로로 길쭉하다.

이 장의 특이값 분해(singular value decomposition, SVD)는 그 조건을 전부 없앤다. 어떤 모양의 어떤 행렬이든 A=UΣVT 로 쪼갤 수 있고, 세 조각이 각각 회전 · 늘이기 · 회전이다. 대각화가 '운이 좋으면 되는' 분해였다면 SVD 는 언제나 되는 분해다.

이 장에서 답할 질문은 셋이다. 행렬이 도형에 하는 일을 어떻게 한 장의 그림으로 보는가, 그 그림에 나오는 수들을 어떻게 계산하는가, 그리고 그것으로 무엇을 하는가.

앞에서 가져오는 것은 8장의 고유값·직교대각화·스펙트럼 정리, 9장의 정규직교기저·정사영·최소제곱, 그리고 4장의 행렬식과 6장의 계수·영공간이다.

단위원이 타원으로 간다

행렬 하나가 하는 일을 한눈에 보려면 단위원에 무슨 짓을 하는지 보면 된다. R2 에서 길이가 1인 벡터를 전부 모으면 원이 되는데, 여기에 행렬을 곱하면 언제나 타원이 나온다.

A=[3045] 로 확인해 보자. 이 행렬이 이 장의 예제 행렬이다.

네 칸을 왼쪽에서 오른쪽으로 읽으면 A 가 세 걸음으로 갈린다. 첫 회전과 마지막 회전은 크기를 바꾸지 않고, 크기를 바꾸는 것은 가운데 늘이기 하나뿐이다. 앞의 두 칸과 뒤의 두 칸은 눈금이 다르니 주의해서 보라
<네 칸을 왼쪽에서 오른쪽으로 읽으면 A 가 세 걸음으로 갈린다. 첫 회전과 마지막 회전은 크기를 바꾸지 않고, 크기를 바꾸는 것은 가운데 늘이기 하나뿐이다. 앞의 두 칸과 뒤의 두 칸은 눈금이 다르니 주의해서 보라>[원본 보기]

그림이 말하는 것을 문장으로 옮기면 이렇다. 단위원 위에 서로 수직인 방향 두 개가 있어서, 그 둘이 상에서도 서로 수직으로 남고, 각각 정해진 배율만큼만 늘어난다. 그 방향이 v1,v2 이고 배율이 σ1,σ2 이며, 늘어난 뒤의 방향이 u1,u2 다. 기호로 적으면

Av1=σ1u1,Av2=σ2u2

이고, 이것을 한 줄로 묶으면 AV=UΣ, 곧 A=UΣVT 이다. V 가 직교행렬이라 V1=VT 이기 때문이다.

고유벡터와 견주어 보면 차이가 분명해진다. 고유벡터는 '들어간 방향과 나온 방향이 같은' 벡터였다. 특이벡터는 그것을 요구하지 않는다. 들어갈 때 직교하던 것이 나올 때도 직교하기만 하면 된다. 조건을 느슨하게 한 대가로, 이런 방향 쌍은 어떤 행렬에서도 반드시 존재한다.

σi특이값(singular value), vi오른쪽 특이벡터, ui왼쪽 특이벡터라 한다. 관례로 σ1σ20 으로 큰 것부터 늘어놓는다.

예제 102

A=[3045] 에 대해 단위벡터 (1,0), (0,1), 12(1,1), 12(1,1) 을 보내 보고 늘어난 정도를 견주어라.

풀이 보기

하나씩 곱하고 길이를 잰다. 들어가는 것이 모두 길이 1이므로 나온 길이가 곧 배율이다.

A(1,0)=(3,4),=5A(0,1)=(0,5),=5

A12(1,1)=12(3,9),=902=456.71

A12(1,1)=12(3,1),=102=52.24

좌표축 방향이 특별하지 않다. 두 축은 모두 5배로 늘어나는데, 대각선 방향 (1,1)/2 은 6.71배, 그와 수직인 방향은 2.24배다. 가장 크게 늘어나는 방향과 가장 적게 늘어나는 방향을 찾아보면 저 둘이고, 그 둘이 마침 서로 수직이다.

나온 결과가 서로 수직인지도 확인하자. (3,9)(3,1)=9+9=0 ✓ 수직이다. 이 네 줄이 다음 절에서 계산으로 확인할 사실을 미리 보여 준다. σ1=45, σ2=5 이고 v1=(1,1)/2, v2=(1,1)/2 다.

예제 103

대각행렬 D=diag(3,1) 과 회전행렬 R=[cosθsinθsinθcosθ] 가 단위원을 각각 어떤 도형으로 보내는지 말하고, 특이값을 구하라.

풀이 보기

대각행렬. (x,y)(3x,y) 로 보내므로 원 x2+y2=1(X3)2+Y2=1 로 간다. 가로 반지름 3, 세로 반지름 1인 타원이다. 늘이기만 있고 회전이 없으니 σ1=3, σ2=1 이고 U=V=I 로 두면 된다.

회전행렬. 회전은 길이를 바꾸지 않으므로 원이 그대로 원으로 간다. 모든 방향의 배율이 1이니 σ1=σ2=1 이다.

일반화하면 이렇다. 직교행렬의 특이값은 전부 1이다. QTQ=I 이므로 Qx=x 이고, 늘어나는 방향이 하나도 없기 때문이다.

그래서 그림의 네 칸 가운데 가운데 칸만 크기를 바꾼다는 말이 정확하다. VTU 는 특이값이 모두 1이라 도형의 크기와 모양을 건드리지 못하고 방향만 돌린다.

특이값은 ATA 의 고유값의 제곱근이다

그림은 그럴듯한데, viσi 를 어떻게 찾는가. 열쇠는 길이의 제곱을 재는 것이다. v 가 단위벡터일 때

Av2=(Av)(Av)=vTATAv

이다. 오른쪽에 ATA 가 나타났다. 3장에서 보았듯 이 행렬은 언제나 대칭이고, 위 식이 언제나 0 이상이므로 고유값도 전부 0 이상이다. 그러면 8장의 스펙트럼 정리가 그대로 쓰인다. ATA 는 정규직교 고유벡터로 직교대각화된다.

그 고유벡터를 v1,,vn, 고유값을 λ1λn0 이라 하면

Avi2=viT(ATAvi)=λiviTvi=λi

이므로 Avi=λi 다. 이것이 특이값이다.

σi=λi,λi=ATA 의 고유값

서로 다른 고유값의 고유벡터는 직교하고(스펙트럼 정리), 그 상들도 직교한다. ij 일 때

(Avi)(Avj)=viTATAvj=λjvivj=0

이기 때문이다. 앞 그림의 '들어갈 때 직교하고 나올 때도 직교한다'가 여기서 증명된 셈이다.

절차는 새로울 것이 없다. A 의 전치와 A 를 곱해 대칭행렬을 만들고 8장의 직교대각화를 한 번 하면 특이값과 V 가 동시에 나온다. U 는 A 를 통과시켜 만든다. 마지막 상자의 검산 세 가지를 늘 함께 하라
<절차는 새로울 것이 없다. A 의 전치와 A 를 곱해 대칭행렬을 만들고 8장의 직교대각화를 한 번 하면 특이값과 V 가 동시에 나온다. U 는 A 를 통과시켜 만든다. 마지막 상자의 검산 세 가지를 늘 함께 하라>[원본 보기]

예제 104

A=[3045] 의 특이값과 오른쪽 특이벡터를 구하라.

풀이 보기

절차대로 ATA 부터 만든다.

ATA=[3405][3045]=[9+16202025]=[25202025]

대칭행렬이 나왔다 ✓. 특성방정식을 푼다. [abba] 꼴은 고유값이 a±b 라는 것을 알아 두면 빠르다.

(25λ)2400=025λ=±20λ=45, 5

따라서 σ1=45=356.71, σ2=52.24 다. 앞 예제에서 손으로 재 본 값과 같다 ✓.

고유벡터를 구한다. λ=45 이면 (2545)x+20y=0 에서 y=x 이고, λ=5 이면 20x+20y=0 에서 y=x 이다. 길이를 1로 맞추면

v1=12(1,1),v2=12(1,1)

부호는 자유롭다. v2(1,1)/2 로 잡아도 되는데, 그러면 u2 의 부호도 함께 뒤집힌다. 여기서는 V 가 회전이 되도록(detV=1) 위와 같이 골랐다.

검산 두 가지. 특이값의 곱이 행렬식의 절댓값이어야 한다. 35×5=15 이고 detA=15 ✓. 특이값의 제곱 합이 성분의 제곱 합이어야 한다. 45+5=50 이고 9+0+16+25=50 ✓.

A=UΣVT 를 완성한다

VΣ 를 얻었으니 U 만 남았다. 그런데 U 는 따로 구할 필요가 없다. Avi=σiui 여야 하므로 그냥 나누면 된다.

ui=1σiAvi(σi0)

이렇게 만든 ui 는 길이가 1이고(Avi=σi 이므로) 서로 직교한다(위에서 확인했다). 곧 공짜로 정규직교집합이 된다.

σi=0 인 자리는 Avi=0 이라 나눌 수 없다. 그 자리는 남겨 두고, U 를 정사각으로 채워야 한다면 N(AT) 에서 정규직교기저를 골라 뒤에 붙인다.

완전형에서는 U 와 V 가 정사각 직교행렬이고 시그마가 A 와 같은 모양이며 대각선 아래위가 0이다. 축소형은 그 0 부분을 잘라낸 것이고 곱하면 같은 A 가 나온다. 오른쪽 아래 문장이 SVD 를 대각화와 갈라놓는 지점이다
<완전형에서는 U 와 V 가 정사각 직교행렬이고 시그마가 A 와 같은 모양이며 대각선 아래위가 0이다. 축소형은 그 0 부분을 잘라낸 것이고 곱하면 같은 A 가 나온다. 오른쪽 아래 문장이 SVD 를 대각화와 갈라놓는 지점이다>[원본 보기]

두 형태를 구분해 두면 헷갈리지 않는다.

형태크기쓰는 자리
완전형Um×m, Σm×n, Vn×n이론. 네 부분공간의 기저가 전부 나온다
축소형Urm×r, Σrr×r, Vrn×r계산과 저장. r 은 계수

8장의 직교대각화 A=QDQT 와 견주면 관계가 보인다. A대칭이고 고유값이 모두 0 이상이면 두 분해가 같아진다. 고유값이 음수인 자리에서는 σ=|λ| 이고 그 방향의 uv 와 반대가 된다. 특이값은 언제나 0 이상이고, 부호는 U 가 떠맡는다.

예제 105

앞에서 구한 A=[3045] 의 왼쪽 특이벡터를 구하고 A=UΣVT 를 완성하라.

풀이 보기

공식대로 나눈다. v1=(1,1)/2 이므로

Av1=12(3,9),u1=13512(3,9)=(1,3)10

Av2=12(3,1),u2=1512(3,1)=(3,1)10

확인. 두 벡터 모두 길이가 1이고((1+9)/10=1 ✓) 서로 직교한다((3+3)/10=0 ✓).

세 조각을 모으면

U=110[1331],Σ=[35005],V=12[1111]

검산. A=UΣVT 를 직접 곱해도 되지만, AV=UΣ 를 열마다 보는 편이 빠르다. Av1=σ1u1 인지 보면 35×(1,3)10=3510(1,3)=32(1,3)=12(3,9) ✓ 맞는다.

두 행렬 모두 행렬식이 1이라 회전이다. detU=110(1+9)=1, detV=12(1+1)=1. 그림의 두 번째와 네 번째 칸이 회전인 이유가 이것이다.

예제 106

9장의 최소제곱 예제에 나온 A=[100111] 의 완전형 특이값 분해를 구하라.

풀이 보기

세로로 긴 행렬이라 고유값 분해는 아예 말이 되지 않는다. 그래도 SVD 는 된다. 작은 쪽인 ATA 부터 만든다.

ATA=[2112]λ=3, 1σ1=3, σ2=1

고유벡터는 v1=12(1,1), v2=12(1,1) 이다.

왼쪽 특이벡터를 만든다.

u1=13Av1=13(1,1,2)2=(1,1,2)6,u2=11(1,1,0)2=(1,1,0)2

U3×3 로 채우려면 하나가 더 필요하다. u1,u2 와 모두 직교하는 단위벡터를 찾는다. (a,b,c)(1,1,0)=0 에서 a=b 이고, (a,a,c)(1,1,2)=2a+2c=0 에서 c=a 이므로

u3=(1,1,1)3

이것이 N(AT) 의 기저다. 확인하면 AT(1,1,1)=(1+01, 0+11)=(0,0) ✓.

완전형은 이렇게 적힌다. Σ 의 마지막 행이 0인 것이 핵심이다.

U=[1/61/21/31/61/21/32/601/3],Σ=[300100]

축소형으로 적으면 U 의 앞 두 열과 Σr=diag(3,1) 만 남긴다. 곱은 같다. 저 셋째 열이 곱해질 상대가 0인 행뿐이기 때문이다.

SVD 로 다시 읽는 계수와 네 부분공간

9장에서 네 부분공간이 직교로 갈린다는 것을 보았다. 그때는 각 공간의 기저를 실제로 구하는 방법은 말하지 않았다. SVD 가 그것을 한꺼번에 준다.

σi>0 인 것이 r 개라 하자. ir 이면 Avi=σiui0 이고, i>r 이면 Avi=σi=0 이라 Avi=0 이다. 여기서 네 가지가 한꺼번에 읽힌다.

공간정규직교기저차원
열공간 Col(A)u1,,urr
왼쪽 영공간 N(AT)ur+1,,ummr
행공간 Row(A)v1,,vrr
영공간 N(A)vr+1,,vnnr

그리고 계수는 0이 아닌 특이값의 개수다. 6장에서는 계수를 구하려면 소거를 해야 했는데, 소거는 '거의 0'과 '정확히 0'을 구별하지 못한다. 특이값을 보면 그 경계가 수로 드러난다. 실무에서 계수를 판정할 때 SVD 를 쓰는 이유가 이것이다.

V 의 앞쪽 r 개가 행공간, 뒤쪽이 영공간의 기저이고, U 의 앞쪽 r 개가 열공간, 뒤쪽이 왼쪽 영공간의 기저다. A 는 행공간의 기저를 열공간의 기저로 sigma 배 늘여 옮기고 영공간은 통째로 0 으로 보낸다
<V 의 앞쪽 r 개가 행공간, 뒤쪽이 영공간의 기저이고, U 의 앞쪽 r 개가 열공간, 뒤쪽이 왼쪽 영공간의 기저다. A 는 행공간의 기저를 열공간의 기저로 sigma 배 늘여 옮기고 영공간은 통째로 0 으로 보낸다>[원본 보기]

예제 107

A=[1224] 의 특이값 분해를 구하고 네 부분공간을 읽어라.

풀이 보기

두 행이 비례하므로 계수가 1일 것이라 짐작된다. 확인해 보자.

ATA=[1224][1224]=[5101020]

특성방정식은 λ225λ+(100100)=λ(λ25)=0 이므로 λ=25,0 이고 σ1=5, σ2=0 이다. 0이 아닌 특이값이 하나뿐이니 계수는 1이다 ✓.

고유벡터는 λ=25 에서 20x+10y=0, 곧 y=2x 이므로

v1=(1,2)5,v2=(2,1)5

u1=15Av1=15(5,10)5=(1,2)5 이고, σ2=0 이라 u2 는 나눗셈으로 얻을 수 없다. u1 과 직교하는 단위벡터 u2=(2,1)/5 를 골라 채운다.

네 부분공간을 읽는다. 표에 그대로 대입하면 된다.

Col(A)=span{(1,2)},N(AT)=span{(2,1)},Row(A)=span{(1,2)},N(A)=span{(2,1)}

검산. A(2,1)=(2+2, 4+4)=(0,0) ✓ 영공간이 맞는다. 차원도 1+1=2 로 양쪽 다 맞는다 ✓.

이 행렬이 대칭이라 정의역 쪽과 공역 쪽 기저가 같아졌는데, 일반적으로는 다르다. 그리고 A 의 고유값은 05 인데 특이값은 50 이다. 대칭이고 고유값이 0 이상이라 두 목록이 일치했다.

예제 108

정사각행렬에서 |detA|=σ1σ2σn 임을 보이고, 이 장의 예제 행렬 둘로 확인하라. 또 AF2=iσi2 도 확인하라(AF 는 모든 성분의 제곱을 더해 제곱근을 씌운 값, 프로베니우스 노름이다).

풀이 보기

4장의 곱의 행렬식을 쓴다. detA=detUdetΣdetVT 인데, 직교행렬의 행렬식은 ±1 이므로

|detA|=|detΣ|=σ1σ2σn

기하로 읽으면 더 분명하다. 4장에서 행렬식은 부피 배율이었다. SVD 는 '서로 수직인 방향으로 각각 σi 배 늘였다'는 말이고, 회전은 부피를 바꾸지 않으니 부피 배율은 σi 다.

확인. A=[3045]detA=15 이고 35×5=15 ✓. A=[1224]detA=0 이고 5×0=0 ✓. 특이값 하나가 0이라는 것과 행렬식이 0이라는 것과 계수가 모자란다는 것이 같은 말이다.

프로베니우스 노름은 AF2=tr(ATA) 로 적히는데, 대각합은 고유값의 합이므로 λi=σi2 다. 확인하면 9+0+16+25=50=45+5 ✓, 1+4+4+16=25=25+0 ✓.

이 두 등식이 다음 절에서 '얼마나 버려도 되는가'를 재는 자가 된다.

낮은 계수 근사

A=UΣVT 를 곱을 풀어 쓰면 아주 쓸모 있는 꼴이 나온다.

A=σ1u1v1T+σ2u2v2T++σrurvrT

각 항 uiviT 는 열벡터에 행벡터를 곱한 것이라 계수가 1인 행렬이다(모든 행이 서로 비례한다). 곧 어떤 행렬이든 계수 1짜리 조각 r 개의 합이고, 조각의 크기를 정하는 것이 σi 다.

2×2 행렬 하나가 계수 1짜리 두 조각으로 갈린다. 첫 조각의 무게가 6.71 이고 둘째가 2.24 이므로 행렬의 모양은 첫 조각이 거의 다 결정한다. 첫 조각만 남겼을 때의 오차가 정확히 둘째 조각이다
<2×2 행렬 하나가 계수 1짜리 두 조각으로 갈린다. 첫 조각의 무게가 6.71 이고 둘째가 2.24 이므로 행렬의 모양은 첫 조각이 거의 다 결정한다. 첫 조각만 남겼을 때의 오차가 정확히 둘째 조각이다>[원본 보기]

앞에서부터 k 개만 남긴 것을 Ak 라 하자. 그러면 버린 부분이 오차이고, 조각들이 서로 직교하므로 오차의 크기가 곧바로 나온다.

AAkF2=σk+12+σk+22++σr2

그리고 놀라운 사실이 하나 있다. 계수가 k 이하인 모든 행렬 가운데 A 에 가장 가까운 것이 Ak 다. 이것을 에카르트-영 정리라 한다. 증명은 이 문서의 범위를 넘지만, 결론은 그대로 쓸 수 있다. 큰 특이값 몇 개만 남기는 것이 '가장 잘 줄이는 방법'이다.

얼마나 남길지는 에너지 비율로 정한다.

설명하는 몫=σ12++σk2σ12++σr2

왼쪽 끝이 원본이고 오른쪽으로 갈수록 조각을 더 남긴 근사다. 아래 막대가 특이값인데 앞의 셋이 크고 나머지가 작아서, 조각 두세 개만으로도 원본의 모양이 대부분 살아난다. 특이값이 빠르게 작아지는 행렬일수록 압축이 잘 된다
<왼쪽 끝이 원본이고 오른쪽으로 갈수록 조각을 더 남긴 근사다. 아래 막대가 특이값인데 앞의 셋이 크고 나머지가 작아서, 조각 두세 개만으로도 원본의 모양이 대부분 살아난다. 특이값이 빠르게 작아지는 행렬일수록 압축이 잘 된다>[원본 보기]

저장량도 세어 보자. m×n 행렬을 그대로 두면 수 mn 개가 필요하다. 계수 k 근사는 uim 개, vin 개, σi 에 1개씩이므로 k(m+n+1) 개다. k 가 충분히 작으면 이득이 생긴다.

예제 109

A=[3045] 의 계수 1 근사 A1 을 구하고 오차를 확인하라.

풀이 보기

앞에서 구한 조각을 쓴다. σ1=35, u1=(1,3)/10, v1=(1,1)/2 이므로

A1=σ1u1v1T=35102[13][11]=3525[1133]=[1.51.54.54.5]

오차 행렬은

AA1=[31.501.544.554.5]=[1.51.50.50.5]

이고 그 프로베니우스 노름의 제곱은 2.25+2.25+0.25+0.25=5 다. 공식이 예고한 값이 σ22=5 였으니 정확히 맞는다 ✓.

설명하는 몫은 45/50=0.9, 곧 90%다. 조각 하나로 행렬의 90%를 담은 셈이다.

A1 의 두 행이 (1.5,1.5)(4.5,4.5) 로 정확히 3배 관계라는 것도 확인해 두자. 계수 1이라는 말의 뜻이 그것이다. 그리고 detA1=0 이므로 근사는 가역이 아니다. 계수를 낮춘다는 것은 가역성을 버린다는 뜻이기도 하다.

예제 110

512×512 짜리 흑백 그림을 계수 50 으로 근사해 저장하려 한다. 저장할 수의 개수를 견주고, 몇까지 남겨야 이득인지 구하라.

풀이 보기

원본은 화소마다 밝기 하나씩이므로

512×512=262144

개의 수가 필요하다. 계수 k 근사는 k(m+n+1)=k(512+512+1)=1025k 개다. k=50 이면

1025×50=51250

으로, 원본의 약 51250/2621440.196, 곧 20% 남짓이다. 다섯 배 넘게 줄었다.

이득의 경계는 1025k<262144 에서

k<2621441025255.7

이므로 k255 까지가 이득이다. 원래 계수가 512까지 갈 수 있으니 절반 아래로만 줄이면 무조건 이득이라는 뜻이다.

다만 얼마나 줄여도 되는가는 저장량이 아니라 특이값이 정한다. 특이값이 천천히 작아지는 그림(잡음이 많거나 무늬가 불규칙한 그림)은 k 를 크게 잡아야 하고, 그러면 압축률이 나빠진다. 앞 그림의 막대가 빠르게 낮아지는 모양이었던 이유를 여기서 다시 읽으면 된다.

의사역행렬과 조건수

역행렬은 정사각이고 가역인 행렬에만 있다. SVD 는 그 제약도 풀어 준다. A=UΣVT 일 때

A+=VΣ+UT

의사역행렬(pseudoinverse, 무어-펜로즈 역행렬)이라 한다. 여기서 Σ+Σ 를 전치하고 0이 아닌 대각성분만 역수로 바꾼 것이다. 0인 자리는 그대로 0으로 둔다.

이것이 왜 '역행렬 비슷한 것'인가. A 가 가역이면 Σ+=Σ1 이라 A+=A1 이다. 가역이 아니면 되돌릴 수 있는 만큼만 되돌린다. 늘인 것은 그만큼 줄여 놓고, 0으로 눌러 버린 방향은 손대지 않는다.

그리고 여기서 9장의 최소제곱이 다시 나타난다. A 의 열이 일차독립이면

A+=(ATA)1ATx^=A+b

이다. 열이 일차독립이 아니어서 최소제곱해가 무수히 많을 때에도 A+b 는 의미가 있다. 그 가운데 길이가 가장 짧은 해를 준다. 영공간 방향 성분을 아예 0으로 두기 때문이다.

조건수 — 답이 얼마나 흔들리는가

특이값의 도 중요하다. 가장 큰 것과 가장 작은 것의 비를 조건수(condition number)라 한다.

κ(A)=σ1σn

뜻은 그림으로 읽는 편이 빠르다. κ 가 1에 가까우면 타원이 원에 가깝고, 크면 납작하다.

왼쪽처럼 타원이 둥글면 어느 방향으로 밀어도 상이 비슷하게 움직인다. 오른쪽처럼 납작하면 얇은 방향으로는 x 를 크게 움직여도 Ax 가 거의 안 움직이고, 거꾸로 b 의 작은 오차가 x 의 큰 오차로 되돌아온다
<왼쪽처럼 타원이 둥글면 어느 방향으로 밀어도 상이 비슷하게 움직인다. 오른쪽처럼 납작하면 얇은 방향으로는 x 를 크게 움직여도 Ax 가 거의 안 움직이고, 거꾸로 b 의 작은 오차가 x 의 큰 오차로 되돌아온다>[원본 보기]

왜 그런지는 A1 을 보면 된다. A1=VΣ1UT 이므로 A1 의 가장 큰 특이값은 1/σn 이다. b 에 오차 δb 가 있으면 해의 오차는 δx=A1δb 이고, 최악의 경우 1/σn 배로 늘어난다. 상대오차로 정리하면

δxxκ(A)δbb

가 된다. 조건수는 입력 오차가 답으로 넘어올 때의 최악의 증폭률이다. σn=0 이면 무한대이고, 그것이 특이행렬이다.

9장에서 '정규방정식을 직접 만들지 말라'고 한 이유도 여기 있다. ATA 의 특이값은 σi2 이므로 κ(ATA)=κ(A)2 이다. 조건수가 제곱된다. κ(A)=104 짜리 문제가 108 이 되면 배정밀도 계산에서도 자릿수가 위태로워진다. QR 분해를 쓰면 Rx^=QTb 라 조건수가 κ(A) 그대로 남는다.

예제 111

9장에서 정규방정식으로 풀었던 A=[100111], b=(1,1,0) 을 의사역행렬로 다시 풀고, 잔차가 u3 방향임을 확인하라.

풀이 보기

앞에서 구한 SVD 를 그대로 쓴다. σ1=3, σ2=1 이고 Σ+=[1/300010] 다.

먼저 UTb 를 구한다. 세 왼쪽 특이벡터와 b 의 내적이다.

UTb=(1+1+06, 1+1+02, 1+103)=(26, 0, 23)

Σ+ 를 곱하면 셋째 성분이 버려진다. 셋째 열이 통째로 0이기 때문이다.

Σ+UTb=(1326, 10)=(218, 0)=(23, 0)

마지막으로 V 를 곱한다.

x^=V(23,0)T=23(1,1)2=(13,13)

9장에서 정규방정식으로 얻은 답과 같다 ✓.

잔차의 정체. 버려진 성분이 곧 잔차다. 실제로

(u3b)u3=23(1,1,1)3=(23,23,23)

인데 9장에서 구한 잔차가 정확히 이 벡터였다 ✓. 왼쪽 영공간 방향 성분은 Ax 로 절대 만들 수 없으므로 잔차로 남는다. 9장에서 그림으로 본 사실이 SVD 에서는 계산의 한 단계로 보인다.

예제 112

A=[2112] 의 조건수를 구하라. 또 B=diag(1, 0.01) 에 대해 Bx=b 를 풀 때 b 의 작은 변화가 답을 얼마나 흔드는지 확인하라.

풀이 보기

A 는 대칭이고 고유값이 2±1, 곧 3과 1이다. 둘 다 양수이므로 특이값이 그대로 3과 1이고

κ(A)=3/1=3

이다. 건강한 축에 든다.

B 는 대각행렬이라 특이값이 대각성분의 절댓값 그대로다. κ(B)=1/0.01=100 이다.

흔들림을 직접 재 보자. b=(1, 0.01) 이면 x=(1,1) 이다. 여기서 둘째 성분만 0.01 만큼 키워 b=(1, 0.02) 로 두면 x=(1,2) 다.

δbb=0.011+0.00010.01,δxx=120.71

입력이 1% 변했는데 답은 71% 변했다. 증폭률이 약 71배이고, 조건수 100 이 예고한 상한 안에 있다 ✓.

여기서 조심할 것이 있다. detB=0.01 이라 '행렬식이 작으니 위험하다'고 말하고 싶어지는데, 행렬식은 조건수를 재지 못한다. 0.01B 를 생각해 보면 행렬식은 106 으로 더 작아지지만 조건수는 여전히 100이다. 위험을 재는 것은 크기가 아니라 다.

응용 — 주성분분석과 이미지 압축

마지막으로 SVD 가 실제로 쓰이는 자리를 둘 본다. 여기서는 무엇을 계산하는가와 어떤 순서로 하는가까지만 다룬다. 그 결과를 어떻게 해석할 것인가, 표본이 몇이면 믿을 만한가 같은 물음은 통계학 문서의 몫이다.

주성분분석의 뼈대

자료가 표로 주어졌다고 하자. 행이 표본 n 개, 열이 변수 p 개인 행렬 X 다. 주성분분석(principal component analysis, PCA)은 이 자료가 가장 많이 퍼져 있는 방향을 찾아 그것을 새 축으로 삼는 일이다. 절차는 넷이다.

  1. 중심화. 각 열에서 그 열의 평균을 뺀다. 이 단계를 빠뜨리면 답이 엉뚱해진다
  2. 중심화한 행렬 Xc 의 특이값 분해 Xc=UΣVT 를 구한다
  3. V 의 열 v1,v2, 가 차례로 제1주성분, 제2주성분 방향이다
  4. vi 방향의 퍼짐은 σi2n1 이고, σi2σj2 가 그 축이 설명하는 몫이다

왜 이것이 '가장 많이 퍼진 방향'인가. 단위벡터 w 방향으로 자료를 사영한 값들의 제곱 합이 Xcw2 인데, 앞에서 보았듯 이 값을 최대로 하는 단위벡터가 바로 v1 이고 그 값이 σ12 이다. 첫 절에서 '가장 크게 늘어나는 방향'을 찾던 일이 여기서는 '가장 많이 퍼진 방향'을 찾는 일이 된다.

왼쪽은 손으로 따라갈 수 있는 네 점이고 오른쪽은 점이 많아진 경우다. 첫 주성분 축으로 수직으로 내리면 잃어버리는 정보(점선의 길이)가 가장 작다. 9장의 회귀가 세로 거리를 줄인 것과 달리 여기서는 수직 거리를 줄인다
<왼쪽은 손으로 따라갈 수 있는 네 점이고 오른쪽은 점이 많아진 경우다. 첫 주성분 축으로 수직으로 내리면 잃어버리는 정보(점선의 길이)가 가장 작다. 9장의 회귀가 세로 거리를 줄인 것과 달리 여기서는 수직 거리를 줄인다>[원본 보기]

앞 절의 낮은 계수 근사와 이어 읽으면 이렇게 된다. 자료를 k 차원으로 줄인다는 것은 Xc 를 계수 k 로 근사하는 일이고, 에카르트-영 정리가 그 근사가 최선임을 보증한다. 차원 축소가 SVD 인 이유가 그것이다.

이미지 압축의 원리

흑백 이미지는 화소마다 밝기를 하나씩 담은 수의 표, 곧 행렬이다. 그러니 앞 절의 낮은 계수 근사를 그대로 쓸 수 있다.

  1. 이미지를 m×n 행렬 A 로 본다(색이 있으면 채널마다 따로 한다)
  2. A=UΣVT 를 구하고 특이값을 큰 것부터 본다
  3. 원하는 화질에 맞춰 k 를 정한다. 보통 에너지 비율 99% 같은 기준을 쓴다
  4. u1..k, σ1..k, v1..k 만 저장한다. 필요할 때 곱해서 되살린다

실제 사진 파일 형식이 이 방법을 쓰지는 않는다. 사진에서는 이산 코사인 변환 계열이 더 효율적이다. 그러나 '중요한 성분만 남기고 나머지를 버린다'는 손실 압축의 발상 자체는 같고, SVD 는 그 발상을 가장 깨끗하게 보여 주는 예다.

예제 113

네 점 (1,2),(2,1),(1,2),(2,1) 에 주성분분석을 적용하라. 두 주성분 방향과 각 방향의 분산, 그리고 제1주성분이 설명하는 몫을 구하라.

풀이 보기

1단계 중심화. 두 열의 평균이 모두 0이므로 뺄 것이 없다. Xc=X 다.

2단계. XTX 를 만든다. 성분은 각각 x2, xy, y2 다.

xi2=1+4+1+4=10,xiyi=2+2+2+2=8,yi2=4+1+4+1=10

XTX=[108810]λ=10±8=18, 2

3단계. 고유벡터는 [abba] 꼴이라 언제나 (1,1)(1,1) 방향이다.

v1=(1,1)2 (PC1),v2=(1,1)2 (PC2)

4단계. n=4 이므로 분산은 λi/(n1)=λi/3 이다.

PC1 방향 분산=183=6,PC2 방향 분산=230.67

제1주성분이 설명하는 몫은 18/(18+2)=0.9, 곧 90%다.

검산해 보자. 각 점을 v1 에 사영한 값(점수)은 (1,2)v1=3/2 를 비롯해 차례로 3/2, 3/2, 3/2, 3/2 다. 제곱 합이 4×4.5=18=λ1 ✓. 이 점들을 한 축에 담으면 두 점씩 겹치지만, 원래 자료에서도 그 두 점은 PC1 방향으로 같은 자리에 있었으니 잃은 것은 PC2 방향의 ±1/2 뿐이다.

예제 114

앞 예제의 네 점을 모두 오른쪽으로 10만큼 옮겨 (11,2),(12,1),(9,2),(8,1) 로 만들었다. 중심화를 빼먹고 그대로 XTX 를 만들면 제1주성분이 어떻게 되는지 보아라.

풀이 보기

자료의 모양은 하나도 바뀌지 않았다. 통째로 옮겼을 뿐이니 퍼진 방향은 여전히 (1,1) 이어야 한다.

그런데 중심화를 하지 않고 계산하면

x2=121+144+81+64=410,xy=22+12188=8,y2=4+1+4+1=10

XTX=[4108810]

이 된다. 대각선의 410 이 나머지를 압도하므로 첫 고유벡터는 (1,0) 에 거의 붙는다. 실제로 λ1410.2 이고 고유벡터는 대략 (1, 0.02) 다.

제1주성분이 '퍼진 방향'이 아니라 '원점에서 자료 뭉치까지의 방향'을 가리키게 된다. 자료가 원점에서 멀수록 이 오류가 커진다.

중심화를 하면 (1,2),(2,1),(1,2),(2,1) 로 돌아가 앞 예제와 같은 답이 나온다 ✓.

이것이 절차 1단계를 강조한 이유다. PCA 는 '평균에서 얼마나 벗어나 있는가'를 보는 방법이므로 평균을 먼저 원점으로 옮겨야 한다. 9장에서 상수함수 1 과 직교한다는 것이 '평균이 0'이라는 뜻이었던 대목과 같은 이야기다.

10장 정리

기호 또는 용어
특이값 σiATA 의 고유값의 제곱근. 언제나 실수이고 0 이상이며 큰 것부터 적는다
오른쪽 특이벡터 viATA 의 정규직교 고유벡터. V 의 열
왼쪽 특이벡터 uiui=Avi/σi. 저절로 정규직교가 된다
특이값 분해A=UΣVT. 회전 · 늘이기 · 회전. 어떤 행렬에도 존재한다
기하적 뜻단위원(구)이 타원으로 간다. 반축의 길이가 σi, 방향이 ui
계수0이 아닌 특이값의 개수. 소거보다 안정적으로 판정한다
네 부분공간u1..r 이 열공간, ur+1..m 이 왼쪽 영공간, v1..r 이 행공간, vr+1..n 이 영공간
행렬식과 노름|detA|=σi, AF2=σi2
계수 1 조각 전개A=iσiuiviT
낮은 계수 근사 Ak앞에서부터 k 개만 남긴 것. 오차는 i>kσi2 의 제곱근
에카르트-영 정리계수 k 이하인 행렬 가운데 AkA 에 가장 가깝다
의사역행렬 A+VΣ+UT. 0 아닌 특이값만 역수로 바꾼다. x^=A+b 가 최소제곱해
조건수 κ(A)σ1/σn. 입력 오차의 최악의 증폭률. κ(ATA)=κ(A)2
주성분분석중심화 → SVD → V 의 열이 주성분, σi2/(n1) 이 그 방향의 분산
이미지 압축k 개 조각만 저장. 수 mn 개가 k(m+n+1) 개로 줄어든다

두 장을 하나로 묶으면 이렇게 된다. 9장은 주어진 부분공간으로 수직으로 내리는 법을 배웠고, 10장은 행렬이 스스로 가장 좋은 방향들을 내놓게 하는 법을 배웠다. 최소제곱도 차원 축소도 압축도, 결국은 '덜 중요한 방향을 버리고 수직으로 내린다'는 한 가지 동작이다.

여기까지가 이 문서의 본문이다. 다음 장에서는 더 공부할 거리를 정리한다.

더 공부할 것

이 문서는 학사 과정 선형대수의 골격까지다. 여기서 갈라지는 길을 정리해 둔다. 각 분야가 이 문서의 어느 부분을 확장한 것인지 함께 적었다.

이 사이트 안에서 이어지는 문서

학부 전공 과정

더 나아가는 주제

공부 방식에 대한 조언