B1 · 증명의 문법: 계산을 모든 경우의 주장으로 바꾸기

내용

B1 · 증명의 문법: 계산을 모든 경우의 주장으로 바꾸기#

2.0 자원량이 바뀌어도 같은 답을 쓸 수 있을까#

B0의 생산 모형으로 돌아갑시다. 활동별 노동 사용량은 \((1,1,1)\)시간, 원료 사용량은 \((0,1,2)\)kg이고 실행량은 음수가 아니어야 합니다. 이번에는 총 노동량의 수치를 \(L\), 원료량의 수치를 \(M\)이라 놓습니다. \(L\)은 시간, \(M\)은 kg 단위에서 기록한 숫자입니다. 서로 다른 단위를 가진 행의 수치를 사용하고 있다는 약속 아래

\[ x_1+x_2+x_3=L,\qquad x_2+2x_3=M \]

을 풉니다. “\(L=M=6\)에서 풀었으니 다른 자원량에서도 된다”는 문장은 아직 근거가 없습니다. 같은 소거를 기호로 다시 수행하겠습니다.

\(x_3=t\)라 놓으면 \(x_2=M-2t\). 첫 식에 넣으면 \(x_1+(M-2t)+t=L\)이므로 \(x_1=L-M+t\)입니다. 따라서 가능한 후보는

\[ x(t;L,M)=(L-M+t,M-2t,t). \]

대입하면 노동 합은 \((L-M+t)+(M-2t)+t=L\), 원료 합은 \((M-2t)+2t=M\)입니다. 모든 실수 \(L,M,t\)에서 등식이 성립합니다. 이때의 “모든”은 세 숫자를 임의로 두고 실수 연산 규칙만 사용했다는 데서 나옵니다. 여러 입력을 프로그램으로 검사했다는 뜻이 아닙니다.

비음수 조건도 각각 풀어 봅시다.

\[ x_3\ge0\iff t\ge0,\qquad x_2\ge0\iff t\le M/2,\qquad x_1\ge0\iff t\ge M-L. \]

세 조건을 한꺼번에 쓰면

\[ \max(0,M-L)\le t\le M/2. \]

이 구간이 비어 있지 않을 필요충분조건은 \(0\le M\le2L\)입니다. 실제로 구간이 비어 있지 않으면 \(0\le M/2\)에서 \(M\ge0\), \(M-L\le M/2\)에서 \(M\le2L\)입니다. 역으로 두 부등식이 성립하면 \(0\)\(M-L\)이 둘 다 \(M/2\) 이하이므로 그 최댓값도 이하입니다. 또한 \(0\le M\le2L\)\(L\ge0\)도 함의합니다.

노동 수치 L과 원료 수치 M의 평면에서 0 이상 M 이하 2L인 영역을 표시. 6,6은 가능하며 2,5와 2,-1은 불가능하다.

그림 4 가로축은 노동시간, 세로축은 원료 kg입니다. 음영은 표시 범위 안의 \(L\ge0\), \(0\le M\le2L\)입니다. 위 경계의 기울기 2는 단위 노동시간당 최대 원료 사용량 2kg에서 나옵니다. 그림의 유한 범위가 모형의 자원량 상한은 아닙니다.#

\((L,M)=(6,6)\)이면 \(0\le t\le3\)으로 B0의 답을 되찾습니다. \((2,5)\)이면 하한 3이 상한 \(5/2\)보다 커 허용해가 없습니다. 하지만 \(t=0\)을 넣은 \((-3,5,0)\)은 실수 등식의 해입니다. 해가 존재한다는 말에는 어느 집합에서 찾는지 포함되어야 합니다.

이번 장에서는 이 한 계산에서 나타난 문법을 차례로 연습합니다. 어떤 원소를 임의로 잡는지, 무엇을 먼저 선택하는지, 두 집합이 같다는 것을 어떻게 보이는지, 후보가 왜 하나로 정해지는지를 확인합니다. 중간의 기저·차원·사영 논증은 그 문법을 더 큰 대상으로 확장하는 연습입니다. 장 끝에서는 같은 내용을 정의·정리·증명으로 다시 정리합니다.

이번 장의 \(V,W\)는 별도 언급이 없으면 실수 좌표공간의 부분공간입니다. 실수의 연산, 집합·함수, 유한합과 귀납을 출발 규칙으로 삼습니다. 필요한 용어는 사용하는 자리에서 설명합니다. 복소수는 실수 가정을 빼면 실패하는 반례에서만 사용합니다.

2.1 정의를 풀면 증명의 재료가 나온다#

부분공간과 선형결합#

두 계획의 차이 \(z=x(t;L,M)-x(s;L,M)\)\(z_1+z_2+z_3=0\)을 만족합니다. 이 변화는 성분이 음수여도 됩니다. 상태에 붙인 비음수 제약과, 자원을 그대로 유지하는 변화의 선형 조건을 구별하면서 다음 정의를 읽어 보겠습니다.

부분집합 \(U\subseteq\mathbb R^n\)이 부분공간이라는 말은 다음 세 조건을 뜻합니다.

  1. \(0\in U\)입니다.

  2. \(u,w\in U\)이면 \(u+w\in U\)입니다.

  3. \(c\in\mathbb R\), \(u\in U\)이면 \(cu\in U\)입니다.

이 조건을 새로 증명하는 것이 아니라, 주어진 집합이 이 조건을 만족하는지 증명합니다.

예를 들어 \(U=\{(x,y,z):x+y+z=0\}\)를 보겠습니다. \(0+0+0=0\)이므로 영벡터가 들어갑니다. \(u,w\in U\)라면

\[\begin{split} \begin{aligned} (u_1+w_1)+(u_2+w_2)+(u_3+w_3) &=(u_1+u_2+u_3)+(w_1+w_2+w_3)\\ &=0+0\\ &=0. \end{aligned} \end{split}\]

첫 등식은 실수 덧셈의 교환·결합법칙이고 둘째는 \(u,w\in U\)라는 가정입니다. 따라서 \(u+w\in U\)입니다. 또한

\[ cu_1+cu_2+cu_3=c(u_1+u_2+u_3)=c0=0 \]

이므로 \(cu\in U\)입니다. 세 조건을 다 확인했으므로 \(U\)는 부분공간입니다.

반면 \(\{(x,y,z):x+y+z=1\}\)에는 영벡터가 없습니다. \(0+0+0=0\ne1\)이기 때문입니다. 첫 조건이 실패했으므로 부분공간이 아닙니다.

벡터 \(b_1,\ldots,b_r\)와 실수 \(c_1,\ldots,c_r\)로 만든 \(\sum_{i=1}^r c_i b_i\)선형결합이라 합니다. 가능한 모든 계수로 만든 벡터의 집합을

\[ \operatorname{span}(b_1,\ldots,b_r) =\left\{\sum_{i=1}^r c_i b_i:c_1,\ldots,c_r\in\mathbb R\right\} \]

로 적습니다. 이 목록이 \(V\)생성한다는 말은 이 집합이 \(V\)와 같다는 뜻입니다.

이 생성집합은 부분공간입니다. 모든 계수를 \(0\)으로 놓으면 영벡터를 얻습니다. 두 결합의 합은

\[ \sum_i c_i b_i+\sum_i d_i b_i=\sum_i(c_i+d_i)b_i \]

여서 다시 결합이고, 스칼라배는 \(a\sum_i c_i b_i=\sum_i(ac_i)b_i\)여서 다시 결합입니다. 각 식은 성분별 분배법칙을 적용한 것입니다.

일차독립과 기저#

목록 \((b_1,\ldots,b_r)\)일차독립이라는 말은

\[ \sum_{i=1}^r c_i b_i=0 \quad\Longrightarrow\quad c_1=\cdots=c_r=0 \]

이라는 뜻입니다. 그렇지 않으면 일차종속이라 합니다. 계수가 모두 \(0\)인 결합은 언제나 \(0\)이 됩니다. 독립성은 그것만이 \(0\)을 만드는 방법이라고 말합니다.

\(V\)를 생성하면서 일차독립인 순서 있는 목록을 \(V\)기저라고 합니다. 영공간 \(\{0\}\)의 기저는 빈 목록으로 정합니다. 빈 합이 \(0\)이라는 약속 덕분에 생성과 독립 조건을 만족합니다.

보조정리 1 (기저 표현의 존재와 유일성)

[가정: 유한한 기저] \(B=(b_1,\ldots,b_r)\)\(V\)의 기저이면 각 \(v\in V\)는 유일한 실수 목록 \(c_1,\ldots,c_r\)에 대해 \(v=\sum_i c_i b_i\)로 쓰입니다.

Proof. 존재. 기저는 \(V\)를 생성하므로 생성의 정의가 바로 필요한 계수의 존재를 줍니다.

유일성. 같은 \(v\)에 대해 \(\sum_i c_i b_i=v=\sum_i d_i b_i\)라는 두 표현이 있다고 가정합니다. 양쪽 표현을 빼면

\[ 0=v-v=\sum_i c_i b_i-\sum_i d_i b_i =\sum_i(c_i-d_i)b_i. \]

기저의 독립성을 적용하면 각 \(i\)에서 \(c_i-d_i=0\)입니다. 양변에 \(d_i\)를 더하면 \(c_i=d_i\)입니다. 따라서 두 계수 목록은 같습니다. 존재와 유일성을 모두 증명했습니다.

이 유일한 계수 열을 \([v]_B=(c_1,\ldots,c_r)^{\mathsf T}\)라고 부릅니다. 여기서 좌표는 원래 벡터의 성분과 다를 수 있습니다. 1장의 \((3,5)=4(1,1)-(1,-1)\)에서 실제 성분은 \((3,5)\), 그 기저에서의 좌표는 \((4,-1)\)이었습니다.

선형사상에서 나오는 세 가지 규칙#

함수 \(T:V\to W\)선형이라는 말은 모든 \(u,v\in V\), \(c\in\mathbb R\)에 대해

\[ T(u+v)=T(u)+T(v),\qquad T(cv)=cT(v) \]

라는 뜻입니다. \(T(v)\)\(Tv\)로 줄여 적기도 합니다. \(L(V,W)\)는 이러한 선형사상들의 집합입니다.

첫째, \(T(0)=0\)입니다. \(T(0)=T(0+0)=T(0)+T(0)\)에서 양변에 \(-T(0)\)을 더하면 됩니다.

둘째, \(T(-v)=-T(v)\)입니다. \(-v=(-1)v\)이므로 스칼라곱 보존에 \(c=-1\)을 넣으면 됩니다. 따라서

\[ T(u-v)=T(u+(-v))=T(u)+T(-v)=T(u)-T(v). \]

셋째, 유한한 선형결합에 대해서도

\[ T\left(\sum_{i=1}^r c_i b_i\right)=\sum_{i=1}^r c_iT(b_i) \]

입니다. “선형성이므로”라는 한마디 안에는 다음 귀납이 들어 있습니다. \(r=0\)\(T(0)=0\)이고, \(r=1\)은 스칼라곱 보존입니다. \(r=k\)에서 성립한다고 가정하면

\[\begin{split} \begin{aligned} T\left(\sum_{i=1}^{k+1}c_i b_i\right) &=T\left(\left(\sum_{i=1}^k c_i b_i\right)+c_{k+1}b_{k+1}\right)\\ &=T\left(\sum_{i=1}^k c_i b_i\right)+T(c_{k+1}b_{k+1})\\ &=\sum_{i=1}^k c_iT(b_i)+c_{k+1}T(b_{k+1})\\ &=\sum_{i=1}^{k+1}c_iT(b_i). \end{aligned} \end{split}\]

둘째 줄은 덧셈 보존, 셋째 줄은 귀납가정과 스칼라곱 보존입니다. 따라서 모든 유한한 \(r\)에 대해 성립합니다.

정의는 의미를 정하고, 보조정리는 다음 논증에 쓸 사실을 마련하며, 정리는 중심 주장을 담고, 따름정리는 이미 증명한 결과로부터 새 결론을 얻습니다. 이름이 무엇이든 사실을 주장하면 근거가 필요합니다.

2.2 명제의 모양으로 첫 줄과 마지막 줄을 정한다#

목표의 형태

시작할 일

끝내기 위한 조건

\(\forall x\in S,\ P(x)\)

\(S\)의 임의의 \(x\)를 잡는다

\(x\)에 특별한 조건을 더하지 않고 \(P(x)\)를 보인다

\(\exists x\in S,\ P(x)\)

후보를 만들거나 존재를 유도한다

후보의 소속과 성질을 모두 확인한다

\(P\Rightarrow Q\)

\(P\)를 가정한다

\(Q\)를 얻는다

\(P\Longleftrightarrow Q\)

두 방향을 나눈다

각각의 함의를 증명한다

\(A=B\)

양쪽 포함을 나눈다

임의의 원소에 대해 두 포함을 확인한다

유일하게 존재한다

먼저 하나를 만든다

조건을 만족하는 다른 후보와 같음을 보인다

\(\forall\)는 “모든”, \(\exists\)는 “존재한다”, \(\Rightarrow\)는 “이면”, \(\Longleftrightarrow\)는 “필요충분”입니다. \(\neg P\)\(P\)의 부정입니다. 집합에서 \(U\subseteq W\)\(U\)의 모든 원소가 \(W\)에 속한다는 말입니다.

이제 표를 실제 증명에 적용해 보겠습니다.

보조정리 2 (부분공간 판정법의 동치)

[가정: \(U\subseteq V\), \(V\)는 실수 좌표공간의 부분공간] 다음은 동치입니다.

(a) \(U\)는 부분공간입니다.

(b) \(U\ne\varnothing\)이고, 모든 \(c\in\mathbb R\), \(u,w\in U\)에 대해 \(cu+w\in U\)입니다.

Proof. (a)에서 (b). 부분공간은 \(0\)을 포함하므로 비어 있지 않습니다. \(u,w\in U\), \(c\in\mathbb R\)를 잡습니다. 스칼라곱 닫힘에서 \(cu\in U\)입니다. 이제 \(cu\)\(w\)가 모두 \(U\)의 원소이므로 덧셈 닫힘에서 \(cu+w\in U\)입니다.

(b)에서 (a). 세 조건을 차례로 확보합니다.

먼저 비어 있지 않으므로 하나의 \(v\in U\)를 고를 수 있습니다. (b)에 \(c=-1\), \(u=v\), \(w=v\)를 넣으면 \((-1)v+v=0\in U\)입니다. 영벡터의 소속을 얻었습니다.

다음으로 임의의 \(u,w\in U\)에 대해 \(c=1\)을 넣으면 \(1u+w=u+w\in U\)입니다. 덧셈 닫힘을 얻었습니다.

마지막으로 임의의 \(c\in\mathbb R\), \(u\in U\)에 대해 \(w=0\)을 넣으면 \(cu+0=cu\in U\)입니다. 이 대입은 첫 단계에서 \(0\in U\)를 확보했기 때문에 가능합니다. 스칼라곱 닫힘까지 얻었으므로 \(U\)는 부분공간입니다.

멈춤 질문. 왜 마지막 단계부터 시작할 수 없을까요?

풀이. (b)는 \(w\in U\)인 경우에만 사용 가능합니다. 아직 \(0\in U\)를 모르면 \(w=0\)을 대입할 권리가 없습니다. 목표를 이미 알고 있는 것처럼 사용하면 순환논증이 됩니다.

비어 있지 않다는 조건도 필요합니다. \(U=\varnothing\)에는 \(u,w\)가 없어서 “모든 \(u,w\in U\)에 대해”라는 조건을 위반할 쌍이 없습니다. 이런 조건은 참으로 취급하며 공허하게 참이라고 합니다. 하지만 \(\varnothing\)은 영벡터를 포함하지 않으므로 부분공간이 아닙니다.

예를 들어 \(U=\{(a,2a):a\in\mathbb R\}\)에서는 \((0,0)\in U\)이고

\[ c(a,2a)+(b,2b)=(ca+b,2ca+2b) =(ca+b,2(ca+b))\in U. \]

따라서 방금 증명한 판정법으로 부분공간임을 결론낼 수 있습니다. 이번에는 그 판정법 자체의 증명이 앞에 있으므로 숨겨진 근거가 없습니다.

2.3 한정기호의 순서: 누가 먼저 선택되는가#

다음 두 문장을 비교하세요.

\[ \forall x\in\mathbb R\ \exists y\in\mathbb R:\ x+y=0, \qquad \exists y\in\mathbb R\ \forall x\in\mathbb R:\ x+y=0. \]

첫째 문장에서는 \(x\)를 본 뒤 \(y=-x\)를 고르면 됩니다. 둘째에서는 하나의 \(y\)를 먼저 고정해야 합니다. \(x=0\)에 맞추면 \(y=0\)이지만 이 \(y\)\(x=1\)에 통하지 않습니다. 첫째는 참이고 둘째는 거짓입니다.

첫째의 부정은 “어떤 \(x\)에서는 모든 \(y\)가 실패한다”입니다.

\[ \neg(\forall x\,\exists y\,P(x,y)) \quad\Longleftrightarrow\quad \exists x\,\forall y\,\neg P(x,y). \]

“모든 \(x\)가 성공한다”의 실패는 실패하는 \(x\) 하나가 있다는 뜻이고, 그 \(x\)에 대해 “성공하는 \(y\)가 있다”의 실패는 모든 \(y\)가 실패한다는 뜻입니다. 이 설명이 두 한정기호를 뒤집는 이유입니다.

생산계획에서 선택 순서를 확인하기#

\(\mathcal B=\{(L,M):L\ge0,\ 0\le M\le2L\}\)를 허용 가능한 자원 수치들의 집합이라고 합시다. \(A=\begin{pmatrix}1&1&1\\0&1&2\end{pmatrix}\)라 쓰면 다음 두 주장은 다릅니다.

\[ \forall b\in\mathcal B\ \exists x\in\mathbb R_+^3:\ Ax=b, \]
\[ \exists x\in\mathbb R_+^3\ \forall b\in\mathcal B:\ Ax=b. \]

\(\mathbb R_+^3\)는 세 성분이 모두 0 이상인 벡터들의 집합입니다. 첫 주장은 자원표를 받은 뒤 계획을 골라도 된다고 말합니다. 예를 들어 \(b=(L,M)\)를 받은 뒤 \(x=(L-M/2,0,M/2)\)로 고르면 세 성분이 음이 아니고 \(Ax=(L,M)\)입니다. 둘째 주장은 하나의 계획이 모든 자원표에 동시에 맞아야 한다고 말합니다. 같은 \(Ax\)\((0,0)\)\((1,0)\)에 동시에 같을 수 없으므로 거짓입니다.

둘째 주장을 반박할 때 하나의 특정 계획만 실패시켜서는 부족합니다. 위 논증은 어떤 \(x\)를 먼저 고르더라도 같은 출력이 두 서로 다른 자원표가 될 수 없다는 이유를 사용합니다. 후보마다 실패하는 입력을 만들거나, 모든 후보가 부딪치는 모순을 제시해야 합니다.

첫 주장의 부정은 \(\exists b\in\mathcal B\ \forall x\in\mathbb R_+^3:Ax\ne b\)입니다. 실패하는 자원표 하나를 먼저 고르고, 그 자원표에서는 모든 계획이 실패해야 합니다. \((2,5)\)\(\mathcal B\) 밖이므로 첫 주장의 반례가 아닙니다. 결론이 실패하는지 보기 전에 반례 후보가 가정을 만족하는지부터 확인해야 합니다.

명제 1 (기저와 벡터 선택의 순서)

[가정: \(V=\mathbb R^n\), \(n\ge2\)]

(a) 모든 기저 \(B\)에 대해 \([v]_B\)의 모든 성분이 \(0\)이 아닌 \(v\ne0\)이 존재합니다.

(b) 모든 기저에서 좌표의 모든 성분이 \(0\)이 아닌 하나의 \(v\ne0\)이 존재합니다.

(a)는 참이고 (b)는 거짓입니다.

Proof. (a). 기저 \(B=(b_1,\ldots,b_r)\)를 먼저 받습니다. \(v=b_1+\cdots+b_r\)로 정합니다. 기저 표현의 유일성으로 \([v]_B=(1,\ldots,1)^{\mathsf T}\)입니다. 또한 \(v=0\)이라면 계수가 전부 \(1\)인 영결합이 생겨 독립성에 모순입니다. 따라서 \(v\ne0\)입니다. \(n\ge2\)여서 \(V\)는 영공간이 아니므로 기저는 비어 있지 않습니다.

(b)의 반증. 임의의 \(v\ne0\)을 받았다고 하겠습니다. 이 \(v\)를 무너뜨리는 기저를 직접 만듭니다. 성분 중 어떤 \(v_k\)\(0\)이 아닙니다. \(e_i\)\(i\)번째 성분만 \(1\)인 표준벡터입니다. 목록

\[ B'=(v,e_1,\ldots,e_{k-1},e_{k+1},\ldots,e_n) \]

을 잡겠습니다. 이 목록이 기저라는 말을 먼저 증명해야 합니다.

생성 확인. 임의의 \(x=(x_1,\ldots,x_n)\)에 대해

\[ x=\frac{x_k}{v_k}v+ \sum_{i\ne k}\left(x_i-\frac{x_kv_i}{v_k}\right)e_i. \]

오른쪽의 \(k\)번째 성분은 \((x_k/v_k)v_k=x_k\)입니다. \(i\ne k\)번째 성분은 \(x_kv_i/v_k+x_i-x_kv_i/v_k=x_i\)입니다. 따라서 모든 성분이 일치하여 생성이 확인됩니다.

독립 확인. \(av+\sum_{i\ne k}d_i e_i=0\)이라 합시다. \(k\)번째 성분은 \(av_k=0\)입니다. \(v_k\ne0\)이므로 \(a=0\)입니다. 그러면 \(i\ne k\)번째 성분은 \(d_i=0\)이 됩니다. 따라서 모든 계수가 \(0\)이고 독립입니다.

이제 \(B'\)가 기저임을 확인했으므로 \([v]_{B'}=(1,0,\ldots,0)^{\mathsf T}\)라고 말할 수 있습니다. \(n\ge2\)이므로 \(0\)인 성분이 적어도 하나 있습니다. 임의의 \(v\ne0\)마다 실패하는 기저를 만들었으므로 (b)는 거짓입니다.

이 증명은 “\(v\)를 기저로 확장할 수 있다”라는 정리를 빌리지 않았습니다. 새 기저의 생성과 독립을 성분으로 확인했습니다.

\(n=1\)에서는 상황이 달라집니다. 기저는 \(b\ne0\) 하나이고 \(v\ne0\)의 좌표는 \(v/b\ne0\)입니다. 따라서 하나의 \(v\ne0\)가 모든 기저에 통하여 (b)도 참입니다. \(n\ge2\)는 반증의 마지막 줄에 쓰인 가정입니다.

2.4 집합 등식은 양쪽 포함, 사상 등식은 모든 입력#

해집합이나 상을 정확히 구하기#

생산 예에서 \(x_0=(L-M,M,0)\)을 고정하면 \(x(t;L,M)=x_0+t(1,-2,1)\)입니다. “모든 해가 이 꼴”과 “이 꼴은 모두 해”를 각각 확인해야 한다는 점은 아래 열공간의 등식에서도 그대로 사용됩니다. 이번에는 기준점의 이동이 없는 더 작은 행렬로 양쪽 포함의 문장을 연습하겠습니다.

\(K=\begin{bmatrix}1&2\\2&4\end{bmatrix}\)에 대해

\[ \{Kx:x\in\mathbb R^2\}=\operatorname{span}((1,2)) \]

임을 증명하겠습니다.

왼쪽에서 오른쪽. 왼쪽의 임의의 벡터를 \(Kx\)라고 씁니다. 행렬곱에서

\[ Kx=(x_1+2x_2,2x_1+4x_2) =(x_1+2x_2)(1,2) \]

이므로 오른쪽 집합에 속합니다.

오른쪽에서 왼쪽. 오른쪽의 임의의 벡터는 \(t(1,2)\)입니다. 입력 \(x=(t,0)\)을 고르면 \(Kx=(t+0,2t+0)=t(1,2)\)입니다. 따라서 왼쪽 집합에 속합니다. 두 포함을 모두 얻었으므로 집합이 같습니다.

둘째 방향에서 할 일은 단순히 “모든 배수가 나온다”고 말하는 것이 아니라, 그 배수를 만드는 입력을 제시하는 것이었습니다.

선형사상은 기저의 값으로 결정된다#

두 함수가 같다는 말은 정의역과 공역을 같게 두었을 때 모든 입력에서 출력이 같다는 뜻입니다. 선형사상에는 이를 유한한 검사로 바꾸는 정리가 있습니다.

정리 1 (기저에서의 일치 판정)

[가정: \(B=(b_1,\ldots,b_r)\)\(V\)의 유한한 기저, \(S,T:V\to W\)는 모두 선형] 모든 \(i\)에서 \(S(b_i)=T(b_i)\)이면 \(S=T\)입니다.

Proof. 임의의 \(v\in V\)를 잡습니다. 기저의 생성 성질로 \(v=\sum_i c_i b_i\)라고 쓸 수 있습니다. 그러면

\[\begin{split} \begin{aligned} S(v)&=S\left(\sum_i c_i b_i\right) &&\text{($v$의 표현 대입)}\\ &=\sum_i c_iS(b_i) &&\text{(2.1절의 유한합 규칙, $S$의 선형성)}\\ &=\sum_i c_iT(b_i) &&\text{(기저에서 일치한다는 가정)}\\ &=T\left(\sum_i c_i b_i\right) &&\text{(같은 규칙, $T$의 선형성)}\\ &=T(v). \end{aligned} \end{split}\]

\(v\)는 임의였으므로 모든 입력에서 출력이 같고, 따라서 \(S=T\)입니다.

이 증명에는 기저 표현의 존재만 필요합니다. 유일성까지 쓰지는 않았습니다. 따라서 같은 논증은 유한한 생성목록에서도 성립합니다. 증명에 필요한 가정이 무엇인지 읽으면 정리를 더 정확히 이해할 수 있습니다.

반례. 선형성이 빠지면 어떨까요? \(f:\mathbb R^2\to\mathbb R^2\)\(f(e_1)=e_1\), \(f(e_2)=e_2\), 그 밖의 입력에서는 \(f(v)=0\)으로 정합니다. 항등사상 \(I(v)=v\)와 기저에서 같지만 \(f(1,1)=0\ne(1,1)=I(1,1)\)입니다. 실제로

\[ f(e_1+e_2)=0,\qquad f(e_1)+f(e_2)=e_1+e_2=(1,1) \]

이어서 \(f\)는 덧셈을 보존하지 않습니다. 증명의 둘째 줄이 실패하는 정확한 위치입니다.

2.5 “이렇게 정의하자” 뒤에 남는 네 가지 확인#

먼저 두 벡터의 값을 실제로 지정해 보기#

\(B=((1,1),(1,-1))\)에서 각각의 출력을 \((2,0)\), \((0,2)\)로 정합시다. B0에서 \((3,5)=4(1,1)-(1,-1)\)이라고 계산했으므로, 선형으로 확장한다면 출력은 반드시

\[ 4(2,0)-(0,2)=(8,-2) \]

여야 합니다. 일반적인 \((x,y)\)의 두 계수가 \((x+y)/2\), \((x-y)/2\)였으므로 후보는 \(T(x,y)=(x+y,x-y)\)입니다. 후보를 하나 썼다는 사실과, 이 규칙이 모든 입력에서 잘 정의된 유일한 선형사상이라는 결론은 구별해야 합니다. 바로 뒤 증명에서 그 네 단계를 확인합니다.

입력 기저 1,1과 1,-1을 위 패널에, 지정 출력 2,0과 0,2를 아래 패널에 표시. 3,5의 출력은 8,-2이며 같은 계수 4,-1을 사용한다.

그림 5 두 패널은 각각 입력 공간과 출력 공간이며 같은 눈금을 사용합니다. 원점에서 뻗은 선분의 끝점은 성분별로 정한 교육용 벡터입니다. 공간 사이를 옮겨도 선형결합의 계수 4와 -1은 유지됩니다.#

\(v=\sum_i c_i b_i\)로 쓰고 \(T(v)=\sum_i c_i w_i\)라고 정하면 언제 함수가 될까요? 한 입력을 두 방식으로 썼을 때 서로 다른 출력이 나오면 정의가 성립하지 않습니다. 잘 정의된다는 말은 허용된 표현 선택에 따라 출력이 달라지지 않는다는 뜻입니다.

정리 2 (기저에서 지정한 값의 유일한 선형 확장)

[가정: \(B=(b_1,\ldots,b_r)\)\(V\)의 유한한 기저, \(w_1,\ldots,w_r\in W\)] \(T(b_i)=w_i\)를 만족하는 선형사상 \(T:V\to W\)가 유일하게 존재합니다.

Proof. 1. 후보를 구성한다. \(v=\sum_i c_i b_i\)로 쓰고 \(T(v):=\sum_i c_i w_i\)로 정합니다. \(w_i\in W\)이고 \(W\)는 스칼라곱과 유한합에 닫히므로 출력은 \(W\)에 있습니다. 유한합의 닫힘은 두 원소의 합에 대한 닫힘을 \(r-1\)번 적용하여 얻습니다. \(r=0\)이면 출력은 \(0\in W\)입니다.

2. 표현에 의존하지 않는지 확인한다. \(v=\sum_i d_i b_i\)라는 다른 표현이 있다면 좌표 유일성 보조정리에서 \(c_i=d_i\)입니다. 따라서 \(\sum_i c_iw_i=\sum_i d_iw_i\)이고 출력이 같습니다. 모든 \(v\)에 대해 표현이 존재하므로 함수가 모든 입력에 정의되었습니다.

3. 지정한 값과 선형성을 확인한다. \(b_j\)의 좌표는 \(j\)번째만 \(1\), 나머지는 \(0\)입니다. 따라서 \(T(b_j)=w_j\)입니다.

\(v=\sum_i c_i b_i\), \(v'=\sum_i d_i b_i\)라 합시다. 성분별 분배법칙으로

\[ av+bv'=\sum_i(ac_i+bd_i)b_i. \]

이것은 \(av+bv'\)의 기저 표현이므로 후보의 정의에 대입할 수 있습니다.

\[\begin{split} \begin{aligned} T(av+bv') &=\sum_i(ac_i+bd_i)w_i\\ &=\sum_i(ac_iw_i+bd_iw_i)\\ &=a\sum_i c_iw_i+b\sum_i d_iw_i\\ &=aT(v)+bT(v'). \end{aligned} \end{split}\]

\(a=b=1\)을 넣으면 덧셈 보존이고 \(b=0\)을 넣으면 스칼라곱 보존입니다. 따라서 \(T\)는 선형입니다.

4. 다른 후보가 없음을 확인한다. \(S\)도 선형이고 \(S(b_i)=w_i\)라고 합시다. 임의의 \(v=\sum_i c_i b_i\)에 대해

\[ S(v)=\sum_i c_iS(b_i)=\sum_i c_iw_i=T(v). \]

첫 등식은 \(S\)의 선형성, 둘째는 지정값, 셋째는 \(T\)의 정의입니다. 모든 입력에서 같으므로 \(S=T\)입니다. 존재와 유일성을 모두 얻었습니다.

실패하는 정의를 직접 보기. \(b_1=(1,1)\), \(b_2=(1,-1)\), \(b_3=(2,0)\)에는 \(b_3=b_1+b_2\)라는 관계가 있습니다. 여기에 \(w_1=(2,0)\), \(w_2=(0,2)\), \(w_3=(0,0)\)을 지정하면

\[ T(b_3)=w_3=(0,0),\qquad T(b_1+b_2)=w_1+w_2=(2,2) \]

가 되어 같은 입력에 두 출력이 생깁니다. 따라서 이 지정값들을 갖는 선형사상은 없습니다. 종속인 생성목록에서도 일관된 값은 지정할 수 있지만, 그 경우 모든 선형관계를 출력들도 보존하는지 확인해야 합니다.

표현행렬의 존재와 유일성도 여기서 확인한다#

\(B=(b_1,\ldots,b_r)\)\(V\)의 기저, \(C=(c_1,\ldots,c_s)\)\(W\)의 기저이고 \(T:V\to W\)가 선형이라고 합시다. 각 \(j\)에 대해

\[ T(b_j)=\sum_{i=1}^s a_{ij}c_i \]

라는 유일한 좌표가 있습니다. 이 계수로 \(s\times r\) 행렬 \(A=(a_{ij})\)를 만듭니다. \(v=\sum_j x_jb_j\)이면

\[\begin{split} \begin{aligned} T(v)&=\sum_j x_jT(b_j)\\ &=\sum_j x_j\sum_i a_{ij}c_i\\ &=\sum_i\left(\sum_j a_{ij}x_j\right)c_i. \end{aligned} \end{split}\]

유한한 합의 순서를 바꾼 마지막 줄에서 \(C\)-좌표의 \(i\)번째 값은 \(\sum_j a_{ij}x_j\)입니다. 이는 행렬곱 \(A[v]_B\)\(i\)번째 성분입니다. 따라서

\[ [Tv]_C=A[v]_B. \]

다른 행렬 \(D\)도 모든 \(v\)에 대해 이 식을 만족하면 \(v=b_j\)를 대입합니다. \([b_j]_B=e_j\)이므로 \(De_j=[Tb_j]_C=Ae_j\)입니다. \(De_j\)\(D\)\(j\)번째 열입니다. 모든 열이 같으므로 \(D=A\)입니다. 따라서 표현행렬 \([T]_{C\leftarrow B}\)는 존재하며 유일합니다.

2.6 “차원이 같으므로”를 쓰기 전에 증명할 것#

차원을 기저의 벡터 수라고 부르려면, 다른 기저를 골라도 그 수가 같아야 합니다. 그 사실부터 증명하겠습니다. 이 절은 1장 P3의 전체 풀이이기도 합니다.

독립인 벡터를 생성목록에 하나씩 넣는 교환보조정리#

보조정리 3 (유한 교환보조정리)

[가정: 유한한 생성목록] \(g_1,\ldots,g_m\)\(V\)를 생성하고 \(u_1,\ldots,u_r\)\(V\) 안에서 일차독립이면 \(r\le m\)입니다. 생성목록의 원소를 교체하여 \(u_1,\ldots,u_r\)을 모두 포함하는 길이 \(m\)의 생성목록을 만들 수 있습니다.

Proof. 처음에는 생성목록 \(g_1,\ldots,g_m\)이 있습니다. \(m=0\)이면 \(V=\{0\}\)이고, 영벡터를 포함한 목록은 \(1\cdot0=0\)이라는 비자명한 관계 때문에 독립일 수 없습니다. 따라서 \(r=0\)이고 결론이 성립합니다. 이제 \(m>0\)이라 합시다.

\(k\)번 교체하여 \(u_1,\ldots,u_k,h_{k+1},\ldots,h_m\)\(V\)를 생성한다고 가정합니다. \(k=0\)에서는 원래 목록이므로 이 가정이 성립합니다.

아직 넣을 \(u_{k+1}\)이 남아 있고 \(k<m\)이면, 현재 목록이 생성하므로

\[ u_{k+1}=\sum_{i=1}^{k}a_i u_i+\sum_{j=k+1}^{m}b_jh_j. \]

여기서 뒤쪽 계수 \(b_j\)가 전부 \(0\)일 수는 없습니다. 전부 \(0\)이면

\[ u_{k+1}-\sum_{i=1}^k a_i u_i=0 \]

이 되어 \(u_1,\ldots,u_r\) 사이에 \(u_{k+1}\)의 계수가 \(1\)인 관계가 생깁니다. 이는 독립성에 모순입니다. 따라서 어떤 \(\ell>k\)에서 \(b_\ell\ne0\)입니다.

그 항을 남기고 옮긴 다음 \(b_\ell\)로 나누면

\[\begin{split} h_\ell=\frac{1}{b_\ell}u_{k+1} -\sum_{i=1}^k\frac{a_i}{b_\ell}u_i -\sum_{\substack{j=k+1\\j\ne\ell}}^m \frac{b_j}{b_\ell}h_j. \end{split}\]

이 식은 빼려는 \(h_\ell\)이 새로 넣은 \(u_{k+1}\)과 나머지 목록의 결합임을 보여 줍니다. 원래 임의의 \(v\in V\)는 옛 목록의 결합이었습니다. 그 결합에서 \(h_\ell\)이 나타나는 자리에 위 식을 대입하면 \(v\)는 새 목록의 결합이 됩니다. 따라서 교체 뒤에도 생성합니다. 새 목록의 벡터들도 \(V\)에 속하므로 생성범위가 \(V\) 밖으로 커지지도 않습니다.

이 과정을 반복합니다. 만약 \(r>m\)이면 \(m\)번 교체한 뒤 \(u_1,\ldots,u_m\)\(V\)를 생성합니다. 따라서 \(u_{m+1}\)도 이들의 결합이어서 독립성에 모순입니다. 그러므로 \(r\le m\)입니다. 실제로 \(r\)번 교체하면 원하는 생성목록을 얻습니다.

여기서의 작은 논리. 독립인 목록의 일부도 독립입니다. 일부에 비자명한 영결합이 있으면 빠진 원소들의 계수를 \(0\)으로 채워 전체 목록의 비자명한 영결합을 만들 수 있기 때문입니다. 위 증명에서 앞부분의 관계가 전체 독립성과 충돌하는 이유입니다.

두 기저의 크기와 차원의 정의#

\(B=(b_1,\ldots,b_r)\), \(C=(c_1,\ldots,c_s)\)\(V\)의 기저라 합시다. \(B\)는 독립이고 \(C\)는 생성하므로 교환보조정리에서 \(r\le s\)입니다. 이번에는 \(C\)를 독립목록, \(B\)를 생성목록으로 넣으면 \(s\le r\)입니다. 두 부등식을 합쳐 \(r=s\)입니다.

유한한 생성목록이 있으면 유한한 기저도 얻을 수 있습니다. 그 목록이 종속이면 어떤 관계 \(\sum_i a_i g_i=0\)에서 \(a_j\ne0\)인 항을 고릅니다. 그러면

\[ g_j=-\sum_{i\ne j}\frac{a_i}{a_j}g_i \]

이므로 \(g_j\)를 빼도 나머지가 같은 공간을 생성합니다. 남은 목록이 종속이면 다시 하나를 뺍니다. 매번 원소 수가 \(1\)씩 감소하므로 유한 번 뒤 독립인 생성목록에 도달합니다. 영공간이면 빈 목록에서 끝날 수 있습니다. 따라서 기저를 얻습니다.

이제 유한하게 생성되는 공간의 차원 \(\dim V\)를 기저의 원소 수라고 정의할 수 있습니다. 방금 증명한 크기 불변성 덕분에 이 정의가 기저 선택에 의존하지 않습니다.

포함과 같은 차원은 왜 등식을 주는가#

보조정리 4 (포함과 유한한 같은 차원)

[가정: \(U\subseteq W\), \(\dim U=\dim W=r<\infty\)] \(U=W\)입니다.

Proof. \(U\)의 기저를 \(u_1,\ldots,u_r\)라 합시다. \(U\ne W\)라고 가정하면 \(w\in W\setminus U\)가 있습니다. 목록 \(u_1,\ldots,u_r,w\)가 독립임을 보이겠습니다.

\[ a_1u_1+\cdots+a_ru_r+bw=0 \]

이라고 합시다. \(b\ne0\)이면 \(w=-\sum_i(a_i/b)u_i\in U\)여서 \(w\notin U\)와 모순입니다. 따라서 \(b=0\)입니다. 그러면 \(\sum_i a_i u_i=0\)이고 \(U\)의 기저 독립성에서 모든 \(a_i=0\)입니다. 따라서 길이 \(r+1\)의 독립목록을 얻었습니다.

한편 \(W\)에는 길이 \(r\)의 생성기저가 있습니다. 교환보조정리는 독립목록의 길이가 생성목록의 길이를 넘을 수 없다고 하므로 \(r+1\le r\)을 얻어 모순입니다. 따라서 \(W\setminus U\)는 비어 있고 \(W\subseteq U\)입니다. 가정의 \(U\subseteq W\)와 합쳐 \(U=W\)입니다.

계산으로 비교하기. \(U=\operatorname{span}((1,1,0),(0,1,1))\), \(W=\{x:x_1-x_2+x_3=0\}\)라 합시다. \(U\)의 벡터는 \((a,a+b,b)\)이고

\[ a-(a+b)+b=a-a-b+b=0 \]

이므로 \(U\subseteq W\)입니다. 반대로 \(x\in W\)이면 \(x_2=x_1+x_3\)이므로

\[ x=(x_1,x_1+x_3,x_3)=x_1(1,1,0)+x_3(0,1,1)\in U. \]

이번에는 양쪽 포함으로 끝냈습니다. 또 \(a(1,1,0)+b(0,1,1)=(a,a+b,b)=0\)이면 첫째·셋째 성분에서 \(a=b=0\)이므로 두 벡터는 독립입니다. 같은 두 벡터가 \(W\)도 생성함을 위에서 보였으므로 양쪽 차원은 \(2\)입니다. 차원 판정법을 사용해도 같은 결론입니다.

“차원이 같다”만으로는 부족합니다. \(\operatorname{span}((1,0))\)\(\operatorname{span}((0,1))\)은 각각 \(0\) 아닌 벡터 하나를 기저로 가지므로 차원이 \(1\)이지만, \((1,0)\)은 둘째 공간에 없으므로 두 공간이 다릅니다. 포함 가정이 필요합니다.

2.7 대우와 모순: 합집합이 부분공간인 경우#

\(P\Rightarrow Q\)의 대우는 \(\neg Q\Rightarrow\neg P\)입니다. 두 문장은 모두 “\(P\)가 참인데 \(Q\)가 거짓인 경우는 없다”고 말하므로 동치입니다. 모순법은 결론의 부정을 추가로 가정한 뒤 양립할 수 없는 두 사실을 얻는 방식입니다.

명제 2 (두 부분공간의 합집합 판정)

[가정: \(U,W\subseteq V\)는 부분공간] \(U\cup W\)가 부분공간일 필요충분조건은 \(U\subseteq W\) 또는 \(W\subseteq U\)입니다.

Proof. 포함관계가 있으면. \(U\subseteq W\)이면 \(U\cup W=W\)입니다. 합집합의 원소는 \(U\) 또는 \(W\)에 있고, \(U\)에 있는 경우도 \(W\)에 속하므로 합집합이 \(W\)에 포함됩니다. 역으로 \(W\)의 원소는 합집합의 원소이므로 등식입니다. \(W\)는 부분공간입니다.

\(W\subseteq U\)이면 합집합의 원소가 어느 쪽에서 왔든 \(U\)에 있고, \(U\)의 모든 원소는 합집합에 있습니다. 따라서 \(U\cup W=U\)이며 역시 부분공간입니다.

반대 방향은 대우로. 두 포함관계가 모두 실패한다고 가정합니다. \(U\not\subseteq W\)이므로 \(u\in U\setminus W\)가 있고, \(W\not\subseteq U\)이므로 \(w\in W\setminus U\)가 있습니다.

\(v=u+w\)라 합시다. 만약 \(v\in U\)라면, \(u\in U\)와 스칼라곱 닫힘에서 \(-u\in U\)입니다. 덧셈 닫힘에서

\[ v+(-u)=(u+w)-u=w\in U \]

가 되어 \(w\notin U\)와 모순입니다. 따라서 \(v\notin U\)입니다.

만약 \(v\in W\)라면, \(w\in W\)와 스칼라곱 닫힘에서 \(-w\in W\)입니다. 덧셈 닫힘에서

\[ v+(-w)=(u+w)-w=u\in W \]

가 되어 \(u\notin W\)와 모순입니다. 따라서 \(v\notin W\)입니다.

\(u,w\)는 둘 다 \(U\cup W\)의 원소이지만 합 \(v\)는 어느 쪽에도 없습니다. 따라서 합집합은 덧셈에 닫히지 않아 부분공간이 아닙니다. 대우를 증명했으므로 원래 함의도 성립합니다.

이 증명은 차원을 세지 않았습니다. 각 단계에서 쓴 것은 소속 조건과 부분공간의 닫힘입니다. “부분공간의 차집합에서 원소를 고른다”는 동작이 가능한 이유는 포함관계의 부정이 바로 그런 원소의 존재를 뜻하기 때문입니다.

2.8 사영: \(P^2=P\) 한 줄을 끝까지 풀기#

먼저 사용할 행렬 규칙을 증명한다#

행렬의 결합법칙은 수의 결합법칙과 곱의 정의에서 나옵니다. \(A\)\(m\times n\), \(B\)\(n\times p\), \(C\)\(p\times q\)라 합시다. 각 \(i,j\)에서

\[\begin{split} \begin{aligned} ((AB)C)_{ij} &=\sum_{k=1}^{p}(AB)_{ik}c_{kj}\\ &=\sum_{k=1}^{p}\sum_{\ell=1}^{n}a_{i\ell}b_{\ell k}c_{kj}\\ &=\sum_{\ell=1}^{n}a_{i\ell}\left(\sum_{k=1}^{p}b_{\ell k}c_{kj}\right)\\ &=\sum_{\ell=1}^{n}a_{i\ell}(BC)_{\ell j}\\ &=(A(BC))_{ij}. \end{aligned} \end{split}\]

셋째 줄에서는 유한한 실수 합의 순서를 바꾸고 분배법칙으로 묶었습니다. 모든 성분이 같으므로 \((AB)C=A(BC)\)입니다. 이 결과는 정확한 실수 산술의 등식이며 1장의 반올림 연산과 구별합니다.

분배법칙도 \((A(B+C))_{ij}=\sum_k a_{ik}(b_{kj}+c_{kj})=(AB)_{ij}+(AC)_{ij}\)이고, \(((A+B)C)_{ij}=\sum_k(a_{ik}+b_{ik})c_{kj}=(AC)_{ij}+(BC)_{ij}\)이므로 양쪽 모두 성립합니다.

항등행렬 \(I\)는 대각성분이 \(1\), 나머지가 \(0\)인 행렬입니다. \((AI)_{ij}\)의 합에서는 \(k=j\)인 항만 남아 \(a_{ij}\)이고, \((IA)_{ij}\)에서는 \(k=i\)인 항만 남아 \(a_{ij}\)입니다. 따라서 \(AI=IA=A\)입니다.

전치의 곱 규칙은

\[ ((AB)^{\mathsf T})_{ij}=(AB)_{ji} =\sum_k a_{jk}b_{ki} =\sum_k (B^{\mathsf T})_{ik}(A^{\mathsf T})_{kj} =(B^{\mathsf T}A^{\mathsf T})_{ij} \]

에서 얻습니다. 그러므로 \((AB)^{\mathsf T}=B^{\mathsf T}A^{\mathsf T}\)이며 순서가 뒤집힙니다.

역행렬은 \(GH=HG=I\)\(H\)입니다. \(H,K\)가 둘 다 역행렬이면 \(H=HI=H(GK)=(HG)K=IK=K\)이므로 유일합니다. \(G\)가 가역이면

\[ G^{\mathsf T}(G^{-1})^{\mathsf T}=(G^{-1}G)^{\mathsf T}=I, \quad (G^{-1})^{\mathsf T}G^{\mathsf T}=(GG^{-1})^{\mathsf T}=I. \]

따라서 \((G^{\mathsf T})^{-1}=(G^{-1})^{\mathsf T}\)입니다.

좌표식으로 멱등성을 계산한다#

가정은 \(X\in\mathbb R^{n\times k}\), \(G=X^{\mathsf T}X\)가 가역이라는 것입니다. \(G\)\(k\times k\)이고

\[ P=XG^{-1}X^{\mathsf T} \]

\(n\times n\)입니다. 멱등이라는 말은 \(P^2=P\)라는 뜻입니다.

\[\begin{split} \begin{aligned} P^2 &=(XG^{-1}X^{\mathsf T})(XG^{-1}X^{\mathsf T}) &&\text{($P$의 정의)}\\ &=XG^{-1}(X^{\mathsf T}X)G^{-1}X^{\mathsf T} &&\text{(결합법칙)}\\ &=XG^{-1}GG^{-1}X^{\mathsf T} &&\text{($G$의 정의)}\\ &=X(G^{-1}G)G^{-1}X^{\mathsf T} &&\text{(결합법칙)}\\ &=XI_kG^{-1}X^{\mathsf T} &&\text{(역행렬의 정의)}\\ &=XG^{-1}X^{\mathsf T}=P. \end{aligned} \end{split}\]

이제 다른 성질도 확인합니다. \(G^{\mathsf T}=(X^{\mathsf T}X)^{\mathsf T}=X^{\mathsf T}X=G\)이고, 위 역행렬 전치 규칙에서 \((G^{-1})^{\mathsf T}=G^{-1}\)입니다. 따라서

\[ P^{\mathsf T} =(X^{\mathsf T})^{\mathsf T}(G^{-1})^{\mathsf T}X^{\mathsf T} =XG^{-1}X^{\mathsf T}=P. \]

또한

\[ PX=XG^{-1}X^{\mathsf T}X=XG^{-1}G=XI_k=X, \]
\[ P(I_n-P)=PI_n-P^2=P-P=0. \]

각 곱에서는 순서를 바꾸지 않았습니다. 괄호만 결합법칙으로 옮겼습니다.

trace 항등식도 합을 써서 증명한다#

정사각행렬의 대각합(trace)은 \(\operatorname{tr}A=\sum_i a_{ii}\)입니다. \(A\)\(m\times n\), \(B\)\(n\times m\)이면

\[\begin{split} \begin{aligned} \operatorname{tr}(AB) &=\sum_{i=1}^m\sum_{j=1}^n a_{ij}b_{ji}\\ &=\sum_{j=1}^n\sum_{i=1}^m b_{ji}a_{ij}\\ &=\operatorname{tr}(BA). \end{aligned} \end{split}\]

가운데 등식은 유한합의 순서 교환과 실수 곱의 교환법칙입니다. 따라서 위 \(P\)에서는

\[ \operatorname{tr}P =\operatorname{tr}\bigl((XG^{-1})X^{\mathsf T}\bigr) =\operatorname{tr}\bigl(X^{\mathsf T}(XG^{-1})\bigr) =\operatorname{tr}(GG^{-1}) =\operatorname{tr}I_k=k. \]

이 식을 “아무 순서로 행렬을 바꿔도 된다”로 읽으면 안 됩니다. 순서에 관한 반례는 랩에서 정확한 정수 행렬로 확인합니다.

멱등성에는 수직이라는 뜻이 들어 있지 않다#

\[\begin{split} Q=\begin{bmatrix}1&1\\0&0\end{bmatrix} \end{split}\]

이면

\[\begin{split} Q^2=\begin{bmatrix} 1\cdot1+1\cdot0&1\cdot1+1\cdot0\\ 0\cdot1+0\cdot0&0\cdot1+0\cdot0 \end{bmatrix} =\begin{bmatrix}1&1\\0&0\end{bmatrix}=Q. \end{split}\]

그러나 \(Q^{\mathsf T}=\begin{bmatrix}1&0\\1&0\end{bmatrix}\ne Q\)입니다. 따라서 \(P^2=P\)만으로 \(P^{\mathsf T}=P\)를 얻을 수 없습니다. 멱등성이 정말 말하는 것은 무엇일까요?

벡터를 두 부분으로 유일하게 나누기#

부분공간 \(U,W\subseteq V\)보완적이라는 말은 모든 \(v\in V\)가 유일하게

\[ v=u+w,\qquad u\in U,\quad w\in W \]

로 쓰인다는 뜻입니다. 이를 \(V=U\oplus W\)라고 적습니다. \(\oplus\)는 직합 기호입니다. “유일하게”는 두 분해 \(u+w=u'+w'\)가 있으면 \(u=u'\), \(w=w'\)라는 뜻입니다.

이때 \(P_{U,W}(v)=u\)라고 정의합니다. 이를 \(W\)를 따라 \(U\) 위로 보내는 사영이라 합니다. 분해가 존재하므로 모든 입력에 값을 주고, 분해가 유일하므로 값이 잘 정의됩니다.

선형사상 \(P\)

\[ \operatorname{im}P=\{Pv:v\in V\},\qquad \ker P=\{v\in V:Pv=0\} \]

입니다. 둘 다 부분공간임을 먼저 확인하겠습니다. 상은 \(P0=0\)을 포함합니다. \(a=Px\), \(b=Py\)이면 \(ca+b=P(cx+y)\)이므로 상에 남습니다. 2.2절 판정법에서 부분공간입니다. 핵은 \(P0=0\)이므로 비어 있지 않고, \(Px=Py=0\)이면 \(P(cx+y)=cPx+Py=0\)이므로 역시 같은 판정법에서 부분공간입니다.

정리 3 (사영과 멱등성의 동치)

[가정: 실수 좌표공간의 부분공간 \(V\)]

(a) \(V=U\oplus W\)이면 \(P=P_{U,W}\)는 선형이고 \(P^2=P\), \(\operatorname{im}P=U\), \(\ker P=W\)입니다.

(b) 선형사상 \(P:V\to V\)\(P^2=P\)를 만족하면 \(V=\operatorname{im}P\oplus\ker P\)이고, \(P\)는 이 분해의 사영입니다.

Proof. (a)의 선형성. \(v=u+w\), \(v'=u'+w'\)를 각각 유일한 분해라고 합시다. 그러면

\[ av+bv'=(au+bu')+(aw+bw'). \]

\(U\)의 닫힘 때문에 \(au+bu'\in U\)이고 \(W\)의 닫힘 때문에 \(aw+bw'\in W\)입니다. 따라서 이것은 허용된 분해입니다. 분해의 유일성에 의해 \(P\)가 선택하는 \(U\) 성분은 \(au+bu'\)입니다. 즉

\[ P(av+bv')=au+bu'=aPv+bPv' \]

이므로 선형입니다.

(a)의 멱등성. \(u\in U\)이면 \(u=u+0\)\(U,W\)에 따른 분해입니다. \(0\in W\)이므로 허용되며 유일성에서 \(Pu=u\)입니다. 임의의 \(v\)에 대해 \(Pv\in U\)이므로 \(P(Pv)=Pv\)입니다. 따라서 \(P^2=P\)입니다.

(a)의 상. \(a\in\operatorname{im}P\)이면 어떤 \(v\)에서 \(a=Pv\)이고 정의에 의해 \(Pv\in U\)이므로 \(a\in U\)입니다. 따라서 \(\operatorname{im}P\subseteq U\)입니다. 역으로 \(u\in U\)이면 \(u=Pu\)여서 \(u\)는 실제 출력입니다. 따라서 \(U\subseteq\operatorname{im}P\)이고 상은 \(U\)입니다.

(a)의 핵. \(v\in\ker P\)이면 분해 \(v=u+w\)에서 \(u=Pv=0\)입니다. 따라서 \(v=w\in W\)입니다. 역으로 \(w\in W\)이면 \(w=0+w\)라는 유일 분해에서 \(Pw=0\)이므로 \(w\in\ker P\)입니다. 양쪽 포함으로 핵은 \(W\)입니다.

(b)의 분해 존재. 임의의 \(v\in V\)에 대해

\[ v=Pv+(v-Pv) \]

라고 씁니다. 첫 항은 출력이므로 상에 있습니다. 둘째 항에 \(P\)를 적용하면

\[ P(v-Pv)=Pv-P(Pv)=Pv-P^2v=Pv-Pv=0 \]

이므로 핵에 있습니다. 따라서 분해가 존재합니다.

(b)의 분해 유일성. \(v=a+b\), \(a\in\operatorname{im}P\), \(b\in\ker P\)인 임의의 분해를 잡습니다. \(a\)가 상에 있으므로 \(a=Px\)\(x\)가 있습니다. 따라서 \(Pa=P(Px)=P^2x=Px=a\)이고 \(Pb=0\)입니다. 그러면

\[ Pv=P(a+b)=Pa+Pb=a+0=a. \]

즉 첫 성분은 반드시 \(a=Pv\)입니다. 둘째 성분도 \(b=v-a=v-Pv\)로 강제됩니다. 모든 분해가 같은 두 성분을 가지므로 유일합니다.

따라서 \(V=\operatorname{im}P\oplus\ker P\)이며 그 분해에서 상의 성분을 선택하는 함수는 바로 \(P\)입니다.

수치 예제를 이 정리에 연결하기. \(Q(x,y)=(x+y,0)\)이므로 상은 \(x\)축입니다. 모든 출력이 \(x\)축에 있고, 임의의 \((t,0)\)\(Q(t,0)\)이므로 양쪽 포함이 성립합니다. \(Q(x,y)=0\)\(x+y=0\)이므로 핵은 \(\{(t,-t):t\in\mathbb R\}\)입니다.

따라서

\[ (3,5)=Q(3,5)+\bigl((3,5)-Q(3,5)\bigr) =(8,0)+(-5,5). \]

\((8,0)\)은 상에 있고 \(Q(-5,5)=(-5+5,0)=0\)이므로 둘째 조각은 핵에 있습니다. 다른 분해 \((3,5)=(a,0)+(t,-t)\)가 있다면 \(-t=5\)에서 \(t=-5\), \(a+t=3\)에서 \(a=8\)이므로 같은 분해입니다.

평면의 점 3,5를 Q는 8,0으로, 대칭 사영 P0는 3,0으로 보낸다. Q의 제거 방향 -5,5는 수직이 아니며 두 결과 모두 재적용하면 움직이지 않는다.

그림 6 \(Q(x,y)=(x+y,0)\)\(P_0(x,y)=(x,0)\)는 같은 가로축 위로 보내지만 버리는 방향이 다릅니다. 점에서 \(Qv\)로 가는 점선은 \(\ker Q\)와 평행합니다. 멱등성만으로 수직 방향을 고를 수는 없습니다.#

그림·좌표·정리의 관계. 한 번 보낸 점을 다시 보내도 움직이지 않는 그림은 \(P(Pv)=Pv\)를 예상하게 합니다. 좌표 계산은 주어진 \(P\)에 대해 이 식을 확인합니다. 방금 정리는 왜 모든 선형 멱등사상에 유일한 분해가 있는지 설명합니다. 세 설명을 함께 읽되 그림에 보이는 “수직”을 현재 정리의 가정이나 결론에 추가하지 마세요. 직교사영은 내적을 정의한 뒤 다룰 별도의 주제입니다.

회귀 예제의 상과 핵까지 확인하기#

다시 \(G=X^{\mathsf T}X\)가 가역이고 \(P=XG^{-1}X^{\mathsf T}\)인 경우입니다. \(\operatorname{col}X=\{Xc:c\in\mathbb R^k\}\)라 쓰면

\[ \operatorname{im}P=\operatorname{col}X,\qquad \ker P=\ker X^{\mathsf T} \]

입니다. 둘째 등식에도 내적 정리가 필요한 것은 아닙니다. 다음 대수 계산으로 충분합니다.

상에 대해서는 \(Pv=X(G^{-1}X^{\mathsf T}v)\)이므로 모든 출력이 열공간에 있습니다. 반대로 \(Xc\)\(P(Xc)=(PX)c=Xc\)라는 실제 출력이므로 상에 있습니다.

핵에 대해서는 \(X^{\mathsf T}v=0\)이면 \(Pv=XG^{-1}0=0\)입니다. 반대로 \(Pv=0\)이면

\[ X^{\mathsf T}P=X^{\mathsf T}XG^{-1}X^{\mathsf T} =GG^{-1}X^{\mathsf T}=X^{\mathsf T} \]

를 이용하여 \(X^{\mathsf T}v=X^{\mathsf T}Pv=0\)을 얻습니다. 양쪽 포함을 모두 확인했습니다.

1장의 구체적인 \(X,y\)에서는

\[ Py=(3/2,2,5/2),\qquad y-Py=(1/2,-1,1/2). \]

첫 조각은 \(2(1,1,1)+(1/2)(-1,0,1)\)이어서 열공간에 있습니다. 둘째 조각은

\[\begin{split} X^{\mathsf T}(y-Py) =\begin{bmatrix}1/2-1+1/2\\-1/2+0+1/2\end{bmatrix} =\begin{bmatrix}0\\0\end{bmatrix} \end{split}\]

이어서 핵에 있습니다. 추상적인 두 조각이 실제 계산의 어떤 벡터인지 확인했습니다.

2.9 증명 읽기: 그 줄에서 실제로 쓴 가정 찾기#

\(y=X\beta+u\), \(G=X^{\mathsf T}X\)가 가역이라고 합시다. \(\widehat\beta=G^{-1}X^{\mathsf T}y\)로 정하면

\[\begin{split} \begin{aligned} \widehat\beta-\beta &=G^{-1}X^{\mathsf T}y-\beta &&\text{(정의)}\\ &=G^{-1}X^{\mathsf T}(X\beta+u)-\beta &&\text{($y=X\beta+u$ 대입)}\\ &=G^{-1}X^{\mathsf T}X\beta+G^{-1}X^{\mathsf T}u-\beta &&\text{(분배·결합법칙)}\\ &=(G^{-1}G)\beta+G^{-1}X^{\mathsf T}u-\beta &&\text{($G$의 정의)}\\ &=\beta+G^{-1}X^{\mathsf T}u-\beta &&\text{(역행렬의 정의)}\\ &=G^{-1}X^{\mathsf T}u. \end{aligned} \end{split}\]

각 줄에 이유를 붙이면 이 식에서 확률 가정을 쓰지 않았다는 것도 보입니다. 이것은 고정된 배열에 관한 항등식입니다.

1장의 \(X\)\(\beta=(1,1)^{\mathsf T}\), \(u=(1,0,2)^{\mathsf T}\)를 넣어 보겠습니다.

\[ X\beta=(1-1,1+0,1+1)^{\mathsf T}=(0,1,2)^{\mathsf T}, \]
\[ y=X\beta+u=(1,1,4)^{\mathsf T},\quad X^{\mathsf T}y=(1+1+4,-1+0+4)^{\mathsf T}=(6,3)^{\mathsf T}. \]

따라서 \(\widehat\beta=(6/3,3/2)=(2,3/2)\)입니다. 항등식의 오른쪽도

\[ X^{\mathsf T}u=(1+0+2,-1+0+2)^{\mathsf T}=(3,1)^{\mathsf T}, \]
\[ G^{-1}X^{\mathsf T}u=(3/3,1/2)=(1,1/2) =\widehat\beta-\beta \]

로 같습니다. 예고: 이 항등식에 확률모형과 적분 가능성 등의 조건을 더하면 통계적 성질을 연구할 수 있습니다. 현재 등식만으로 불편성이나 일치성을 얻지는 않습니다.

실수의 제곱합 성질을 몰래 쓰지 않기#

\(X\)의 열이 독립이면 \(X^{\mathsf T}X\)가 가역이다”라는 사실을 현재 도구로도 증명할 수 있습니다. 필요한 짧은 다리를 하나 더 놓겠습니다.

정사각행렬 \(G\in\mathbb R^{k\times k}\)에 대해 \(\ker G=\{0\}\)이면 열들이 독립입니다. 실제로 열들의 결합 \(\sum_j c_jGe_j=G(\sum_j c_je_j)=Gc=0\)이면 \(c=0\)입니다. 길이 \(k\)인 이 독립목록은 \(\mathbb R^k\)를 생성합니다. 생성하지 않는다면 생성범위 밖의 벡터 하나를 덧붙여 길이 \(k+1\)의 독립목록을 만들 수 있는데, 2.6절의 같은 논증과 표준기저의 길이 \(k\)에 교환보조정리를 적용하면 모순입니다.

따라서 모든 \(y\)마다 \(Gc=y\)의 해가 존재합니다. 두 해 \(c,d\)가 있으면 \(G(c-d)=0\)이므로 \(c=d\)여서 유일합니다. \(G\)의 열을 \(g_j\)라 하면, 2.5절 확장정리로 \(H(g_j)=e_j\)인 선형사상이 있습니다. 모든 \(c\)에 대해 \(H(Gc)=c\)이고, 모든 \(y=Gc\)에 대해 \(G(Hy)=Gc=y\)입니다. 표준좌표의 표현행렬도 \(HG=GH=I\)를 만족하므로 \(G\)는 가역입니다.

이제 \(X\)의 열이 독립이라고 가정하고 \(Gz=0\)이라 합시다. 왼쪽에 \(z^{\mathsf T}\)를 곱하면

\[ 0=z^{\mathsf T}Gz =z^{\mathsf T}X^{\mathsf T}Xz =(Xz)^{\mathsf T}(Xz) =\sum_{i=1}^n (Xz)_i^2. \]

각 항은 실수의 제곱이어서 음이 아닙니다. 하나라도 양수이면 나머지가 음이 아니므로 전체 합도 양수여야 합니다. 합이 \(0\)이므로 모든 항이 \(0\)입니다. 실수 \(a\)\(a^2=0\)이면 \(a\ne0\)일 경우 \(a\)로 나누어 \(a=0\)이라는 모순을 얻으므로 실제로 \(a=0\)입니다. 따라서 \(Xz=0\)입니다. 열의 독립성에서 \(z=0\)이고, 방금 증명한 정사각행렬 판정에서 \(G\)는 가역입니다.

역으로 \(G\)가 가역이면 \(Xz=0\)에서 \(Gz=X^{\mathsf T}Xz=0\)을 얻고 \(z=G^{-1}0=0\)입니다. 따라서 열들이 독립입니다. 두 방향을 모두 증명했습니다.

복소수에서 전치를 그대로 쓰면 제곱합 단계가 실패합니다. \(X=(1,i)^{\mathsf T}\)는 첫 성분이 \(1\)이므로 \(cX=0\)이면 \(c=0\)이고, 따라서 열이 독립입니다. 그러나 \(X^{\mathsf T}X=1+i^2=0\)입니다. \(0\)이라는 \(1\times1\) 행렬은 어떤 수와 곱해도 \(0\)이므로 역행렬이 없습니다. “제곱합이 \(0\)이면 각 성분이 \(0\)”이라는 문장에 실수라는 가정이 쓰였던 것입니다.

2.10 계산 랩: 반증 후보를 찾고 정확한 계산으로 확인한다#

수치 실험에서 작은 차이가 나왔다면 참인 항등식의 반올림 오차일 수도 있습니다. 큰 차이를 찾았더라도 먼저 입력이 가정을 만족하는지 확인해야 합니다. 이 랩은 탐색과 확정 검산을 구별합니다.

행렬의 크기를 재는 하나의 방법으로 Frobenius 노름을 사용합니다.

\[ \|A\|_F=\sqrt{\sum_{i,j}a_{ij}^2}. \]

실수 행렬에서는 성분의 제곱합이 \(0\)일 때만 행렬이 \(0\)이므로 \(\|A-B\|_F=0\)\(A=B\)와 동치입니다. 여기서는 노름의 다른 성질을 정리로 사용하지 않습니다.

반례 입력을 보관하는 탐색기#

다음 탐색기는 최대 위반량뿐 아니라 그 입력 전체를 보관합니다. 난수는 sampler에서만 만들고, violation은 전달받은 입력을 그대로 평가합니다. 그렇지 않으면 출력된 반례를 다시 넣었을 때 같은 검산을 할 수 없습니다.

import numpy as np

def probe(violation, sampler, trials=500, seed=20260101):
    rng = np.random.default_rng(seed)
    maximum = -1.0
    witness = None
    for _ in range(trials):
        sample = sampler(rng)
        value = float(violation(*sample))
        if not np.isfinite(value) or value < 0:
            raise ValueError("위반량은 유한한 음이 아닌 수여야 합니다.")
        if value > maximum:
            maximum = value
            witness = tuple(a.copy() for a in sample)
    return maximum, witness

def pair(rng):
    return tuple(rng.standard_normal((3, 3)) for _ in range(2))

def triple(rng):
    return tuple(rng.standard_normal((3, 3)) for _ in range(3))

def trace_pair(A, B):
    scale = max(1.0, np.linalg.norm(A, "fro") * np.linalg.norm(B, "fro"))
    return abs(np.trace(A @ B) - np.trace(B @ A)) / scale

def trace_reverse(A, B, C):
    return abs(np.trace(A @ B @ C) - np.trace(C @ B @ A))

small, _ = probe(trace_pair, pair)
large, witness = probe(trace_reverse, triple)
print("두 인자 대각합의 스케일 보정 차이:", small)
print("세 인자 순서 반전의 최대 차이:", large)
print("그 입력에서 재계산:", trace_reverse(*witness))
assert small < 1e-12
assert large > 1.0
assert trace_reverse(*witness) == large
두 인자 대각합의 스케일 보정 차이: 1.5784279406866074e-16
세 인자 순서 반전의 최대 차이: 27.52024545294767
그 입력에서 재계산: 27.52024545294767

첫 명제는 2.8절에서 이미 증명했습니다. 작은 관측값이 증명의 대체물이 아닙니다. 둘째 명제 \(\operatorname{tr}(ABC)=\operatorname{tr}(CBA)\)는 거짓이며 다음 정수 반례로 확정할 수 있습니다.

\[\begin{split} A=\begin{bmatrix}0&0\\0&1\end{bmatrix},\quad B=\begin{bmatrix}0&0\\1&0\end{bmatrix},\quad C=\begin{bmatrix}0&1\\0&0\end{bmatrix}. \end{split}\]
\[\begin{split} AB=\begin{bmatrix}0&0\\1&0\end{bmatrix},\quad ABC=\begin{bmatrix}0&0\\0&1\end{bmatrix}, \end{split}\]
\[\begin{split} CB=\begin{bmatrix}1&0\\0&0\end{bmatrix},\quad CBA=\begin{bmatrix}0&0\\0&0\end{bmatrix}. \end{split}\]

예를 들어 \((ABC)_{22}=1\cdot1+0\cdot0=1\)이고, \(CBA\)의 첫째 행은 \((1,0)A=(0,0)\), 둘째 행도 \((0,0)\)입니다. 따라서 두 대각합은 \(1\)\(0\)입니다. 곱의 순서를 순환시키는 것과 반전시키는 것은 다릅니다.

import numpy as np

A = np.array([[0, 0], [0, 1]], dtype=np.int64)
B = np.array([[0, 0], [1, 0]], dtype=np.int64)
C = np.array([[0, 1], [0, 0]], dtype=np.int64)
assert np.trace(A @ B @ C) == 1
assert np.trace(C @ B @ A) == 0

Q = np.array([[1, 1], [0, 0]], dtype=np.int64)
assert np.array_equal(Q @ Q, Q)       # 가정부터 검사
assert not np.array_equal(Q.T, Q)    # 결론의 실패를 검사
print("정수 반례 두 개의 검산 완료")
정수 반례 두 개의 검산 완료

이 입력들은 작아서 정수 자료형의 범위를 넘지 않습니다. 손으로 쓴 정수 계산과 정확하게 대응합니다. 무작위 탐색에서 반례가 안 나왔다는 사실만으로 보편명제를 참이라고 결론낼 수는 없습니다.

입력 크기와 해의 민감도를 구별하기#

스케일을 키우면 작은 절대 오차도 함께 커질 수 있습니다. 해의 민감도는 다른 질문입니다. 입력을 조금 바꿨을 때 답이 얼마나 바뀌는지를 묻습니다.

\[\begin{split} A_\delta=\begin{bmatrix}1&1\\1&1+\delta\end{bmatrix},\quad x_*=\begin{bmatrix}1\\1\end{bmatrix},\quad b=A_\delta x_*=\begin{bmatrix}2\\2+\delta\end{bmatrix}, \quad \delta>0. \end{split}\]

두 번째 \(b\) 성분에 \(\eta\)를 더한 해를 \(\widetilde x\)라 합시다. 두 식을 빼면 \(\delta\widetilde x_2=\delta+\eta\)이므로

\[ \widetilde x_2=1+\frac{\eta}{\delta},\qquad \widetilde x_1=2-\widetilde x_2=1-\frac{\eta}{\delta}. \]

따라서 입력 변화는 \((0,\eta)\)인데 해의 변화는 \((-\eta/\delta,\eta/\delta)\)입니다. 작은 \(\delta\)로 나누는 것이 증폭의 원인입니다. 이것은 반올림 오차가 없는 실수 계산에서도 나타나는 현상입니다.

import numpy as np

eta = 1e-12
for delta in [1e-2, 1e-6, 1e-10]:
    A = np.array([[1., 1.], [1., 1. + delta]])
    exact_x = np.ones(2)
    b = A @ exact_x
    changed_b = b + np.array([0., eta])
    found = np.linalg.solve(A, changed_b)
    print(f"delta={delta:.0e}, 예측 성분변화={eta/delta:.3e}, "
          f"관측 최대변화={np.max(np.abs(found-exact_x)):.3e}")
    assert np.all(np.isfinite(found))
delta=1e-02, 예측 성분변화=1.000e-10, 관측 최대변화=9.999e-11
delta=1e-06, 예측 성분변화=1.000e-06, 관측 최대변화=1.000e-06
delta=1e-10, 예측 성분변화=1.000e-02, 관측 최대변화=1.000e-02

표의 예측은 정확한 실수 \(\delta,\eta\)에 대한 값입니다. 프로그램은 이 숫자와 \(b\)를 반올림해서 저장하므로 관측값은 조금 다를 수 있습니다. 오차가 매 단계 단조롭게 늘거나 정확히 예측값과 같다는 검사는 하지 않습니다.

예고: 이러한 민감도를 정량화하는 조건수와 알고리즘이 추가하는 오차는 수치계산 파트에서 분리해 다룹니다. 이 장에서는 위 \(2\times2\) 식으로 증폭의 이유까지 확인했습니다.

2.11 장말 연습: 다섯 종류의 작업, 모든 풀이#

문제#

  1. 계산. 1장의 \(P=\frac16\begin{bmatrix}5&2&-1\\2&2&2\\-1&2&5\end{bmatrix}\)에 대해 아홉 성분을 곱해 \(P^2=P\)를 검산하세요.

  2. 증명. 선형사상 \(T:V\to W\)\(b\in W\)에 대해 \(Tx_0=b\)\(x_0\)가 있다고 합시다. \(\{x:Tx=b\}=\{x_0+z:z\in\ker T\}\)를 증명하세요.

  3. 결함탐지.\(S,T\)가 기저에서 같으니 선형성 없이도 같다”와 “\(P^2=P\)이므로 \(P^{\mathsf T}=P\)이다”를 각각 반례로 반박하세요.

  4. 코딩. \(P_a=\begin{bmatrix}1&a\\0&0\end{bmatrix}\)에서 여러 \(a\)를 검사하고, 언제 대칭인지 손으로 증명하세요.

  5. 이론적용. \(G=X^{\mathsf T}X\)가 가역이고 \(P=XG^{-1}X^{\mathsf T}\)라 합시다. 입력 \(y\)\(Xc\)를 더하면 적합값과 잔차가 어떻게 변하는지 증명하세요.

전체 풀이#

1. \(M=6P\)라고 쓰면 다음과 같습니다.

\[\begin{split} M^2=\begin{bmatrix} 25+4+1&10+4-2&-5+4-5\\ 10+4-2&4+4+4&-2+4+10\\ -5+4-5&-2+4+10&1+4+25 \end{bmatrix} =\begin{bmatrix}30&12&-6\\12&12&12\\-6&12&30\end{bmatrix} =6M. \end{split}\]

따라서 \(P^2=(M/6)(M/6)=M^2/36=6M/36=M/6=P\)입니다. 이 계산은 구체적인 행렬의 검산이고 2.8절의 일반 증명은 가정을 만족하는 모든 \(X\)에 적용됩니다.

2. 왼쪽에서 오른쪽. \(Tx=b\)\(x\)를 잡고 \(z=x-x_0\)로 정합니다. 선형성에서 \(Tz=T(x-x_0)=Tx-Tx_0=b-b=0\)이므로 \(z\in\ker T\)입니다. 또한 \(x=x_0+z\)이므로 오른쪽 집합에 속합니다.

오른쪽에서 왼쪽. \(x=x_0+z\), \(z\in\ker T\)라 합시다. 선형성에서 \(Tx=T(x_0+z)=Tx_0+Tz=b+0=b\)이므로 왼쪽 집합에 속합니다. 두 포함으로 등식입니다. \(x_0\)의 존재가 없으면 왼쪽이 비어 있을 수도 있어 같은 주장을 할 수 없습니다.

3. 첫째 반례는 \(S(x,y)=(x,y)\), \(T(x,y)=(x^2,y^2)\)입니다. \(T(1,0)=(1,0)\), \(T(0,1)=(0,1)\)이므로 표준기저에서 같지만 \(T(2,0)=(4,0)\ne(2,0)=S(2,0)\)입니다. \(T(2e_1)\ne2T(e_1)\)이므로 \(T\)는 선형이 아닙니다.

둘째 반례는 \(Q=\begin{bmatrix}1&1\\0&0\end{bmatrix}\)입니다. 직접 곱하면 \(Q^2=\begin{bmatrix}1+0&1+0\\0+0&0+0\end{bmatrix}=Q\)이지만 전치의 \((1,2)\) 성분은 \(0\), 원래의 \((1,2)\) 성분은 \(1\)이라 다릅니다.

4. 손으로 곱하면

\[\begin{split} P_a^2=\begin{bmatrix}1\cdot1+a\cdot0&1\cdot a+a\cdot0\\ 0\cdot1+0\cdot0&0\cdot a+0\cdot0\end{bmatrix} =\begin{bmatrix}1&a\\0&0\end{bmatrix}=P_a. \end{split}\]

전치는 \(\begin{bmatrix}1&0\\a&0\end{bmatrix}\)이므로 \(P_a=P_a^{\mathsf T}\)이면 \((1,2)\) 성분 비교에서 \(a=0\)입니다. 역으로 \(a=0\)이면 두 행렬의 네 성분이 모두 같아 대칭입니다. 따라서 대칭일 필요충분조건은 \(a=0\)입니다.

import numpy as np

for a in [-2, -1, 0, 1, 2]:
    P = np.array([[1, a], [0, 0]], dtype=np.int64)
    assert np.array_equal(P @ P, P)
    assert np.array_equal(P, P.T) == (a == 0)
print("다섯 입력 검산 완료; 모든 실수 a에 대한 증명은 위 성분 계산")
다섯 입력 검산 완료; 모든 실수 a에 대한 증명은 위 성분 계산

5. 2.8절에서 \(PX=X\)를 증명했습니다. 새 적합값은 선형성에 의해

\[ P(y+Xc)=Py+PXc=Py+Xc. \]

따라서 적합값은 \(Xc\)만큼 변합니다. 새 잔차는

\[ (y+Xc)-P(y+Xc) =y+Xc-(Py+Xc) =y+Xc-Py-Xc =y-Py \]

이므로 변하지 않습니다. 추가한 벡터가 열공간의 성분이어서 사영이 그 벡터를 그대로 보존한 것입니다. 이 결론에도 확률 가정은 없습니다.

생산 예제로 돌아오는 네 문제와 전체 풀이#

6. 필요한 가정. \((L,M)=(3,5)\)의 모든 비음수 생산계획을 구하고, \((3,7)\)과 비교하세요.

풀이. 첫 경우 \(\max(0,5-3)=2\le t\le5/2\)이므로 \(x=(-2+t,5-2t,t)\), \(2\le t\le5/2\)입니다. 구간 안에서는 세 성분이 비음수이고 대입하면 자원량 \((3,5)\)를 얻습니다. 두 끝점은 \((0,1,2)\)\((1/2,0,5/2)\)로 서로 달라 유일하지 않습니다. 둘째 경우 하한 4가 상한 \(7/2\)보다 커서 비음수 해는 없습니다. 실수 해 \((-4+t,7-2t,t)\)는 여전히 존재합니다.

7. 유일성의 대상. \(L=M=0\)에서 비음수 해가 하나라는 사실로 \(A\)가 단사라고 말할 수 있을까요?

풀이. 세 비음수 성분의 합이 0이면 각 성분이 0이므로 허용해는 \(0\) 하나입니다. 그러나 \(A(1,-2,1)^T=0=A0\)이고 두 입력은 다릅니다. 따라서 \(A:\mathbb R^3\to\mathbb R^2\)는 단사가 아닙니다. 비음수 허용집합과 원래 선형사상의 정의역을 바꿔 쓰면 안 됩니다.

8. 오른쪽 역과 양쪽 역. \(H(L,M)=(L-M/2,0,M/2)\)에 대해 \(AH=I_2\)를 보이고, \(HA=I_3\)인지 판정하세요.

풀이. \(A H(L,M)=(L-M/2+M/2,2(M/2))=(L,M)\)이므로 모든 입력에서 \(AH=I_2\)입니다. 하지만 \(z=(1,-2,1)\)\(HAz=H0=0\ne z\)이므로 \(HA\ne I_3\). 실제로 \(P=HA\)

\[\begin{split} P=\begin{pmatrix}1&1/2&0\\0&0&0\\0&1/2&1\end{pmatrix} \end{split}\]

이고 \(P^2=H(AH)A=HI_2A=P\)입니다. 예를 들어 \((1,4,1)\)\((3,0,3)\)으로 보내며 두 계획의 자원량은 같습니다. 이 사영은 자원을 만족하는 여러 계획 중 둘째 활동량을 0으로 만드는 하나를 선택합니다. 직사각행렬의 한쪽 역을 양쪽 역으로 취급할 수 없습니다.

다음 셀은 방금 계산한 오른쪽 역과 사영을 정확한 유리수로 확인합니다. 행렬 \(H\)가 모든 자원표에 한 계획을 고르는 규칙이라는 의미와, 원래 계획까지 복원하지는 못한다는 차이를 함께 확인합니다.

from sympy import Matrix, Rational, eye, zeros
resources = Matrix([[1,1,1],[0,1,2]])
choose = Matrix([[1,-Rational(1,2)],[0,0],[0,Rational(1,2)]])
projection = choose * resources
assert resources * choose == eye(2)
assert projection != eye(3)
assert projection * projection == projection
assert resources * (eye(3)-projection) == zeros(2,3)
original = Matrix([1,4,1])
assert projection * original == Matrix([3,0,3])
print("chosen plan:", list(projection * original))
print("unobserved change:", list(original-projection*original))
chosen plan: [3, 0, 3]
unobserved change: [-2, 4, -2]

9. 반례와 유한 검사. \(t=0,1,2,3\)에서 프로그램이 모두 비음수 계획을 출력했으므로 “모든 실수 \(t\)에서 비음수”라고 결론 냈습니다. 어느 줄을 어떻게 고칠까요?

풀이. 검사한 네 값과 모든 실수의 범위가 다릅니다. \(t=4\)이면 둘째 성분이 \(-2\)이므로 원래 주장은 거짓입니다. 올바른 명제는 “\(0\le t\le3\)일 필요충분조건은 \(x(t;6,6)\)의 세 성분이 비음수인 것”입니다. 증명은 \(t\ge0\)\(6-2t\ge0\)을 양쪽 방향으로 푸는 것입니다. 코드는 선택한 입력의 구현을 검사하고, 그 부등식 논증이 전체 구간을 덮습니다.

2.12 자신의 증명을 다시 읽는 순서#

증명을 쓴 뒤 정리의 가정만 남기고 각 줄의 이유를 점검하세요. 새 기호는 어느 집합에서 골랐는지, 나눗셈에는 분모가 \(0\)이 아니라는 근거가 있는지 확인합니다. 등식은 양쪽 포함을 확인했는지, 유일 존재는 존재와 유일성을 나눴는지 살펴봅니다.

이번 장의 핵심 연결은 다음과 같습니다.

필요한 결론

본문에서 마련한 근거

기저 좌표가 하나로 정해짐

생성으로 존재, 독립성으로 유일성

기저의 값이 사상을 결정함

선형성이 유한한 결합을 보존함

지정한 기저 값으로 사상을 만들 수 있음

구성·잘 정의됨·선형성·유일성

차원을 기저 크기로 정의할 수 있음

유한 교환보조정리로 두 방향의 크기 비교

포함과 같은 차원에서 공간이 같음

밖의 벡터를 추가하면 독립목록이 너무 길어짐

멱등사상이 유일한 분해를 줌

\(v=Pv+(v-Pv)\)와 각 성분의 강제성

“명백히”, “유사하게”, “잘 알려져 있다”가 나오는 곳은 근거를 한 문장 더 쓸 후보입니다. 예를 들어 “\(P\)의 상에서는 항등이므로”라고 줄였다면, 그 밑에 \(a=Px\)를 잡아 \(Pa=P^2x=Px=a\)를 써 보세요. 그 한 줄이 있으면 다음 독자는 같은 질문에서 멈추지 않아도 됩니다.

2.13 지금까지의 내용을 수학의 언어로 정리해 봅시다#

앞에서 계산한 생산계획, 지정한 기저의 값, 서로 다른 사영을 이제 같은 형식으로 읽습니다. 각 정리에서는 가정 → 결론 → 양방향 또는 존재·유일성의 증명을 분리합니다. 기저·교환·차원의 상세 증명은 2.1–2.6절에서 이미 마련했으며 여기서 근거 없이 다시 가정하지 않습니다.

정의 · 명제의 범위와 선형성#

명제 \(P(x)\)의 범위를 집합 \(S\)로 고정합니다. \(\forall x\in S\,P(x)\)\(S\)의 임의의 원소가 성질을 만족한다는 뜻이고, \(\exists x\in S\,P(x)\)는 성질을 만족하는 원소가 적어도 하나 있다는 뜻입니다. \(\exists!x\in S\,P(x)\)는 그런 원소가 존재하고, 성질을 만족하는 두 원소가 항상 같다는 뜻입니다.

두 실수 부분공간 \(V,W\) 사이의 함수 \(T\)가 모든 \(u,v\in V\), \(a,b\in\mathbb R\)에 대해 \(T(au+bv)=aT(u)+bT(v)\)를 만족하면 선형입니다. 핵과 상은 \(\ker T=\{v:T(v)=0\}\), \(\operatorname{im}T=\{T(v):v\in V\}\)입니다. 이 장의 모든 선형성 주장은 허용된 입력 전체에 관한 말입니다.

정리 1 · 생산계획 존재의 필요충분조건#

본문의 실수 행렬 \(A=\begin{pmatrix}1&1&1\\0&1&2\end{pmatrix}\)를 고정합니다. 실수 \(L,M\)에 대해 비음수 해 \(x\)가 존재할 필요충분조건은 \(L\ge0\)\(0\le M\le2L\)입니다. 이때 모든 해는

\[ x=(L-M+t,M-2t,t),\qquad \max(0,M-L)\le t\le M/2 \]

입니다. \(L>0\), \(0<M<2L\)이면 비음수 해는 여러 개이며, \(M=0\) 또는 \(M=2L\)이면 하나입니다.

증명. 비음수 해가 있으면 \(L=x_1+x_2+x_3\ge0\), \(M=x_2+2x_3\ge0\). 또한 \(2L-M=2x_1+x_2\ge0\)이므로 \(M\le2L\). 필요성을 얻었습니다. 역으로 이 조건을 가정하면 \((L-M/2,0,M/2)\)는 비음수이고 \(A\)를 곱하면 \((L,M)\)이므로 존재합니다.

임의의 해에 \(t=x_3\)를 놓으면 둘째 식에서 \(x_2=M-2t\), 첫째에서 \(x_1=L-M+t\). 세 비음수 조건은 정확히 표시한 구간입니다. 역으로 구간의 \(t\)를 넣으면 세 성분이 비음수이며 두 식도 성립하므로 모든 해의 표현입니다.

\(0<M\le L\)이면 하한 0, 상한 \(M/2>0\)입니다. \(L<M<2L\)이면 구간 길이가 \(M/2-(M-L)=L-M/2>0\)입니다. 따라서 내부에서는 서로 다른 두 \(t\)가 있어 해가 여러 개입니다. \(M=0\)이면 \(t=0\), \(M=2L\)이면 \(t=L\)로 강제됩니다. \(L=0\)에서 허용되는 \(M\)도 0이고 해는 영벡터입니다. \(\square\)

정리 2 · 해의 유일성, 영핵, 단사성#

선형사상 \(T:V\to W\)에서 다음은 동치입니다. (a) \(T\)가 단사입니다. (b) \(\ker T=\{0\}\). (c) 모든 \(b\in W\)에 대해 \(Tx=b\)의 해는 많아야 하나입니다. “많아야 하나”는 해가 없는 경우도 허용합니다.

증명. (a)에서 \(Tz=0=T0\)이면 단사성으로 \(z=0\)이므로 (b)입니다. (b)에서 \(Tx=Ty=b\)이면 선형성으로 \(T(x-y)=0\). 따라서 \(x-y=0\)이고 \(x=y\)이므로 (c)입니다. (c)에서 \(Tx=Ty\)인 임의의 \(x,y\)를 잡고 공통 출력을 \(b\)라 두면, \(x,y\)는 같은 방정식의 해이므로 서로 같습니다. 따라서 (a)입니다. 이 세 조건만으로 모든 \(b\in W\)의 해 존재까지 얻지는 못합니다. 예를 들어 \(T(t)=(t,0)\)은 단사지만 \((0,1)\)로 가는 입력은 없습니다. \(\square\)

정리 3 · 종속 생성목록에서의 잘 정의된 선형 확장#

\(g_1,\ldots,g_r\)\(V\)를 생성하고 \(w_1,\ldots,w_r\in W\)라 합시다. \(T(g_i)=w_i\)인 선형사상이 존재할 필요충분조건은 모든 실수 계수에 대해

\[ \sum_i c_i g_i=0\quad\Longrightarrow\quad\sum_i c_i w_i=0 \]

인 것입니다. 존재하면 유일합니다. 기저인 경우에는 이 조건이 자동으로 성립합니다.

증명. 선형 확장이 존재하면 \(\sum_i c_i g_i=0\)\(T\)를 적용하여 \(\sum_i c_iw_i=T0=0\)을 얻으므로 필요합니다. 역으로 조건을 가정하고 \(v=\sum_i a_i g_i\)\(T(v)=\sum_i a_iw_i\)라 정합니다. 생성성 때문에 모든 입력에 표현이 있습니다. 다른 표현 \(v=\sum_i b_ig_i\)를 고르면 \(\sum_i(a_i-b_i)g_i=0\)이고 가정에서 \(\sum_i(a_i-b_i)w_i=0\)이므로 출력이 같습니다. 따라서 잘 정의된 함수입니다.

\(v=\sum_i a_ig_i\), \(v'=\sum_i b_ig_i\)이면 \(cv+dv'=\sum_i(ca_i+db_i)g_i\)이므로 정의를 적용하면 \(T(cv+dv')=cT(v)+dT(v')\). 각 \(g_j\)에는 \(j\)번째 계수만 1인 표현을 사용하여 \(T(g_j)=w_j\)를 얻습니다. 다른 선형사상 \(S\)도 지정값을 가지면 모든 \(v=\sum_i a_ig_i\)\(S(v)=\sum_i a_iS(g_i)=\sum_i a_iw_i=T(v)\)이므로 유일합니다.

기저이면 영결합의 모든 계수가 0이어서 조건이 자동입니다. 이는 2.5절 확장정리의 가정이 어떻게 잘 정의됨을 보장했는지 보여 줍니다. 종속이면 예컨대 \(g_3=g_1+g_2\)에서 반드시 \(w_3=w_1+w_2\)를 검사해야 합니다. \(\square\)

정리 4 · 분해의 유일성과 사영#

부분공간 \(U,W\subseteq V\)에서 모든 벡터가 \(u+w\)로 표현되고 \(U\cap W=\{0\}\)일 필요충분조건은 모든 벡터가 그런 꼴로 유일하게 표현되는 것입니다. 이 경우 \(P(u+w)=u\)는 선형이고 \(P^2=P\). 역으로 선형 \(P\)\(P^2=P\)이면 \(V=\operatorname{im}P\oplus\ker P\)입니다.

증명. 표현이 두 개이면 \(u+w=u'+w'\)에서 \(u-u'=w'-w\)입니다. 왼쪽은 \(U\), 오른쪽은 \(W\)에 있으므로 교집합이 영이면 둘 다 0입니다. 따라서 \(u=u'\), \(w=w'\)이고 유일합니다. 역으로 \(z\in U\cap W\)이면 영벡터에는 \(0=0+0=z+(-z)\)라는 두 허용 표현이 있습니다. 유일성으로 \(z=0\)이므로 교집합은 영입니다.

임의의 두 벡터를 \(v=u_1+w_1\), \(v'=u_2+w_2\)로 분해하고 실수 \(a,b\)를 잡겠습니다. \(av+bv'=(au_1+bu_2)+(aw_1+bw_2)\)이며 두 괄호는 각각 \(U,W\)에 속합니다. 분해의 유일성으로 \(P(av+bv')=au_1+bu_2=aPv+bPv'\)이므로 선형입니다. \(u\in U\)의 분해는 \(u+0\)이어서 \(Pu=u\), 따라서 \(P(Pv)=Pv\)입니다.

역으로 \(P^2=P\)이면 \(v=Pv+(v-Pv)\)이고 \(P(v-Pv)=Pv-P^2v=0\)이므로 존재합니다. \(z\)가 상과 핵에 동시에 있으면 \(z=Py\), \(Pz=0\)인데 \(z=Py=P^2y=Pz=0\).

따라서 교집합이 영이고 첫 부분에 의해 분해가 유일합니다. 직교성이나 대칭성은 이 증명에서 사용하지 않았습니다. \(\square\)

정리 5 · 더한 관측이 새로운 정보를 주지 않는 조건#

\(T:V\to W\)\(\ell:V\to\mathbb R\)가 선형이라고 합시다. 다음은 동치입니다. (a) \(Tx=Ty\)이면 항상 \(\ell(x)=\ell(y)\). (b) \(\ker T\subseteq\ker\ell\). 즉 기존 관측이 같은 입력을 새 관측도 구별하지 못할 필요충분조건은 기존 관측에 보이지 않는 모든 변화를 새 관측도 지우는 것입니다.

증명. (a)를 가정하고 \(z\in\ker T\)를 잡으면 \(Tz=T0\)이므로 \(\ell(z)=\ell(0)=0\). 따라서 (b)입니다. 역으로 (b)를 가정하고 \(Tx=Ty\)라 하면 \(T(x-y)=0\)이므로 \(x-y\in\ker T\subseteq\ker\ell\). 따라서 \(0=\ell(x-y)=\ell(x)-\ell(y)\)이고 두 관측값이 같습니다. \(\square\)

생산 예에서 \(\ker A\)의 생성벡터는 \((1,-2,1)\)입니다. 두 자원의 수치 합을 기록하는 \(\ell(x)=x_1+2x_2+3x_3\)는 이 벡터에서 \(1-4+3=0\)이므로 새로운 정보를 주지 않습니다. 반면 \(\ell(x)=x_3\)는 값이 1이므로 변화를 구별합니다. 그 값을 하나 알면 자유 매개변수 \(t\)가 정해졌던 이유입니다.

설명 문장

증명할 형식

실제로 필요한 행동

자원표마다 계획을 고른다

\(\forall b\,\exists x\)

\(b\)를 받은 뒤 \(x\) 구성

모든 해를 구했다

두 집합의 등식

양쪽의 임의 원소에 대한 포함

이 값으로 함수를 정한다

잘 정의된 함수의 존재

서로 다른 표현의 출력 일치

하나로 정해진다

존재와 유일성

후보 제시 후 두 후보 비교

두 성분으로 나눈다

직합 또는 선형 멱등성

존재와 영교집합, 또는 \(v=Pv+(v-Pv)\)

이 입력이 반례다

가정 참·결론 거짓

정의역과 제약부터 검사

양화사의 순서와 선형성의 역할을 확인했습니다. 이제 그 논증에서 허용한 수와 연산을 돌아보며, 체가 바뀌면 어떤 계산과 해집합이 달라지는지 살펴봅니다. B2로 이어 읽기.