B0 · 이 책의 사용법: 계산의 답에서 주장의 근거로#

1.0 같은 자원표가 생산계획 하나를 정해 줄까#

세 생산활동의 실행량을 \(x_1,x_2,x_3\)라고 하겠습니다. 실행량은 연속적으로 나눌 수 있는 양이며 실제 계획에서는 \(x_j\ge0\)입니다. 아래 수치는 원리를 설명하기 위한 모의 자료입니다.

한 단위 실행에 필요한 자원

활동 1

활동 2

활동 3

노동

1시간

1시간

1시간

원료

0kg

1kg

2kg

실행량에 비례해 자원이 들고, 활동을 함께 하면 사용량이 더해진다고 가정합니다. 노동 6시간과 원료 6kg을 정확히 쓰는 계획은

\[ x_1+x_2+x_3=6,\qquad x_2+2x_3=6 \]

을 만족합니다. 한도 이하로 쓰는 문제라면 부등식으로 시작해야 합니다. 여기서는 정확한 사용량 두 개를 관측한 상황입니다. 서로 다른 단위의 물리량을 더하는 것이 아니라 각 행에서 정한 단위의 수치를 계산합니다.

\(x_3=t\)라 놓으면 둘째 식은 \(x_2=6-2t\)입니다. 이를 첫째 식에 넣으면 \(x_1+6-2t+t=6\), 따라서 \(x_1=t\)입니다. 모든 해는

\[ x(t)=(t,6-2t,t) \]

꼴이어야 합니다. 이것은 아직 한쪽 방향입니다. 역으로 임의의 실수 \(t\)에 대해 \(t+(6-2t)+t=6\), \((6-2t)+2t=6\)이므로 이 꼴의 벡터는 실제로 두 식을 만족합니다. 이제 모든 해를 빠짐없이 구했다고 말할 수 있습니다.

실제 생산량은 음수가 아니므로 \(t\ge0\)이고 \(6-2t\ge0\)이어야 합니다. 둘째 조건을 풀면 \(t\le3\)입니다. 따라서 가능한 계획은 \(0\le t\le3\)입니다. \((1,4,1)\)\((2,2,2)\)는 둘 다 가능하므로 자원표가 계획 하나를 정해 주지는 않습니다. \(t=4\)\((4,-2,4)\)는 두 등식을 만족해도 실행할 수 없는 계획입니다.

매개변수 t에 대한 세 활동량. t가 0에서 3까지일 때만 모두 음이 아니며 그 밖의 등식 해는 점선으로 표시한다.

그림 1 가로축의 \(t\)는 활동 3 실행량입니다. 세로축은 각 활동의 실행량이며, 겹치는 \(x_1=x_3=t\)를 한 선으로 그렸습니다. 실선 구간은 가능한 계획, 점선은 등식만 만족하는 연장입니다.#

이 작은 계산에서 서로 다른 네 질문이 나왔습니다.

질문

지금 얻은 답

답의 근거

해가 존재하는가?

존재한다

예를 들어 \((1,4,1)\)을 대입

모든 해를 찾았는가?

\(x(t)\)가 정확한 해집합

해에서 꼴을 유도하고, 그 꼴을 다시 대입

해가 유일한가?

유일하지 않다

서로 다른 두 해를 제시

실제 계획으로 허용되는가?

\(0\le t\le3\)일 때

비음수 제약 세 개를 검사

활동 3의 실제 실행량이 1이었다는 관측을 하나 더 얻으면 \(t=1\), 따라서 \((1,4,1)\)로 정해집니다. 반면 “두 자원의 수치 합은 12”라는 정보는 이미 얻은 두 식을 더한 것이므로 계획을 더 좁히지 못합니다. 관측을 하나 더 적는 일과 독립적인 정보를 얻는 일은 다릅니다.

계획 사이의 변화도 계산해 봅시다. \(x(2)-x(1)=(1,-2,1)\)이고 노동 변화는 \(1-2+1=0\), 원료 변화는 \(-2+2=0\)입니다. 일반적으로 \(x(t)-x(s)=(t-s)(1,-2,1)\)입니다. 자원 사용량에 보이지 않는 변화가 바로 해의 비유일성을 만듭니다. B1에서는 이 계산을 가정·결론·양화사가 있는 증명으로 다시 씁니다.

이 책은 이런 질문을 더 큰 공간과 더 복잡한 모형으로 가져갑니다. 계산 결과, 모든 경우에 대한 증명, 수치 알고리즘의 정확성, 경제 모형의 해석을 각각 확인합니다. 어느 줄에서 무엇을 가정했는지 적는 것이 그 출발점입니다.

작은 입력을 정확한 분수로 확인하기#

아래 코드는 표에서 고른 다섯 입력을 확인합니다. 유한 개의 검사가 모든 실수에 대한 증명은 아니며, 일반적인 해의 꼴과 허용 구간은 앞의 대입·부등식 논증에서 얻었습니다.

from fractions import Fraction
for value in [-1, 0, 1, 3, 4]:
    t = Fraction(value)
    plan = (t, 6-2*t, t)
    resources = (sum(plan), plan[1]+2*plan[2])
    feasible = all(v >= 0 for v in plan)
    assert resources == (6, 6)
    assert feasible == (0 <= t <= 3)
    print("t =", t, "plan =", tuple(str(v) for v in plan),
          "resources =", tuple(str(v) for v in resources), "feasible =", feasible)
t = -1 plan = ('-1', '8', '-1') resources = ('6', '6') feasible = False
t = 0 plan = ('0', '6', '0') resources = ('6', '6') feasible = True
t = 1 plan = ('1', '4', '1') resources = ('6', '6') feasible = True
t = 3 plan = ('3', '0', '3') resources = ('6', '6') feasible = True
t = 4 plan = ('4', '-2', '4') resources = ('6', '6') feasible = False

1.1 출발점과 읽기 전에 알아 둘 범위#

이번 두 장에서는 실수의 사칙연산, 실수 등식과 부등식의 규칙, 집합·함수의 기초, 자연수에 대한 수학적 귀납법을 출발 규칙으로 삼습니다. 이 규칙 자체를 실수의 구성이나 논리학의 공리에서 다시 유도하지는 않습니다. 무엇을 출발점으로 삼았는지를 밝히는 것이 “생략 없이” 읽는 첫 조건입니다.

벡터는 우선 실수의 유한한 목록입니다. \((v_1,\ldots,v_n)\)\(\mathbb R^n\)의 원소라고 하고, 계산할 때는 열로 세웁니다. 두 벡터가 같다는 말은 같은 위치의 성분이 모두 같다는 뜻입니다.

\[ (v_1,\ldots,v_n)+(w_1,\ldots,w_n) =(v_1+w_1,\ldots,v_n+w_n), \]
\[ c(v_1,\ldots,v_n)=(cv_1,\ldots,cv_n). \]

그러므로 영벡터 \(0=(0,\ldots,0)\)에 대해 \(0v=0\), \(1v=v\), \((-1)v=-v\)입니다. 각 성분에서 \(0v_i=0\), \(1v_i=v_i\), \((-1)v_i=-v_i\)이기 때문입니다.

행렬곱의 정의도 고정하겠습니다. \(A\)\(m\times n\), \(B\)\(n\times p\) 행렬이면

\[ (AB)_{ij}=\sum_{k=1}^n a_{ik}b_{kj} =a_{i1}b_{1j}+\cdots+a_{in}b_{nj}. \]

안쪽 크기 \(n\)이 같아야 곱을 정의할 수 있고 결과는 \(m\times p\)입니다. \(\sum\)는 표시된 범위의 항을 더한다는 기호이며 빈 합은 \(0\)으로 정합니다.

증명 경험은 출발 조건이 아닙니다. 가우스 소거법, 기저, 고윳값을 배운 적이 있다면 진단에 사용하되, 2장의 논증에 필요한 정의는 그 자리에서 다시 제공합니다. 진단에서 못 푼 항목이 있어도 본문에 들어갈 수 있습니다.

1.2 읽기와 따라 쓰기의 순서#

각 장은 실제 질문에서 출발해 변수와 단위를 정하고, 작은 예를 계산하며 필요한 개념을 설명합니다. 조건을 바꾼 반례와 그림·코드·전체 풀이를 거친 뒤 마지막 「지금까지의 내용을 수학의 언어로 정리해 봅시다」에서 정의·정리·증명으로 다시 읽습니다. 앞에서도 필요한 용어는 사용하는 자리에서 설명하며, 마지막 절은 처음 보는 이름을 모아 놓는 곳이 아닙니다.

처음에는 계산을 그대로 옮겨 써도 좋습니다. 두 번째에는 등식의 이유만 가리고 채워 보세요. 세 번째에는 가정과 결론만 보고 증명을 다시 만드세요. 원문과 문장이 같을 필요는 없습니다. 각 추론의 근거가 있으면 됩니다.

멈춤 질문을 사용하는 법

멈춤 질문은 다음 줄을 읽기 전에 생각할 작은 문제입니다. 답을 못 찾았다고 본문을 중단할 필요는 없습니다. 바로 뒤에 풀이를 제공합니다. 장말 문제도 전체 풀이를 제공합니다.

P는 증명과 구조, E는 계량경제 응용, M은 데이터와 계산에 관심을 둔 읽기 경로입니다. 이 두 장에서는 세 경로 모두 같은 증명을 읽습니다. 배지는 관심사를 안내하며 필요한 논리를 생략할 면제권은 아닙니다.

이 원고는 정규 챕터입니다. 뒤의 응용 분야를 소개하는 짧은 예고는 증명된 결과와 구별해 표시합니다.

1.3 진입 진단: 계산 12문항, 증명 8문항#

계산과 증명을 따로 기록하세요. 이는 두 능력이 서로 무관하다는 통계적 주장이 아니라, 어느 활동에서 보강이 필요한지 따로 보자는 제안입니다. 각 문항을 “혼자 완료 / 풀이 후 이해 / 다시 학습”으로 표시하면 충분합니다. 합격선이나 제한시간은 없습니다.

\[\begin{split} A=\begin{bmatrix}2&1&1\\4&3&3\\8&7&9\end{bmatrix}, \qquad X=\begin{bmatrix}1&-1\\1&0\\1&1\end{bmatrix}. \end{split}\]

계산 진단#

  1. C1. \(Ax=(5,13,31)^{\mathsf T}\)를 소거법으로 풀고 원래 식에 대입하세요.

  2. C2. \(R=\begin{bmatrix}1&2&0&1\\0&0&1&-1\\0&0&0&0\end{bmatrix}\)의 열공간과 영공간의 기저를 구하세요. 열공간은 \(Rx\)로 만들 수 있는 벡터의 집합, 영공간은 \(Rx=0\)\(x\)의 집합입니다.

  3. C3. \(H=\begin{bmatrix}1&2\\0&1\end{bmatrix}\)의 역행렬을 구해 양쪽 곱을 확인하세요. \(K=\begin{bmatrix}1&2\\2&4\end{bmatrix}\)에는 역행렬이 없음을 보이세요.

  4. C4. \(K\)의 열공간, 행공간, 영공간, 왼쪽 영공간 \(\{z:K^{\mathsf T}z=0\}\)의 기저를 구하세요.

  5. C5. \(y=(2,1,3)^{\mathsf T}\)일 때 \(X^{\mathsf T}X\widehat\beta=X^{\mathsf T}y\)를 푸세요. 통계적 의미가 아니라 산술만 묻습니다.

  6. C6. \(P=X(X^{\mathsf T}X)^{-1}X^{\mathsf T}\)의 아홉 성분과 \(Py\)를 계산하세요.

  7. C7. \(A=LU\)를 구하세요. \(L\)은 대각성분이 \(1\)인 아래삼각행렬, \(U\)는 위삼각행렬입니다. 행 교환이 꼭 필요한지도 확인하세요.

  8. C8. \(D=\begin{bmatrix}2&1\\0&3\end{bmatrix}\)의 고윳값과 고유공간을 구하세요. 정의 \(Dv=\lambda v\), \(v\ne0\)에서 시작하세요.

  9. C9. \(J=\begin{bmatrix}1&1\\0&1\end{bmatrix}\)에는 일차독립인 고유벡터 두 개가 있는지 판정하세요.

  10. C10. \(F=\operatorname{diag}(3,-2)\)의 특이값을 구하세요. 이 문항에서는 \(F^{\mathsf T}F\)의 고윳값의 음이 아닌 제곱근으로 읽으면 됩니다.

  11. C11. \(M=\begin{bmatrix}A_0&B_0\\0&C_0\end{bmatrix}\)의 제곱을 블록별로 쓰세요. \(A_0,C_0\)는 정사각행렬이고 곱의 크기는 맞는다고 가정합니다.

  12. C12. C1을 NumPy의 solve로 풀고 잔차 \(Ax-b\)의 성분을 출력하세요.

증명 진단#

부분공간은 영벡터를 포함하고 덧셈·스칼라곱에 닫힌 부분집합입니다. 닫혀 있다는 말은 연산의 결과가 다시 그 집합에 속한다는 뜻입니다. 기저와 일차독립의 정의는 2.1절에서 다시 설명합니다.

  1. P1. 부분공간 \(U,W\subseteq\mathbb R^n\)의 교집합 \(U\cap W\)가 부분공간임을 증명하세요.

  2. P2. \((1,1,0),(0,1,1),(1,0,-1)\)이 일차독립인지 정의로 판정하세요.

  3. P3. 유한한 기저를 갖는 실수 벡터공간에서 두 기저의 벡터 수가 같음을 증명하세요. 막힌 줄을 기록하세요. 완전한 교환 논증은 2.6절에서 함께 씁니다.

  4. P4. \(\{x:Ax=0\}\)이 부분공간임을 증명하세요.

  5. P5. 선형사상 \(T:\mathbb R^n\to\mathbb R^n\)에 대해 \(\ker T\subseteq\ker T^2\)를 증명하세요. \(\ker T=\{v:T(v)=0\}\), \(T^2=T\circ T\)입니다.

  6. P6. 실수에서 \(\forall x\,\exists y:x+y=0\)\(\exists y\,\forall x:x+y=0\)의 참·거짓을 판정하세요.

  7. P7.\(U,W\)가 부분공간이면 합집합도 부분공간입니다. 원소는 \(U\) 또는 \(W\)에 있고, 각각 덧셈에 닫혀 있기 때문이다.” 어디가 빠졌나요?

  8. P8.\(A\)의 열들이 일차독립이면 \(Ax=0\)의 해는 \(x=0\)뿐이다”의 대우를 쓰세요.

문제를 먼저 풀었다면 아래에서 풀이를 확인하세요. 복습할 곳을 먼저 찾으려면 진단 결과별 안내로 이동할 수 있습니다.

계산 진단의 전체 풀이

C1과 C7. 행 연산은 방정식 한 개에서 다른 방정식의 배수를 빼는 과정입니다. 뺀 배수를 다시 더하면 원래 식으로 돌아가므로 해집합이 보존됩니다.

\[\begin{split} \left[\begin{array}{ccc|c}2&1&1&5\\4&3&3&13\\8&7&9&31\end{array}\right] \longrightarrow \left[\begin{array}{ccc|c}2&1&1&5\\0&1&1&3\\0&3&5&11\end{array}\right] \longrightarrow \left[\begin{array}{ccc|c}2&1&1&5\\0&1&1&3\\0&0&2&2\end{array}\right]. \end{split}\]

첫 화살표는 \(R_2-2R_1\), \(R_3-4R_1\)입니다. 둘째 행은 \((4-4,3-2,3-2\,|\,13-10)=(0,1,1\,|\,3)\), 마지막 행은 \((8-8,7-4,9-4\,|\,31-20)=(0,3,5\,|\,11)\)입니다. 둘째 화살표는 \(R_3-3R_2\)이므로 \((0,3-3,5-3\,|\,11-9)=(0,0,2\,|\,2)\)입니다.

마지막 식에서 \(2x_3=2\), 따라서 \(x_3=1\)입니다. 둘째 식에서 \(x_2+1=3\), 따라서 \(x_2=2\)입니다. 첫째 식에서 \(2x_1+2+1=5\), 따라서 \(2x_1=2\), \(x_1=1\)입니다. 검산은

\[ 2+2+1=5,\quad 4+6+3=13,\quad 8+14+9=31. \]

소거에 사용한 배수 \(2,4,3\)을 기록하면

\[\begin{split} L=\begin{bmatrix}1&0&0\\2&1&0\\4&3&1\end{bmatrix}, \quad U=\begin{bmatrix}2&1&1\\0&1&1\\0&0&2\end{bmatrix}. \end{split}\]

\(LU\)의 첫째 행은 \((2,1,1)\), 둘째 행은 \(2(2,1,1)+(0,1,1)=(4,3,3)\), 셋째 행은 \(4(2,1,1)+3(0,1,1)+(0,0,2)=(8,7,9)\)입니다. 따라서 \(LU=A\)입니다. 피벗 \(2,1,2\)가 모두 \(0\)이 아니므로 행 교환 없이 진행할 수 있습니다. 수치 알고리즘이 안정성을 위해 행 교환을 선택할 수 있다는 사실과는 구별해야 합니다.

C2. \(Rx=0\)\(x_1+2x_2+x_4=0\), \(x_3-x_4=0\)입니다. \(x_2=s\), \(x_4=t\)로 두면

\[ x=(-2s-t,s,t,t)=s(-2,1,0,0)+t(-1,0,1,1). \]

역으로 대입하면 첫 식은 \(-2s-t+2s+t=0\), 둘째 식은 \(t-t=0\)입니다. 두 생성벡터의 결합이 \(0\)이면 둘째 성분에서 \(s=0\), 넷째에서 \(t=0\)이므로 독립입니다. 따라서 이 두 벡터가 영공간의 기저입니다.

열은 \((1,0,0),2(1,0,0),(0,1,0),(1,-1,0)\)입니다. 모두 첫째·셋째 열의 결합입니다. 그 두 열의 결합 \((a,b,0)\)\(0\)이면 \(a=b=0\)이므로 독립입니다. 열공간의 기저는 \((1,0,0),(0,1,0)\)이며 기저의 원소 수, 즉 계수(rank)는 \(2\)입니다.

C3. 후보 \(G=\begin{bmatrix}1&-2\\0&1\end{bmatrix}\)를 곱하면

\[\begin{split} HG=\begin{bmatrix}1\cdot1+2\cdot0&1(-2)+2\cdot1\\ 0\cdot1+1\cdot0&0(-2)+1\cdot1\end{bmatrix} =\begin{bmatrix}1&0\\0&1\end{bmatrix}, \end{split}\]
\[\begin{split} GH=\begin{bmatrix}1\cdot1+(-2)0&1\cdot2+(-2)1\\ 0\cdot1+1\cdot0&0\cdot2+1\cdot1\end{bmatrix} =\begin{bmatrix}1&0\\0&1\end{bmatrix}. \end{split}\]

따라서 \(G=H^{-1}\)입니다. 한편 \(K(-2,1)^{\mathsf T}=(-2+2,-4+4)^{\mathsf T}=0\)입니다. 역행렬이 있다고 가정하면 양변에 곱하여 \((-2,1)^{\mathsf T}=K^{-1}0=0\)을 얻어 모순입니다. 따라서 역행렬은 없습니다.

C4. 두 열은 \((1,2),2(1,2)\)이고 두 행은 \((1,2),2(1,2)\)이므로 열공간과 행공간은 각각 \((1,2)\) 하나를 기저로 갖습니다. \(Kx=0\)\(x_1+2x_2=0\)과 그 두 배인 식이므로 \(x=t(-2,1)\)입니다. 이 벡터는 대입하면 실제 해이고 \((-2,1)\ne0\)이므로 영공간의 기저는 \((-2,1)\)입니다. \(K^{\mathsf T}=K\)여서 왼쪽 영공간도 같은 방정식과 기저를 갖습니다.

C5. 전치는 행과 열을 바꿉니다. 따라서

\[\begin{split} X^{\mathsf T}X= \begin{bmatrix}1+1+1&-1+0+1\\-1+0+1&1+0+1\end{bmatrix} =\begin{bmatrix}3&0\\0&2\end{bmatrix}, \qquad X^{\mathsf T}y=\begin{bmatrix}2+1+3\\-2+0+3\end{bmatrix} =\begin{bmatrix}6\\1\end{bmatrix}. \end{split}\]

\(3\widehat\beta_1=6\), \(2\widehat\beta_2=1\)을 풀면 \(\widehat\beta=(2,1/2)^{\mathsf T}\)입니다.

C6. \(G=X^{\mathsf T}X\)라고 쓰면 \(G^{-1}=\operatorname{diag}(1/3,1/2)\)입니다. 양쪽 곱의 대각성분이 \(3(1/3)=1\), \(2(1/2)=1\)이고 비대각성분이 \(0\)이어서 역행렬의 정의를 만족합니다.

\[\begin{split} XG^{-1}=\begin{bmatrix}1/3&-1/2\\1/3&0\\1/3&1/2\end{bmatrix}, \end{split}\]
\[\begin{split} P=\begin{bmatrix} 1/3+1/2&1/3+0&1/3-1/2\\ 1/3+0&1/3+0&1/3+0\\ 1/3-1/2&1/3+0&1/3+1/2 \end{bmatrix} =\frac16\begin{bmatrix}5&2&-1\\2&2&2\\-1&2&5\end{bmatrix}. \end{split}\]

아홉 성분을 모두 계산했습니다. 이를 \(y\)에 곱하면

\[\begin{split} Py=\frac16\begin{bmatrix}5\cdot2+2\cdot1-1\cdot3\\ 2\cdot2+2\cdot1+2\cdot3\\-1\cdot2+2\cdot1+5\cdot3\end{bmatrix} =\frac16\begin{bmatrix}9\\12\\15\end{bmatrix} =\begin{bmatrix}3/2\\2\\5/2\end{bmatrix}. \end{split}\]

C8. \(v=(a,b)\ne0\)에 대해 \(Dv=\lambda v\)\((2-\lambda)a+b=0\), \((3-\lambda)b=0\)입니다. \(b=0\)이면 \(a\ne0\)이므로 \(\lambda=2\)입니다. 고유벡터는 \(a(1,0)\), \(a\ne0\)입니다. \(b\ne0\)이면 \(\lambda=3\)이고 첫 식은 \(-a+b=0\)이므로 \(a=b\)입니다. 고유벡터는 \(a(1,1)\), \(a\ne0\)입니다. 두 경우가 모든 \(b\)를 덮으므로 다른 고윳값은 없습니다. 각 고유공간에는 영벡터도 포함시킵니다.

C9. 고유방정식은 \((1-\lambda)a+b=0\), \((1-\lambda)b=0\)입니다. \(\lambda\ne1\)이면 \(b=0\), \(a=0\)이 되어 고유벡터 조건을 위반합니다. 따라서 \(\lambda=1\)이고 \(b=0\)입니다. 모든 고유벡터가 \((1,0)\)의 배수이므로 독립인 두 개를 고를 수 없습니다. 대각화가 가능하다면 어떤 기저 \(b_1,b_2\)에서 \(Jb_i=\lambda_i b_i\)여야 하므로 독립인 고유벡터 두 개가 필요합니다. 따라서 대각화할 수 없습니다.

C10. \(F^{\mathsf T}F=\operatorname{diag}(9,4)\)입니다. 고유방정식은 \((9-\lambda)a=0\), \((4-\lambda)b=0\)입니다. \(a\) 또는 \(b\)\(0\)이 아니어야 하므로 고윳값은 \(9,4\)이고 각각 \((1,0),(0,1)\)이 증인입니다. 음이 아닌 제곱근은 \(3,2\)입니다.

C11. 블록 곱의 네 위치를 각각 계산하면

\[\begin{split} M^2=\begin{bmatrix} A_0A_0+B_0\,0&A_0B_0+B_0C_0\\ 0A_0+C_0\,0&0B_0+C_0C_0 \end{bmatrix} =\begin{bmatrix}A_0^2&A_0B_0+B_0C_0\\0&C_0^2\end{bmatrix}. \end{split}\]

오른쪽 위를 \(2A_0B_0\)로 바꾸려면 \(B_0C_0=A_0B_0\)라는 추가 조건이 필요합니다.

C12. 다음 셀은 그 자체로 실행할 수 있습니다. NumPy에서 @는 행렬곱이고 *는 배열의 성분별 곱입니다.

import numpy as np

A = np.array([[2., 1., 1.], [4., 3., 3.], [8., 7., 9.]])
b = np.array([5., 13., 31.])
x = np.linalg.solve(A, b)
residual = A @ x - b
print("해:", x)
print("잔차:", residual)
assert np.allclose(x, [1., 2., 1.], rtol=0, atol=1e-12)
assert np.max(np.abs(residual)) < 1e-12
해: [1. 2. 1.]
잔차: [0. 0. 0.]
증명 진단의 풀이와 연결

P1. \(0\in U\), \(0\in W\)이므로 \(0\in U\cap W\)입니다. \(u,v\in U\cap W\)이면 둘 다 \(U\)에 있으므로 \(u+v\in U\)이고, 둘 다 \(W\)에 있으므로 \(u+v\in W\)입니다. 따라서 \(u+v\in U\cap W\)입니다. \(c\in\mathbb R\), \(u\in U\cap W\)이면 \(cu\in U\)\(cu\in W\)가 각각 스칼라곱 닫힘에서 나오므로 \(cu\in U\cap W\)입니다. 세 조건을 모두 확인했습니다.

P2. 계수를 \(a,b,c\)라고 하면

\[ a(1,1,0)+b(0,1,1)+c(1,0,-1)=(a+c,a+b,b-c). \]

이 벡터가 \(0\)이면 \(a=-c\), \(b=-a=c\)입니다. \((a,b,c)=(-1,1,1)\)은 모두 \(0\)인 계수 목록이 아니면서 합을 \(0\)으로 만듭니다. 따라서 종속입니다.

P3. 이 문제에 필요한 유한 교환보조정리와 두 기저의 크기 비교는 2장 2.6절에 전체 증명으로 제공합니다. 여기에서 먼저 진단한 뒤 그 절에서 답안까지 완성합니다. 이 사실을 1장의 다른 계산의 근거로 사용하지는 않았습니다.

P4. \((A0)_i=\sum_j a_{ij}0=0\)이므로 영벡터가 해집합에 있습니다. \(Au=Av=0\)이면

\[ (A(u+v))_i=\sum_j a_{ij}(u_j+v_j) =\sum_j a_{ij}u_j+\sum_j a_{ij}v_j=0+0=0. \]

또한 \((A(cu))_i=\sum_j a_{ij}cu_j=c\sum_j a_{ij}u_j=c0=0\)입니다. 모든 성분이 \(0\)이므로 덧셈·스칼라곱에 닫힙니다.

P5. 선형성에서 \(T(0)=T(0+0)=T(0)+T(0)\)입니다. 양변에서 \(T(0)\)을 빼면 \(T(0)=0\)입니다. \(v\in\ker T\)이면 \(T(v)=0\)이므로 \(T^2(v)=T(T(v))=T(0)=0\)입니다. 따라서 \(v\in\ker T^2\)입니다.

P6. 첫 문장은 참입니다. 주어진 \(x\)마다 \(y=-x\)를 고르면 \(x+y=0\)입니다. 둘째 문장이 참이라고 하면 하나의 \(y\)\(x=0\)\(x=1\)에 모두 통합니다. \(x=0\)에서 \(y=0\), \(x=1\)에서 \(y=-1\)을 얻어 모순이므로 거짓입니다.

P7. 두 원소가 서로 다른 집합에서 온 경우가 빠졌습니다. \(U=\{(a,0)\}\), \(W=\{(0,b)\}\)는 각각 영벡터를 포함하고 합과 스칼라곱이 각 축에 남으므로 부분공간입니다. 그러나 \((1,0)+(0,1)=(1,1)\)은 어느 축에도 없습니다. 합집합은 덧셈에 닫히지 않습니다.

P8.\(Ax=0\)을 만족하는 \(x\ne0\)이 존재하면 \(A\)의 열들은 일차종속이다.”입니다. 전건과 후건을 바꾸는 것만으로는 대우가 되지 않습니다. 각각을 부정한 뒤 순서도 바꿉니다.

진단 결과를 다음 읽을 곳으로 옮기기#

진단은 선발시험이 아닙니다. 풀이를 보고 이해한 항목도 기록하고, 다음 표에서 막힌 계산에 가장 가까운 단원으로 돌아가세요. P3처럼 아직 증명하지 않은 교환보조정리를 요구하는 문제는 지금 완성하지 못해도 됩니다. B1의 전체 논증을 읽은 뒤 다시 답하면 됩니다.

막힌 항목

먼저 복습할 곳

다시 확인할 행동

C1·C3·C7: 소거·역행렬·LU

B3 · 연립방정식, 이어 N2 · 소거 계산

행 변형의 역변형을 적고 원래 식에 대입

C2·C4·P2: 핵·상·독립성

B3, B4 · 기저와 좌표

생성과 독립을 따로 검사

C5·C6: 사영 행렬

B1의 사영 계산, 이어 H1 · 직교분해

곱의 크기를 적고 잔차가 어디에 속하는지 계산

C8·C9: 고유벡터·대각화

A5 · 고윳값의 존재, A6 · 대각화

영벡터를 제외하고 모든 경우를 분류

C10: 특이값

H4 · SVD

고윳값과 특이값의 정의를 구별

C11·C12: 곱의 순서·구현

B1, N1 · 부동소수점

성분식과 프로그램의 연산을 대응

P1·P4·P5: 소속과 닫힘

B1 2.1·2.2·2.4절

임의의 원소에서 시작해 세 조건 또는 포함을 완성

P3: 기저의 크기

B1의 교환 논증

독립목록과 생성목록의 역할을 바꿔 두 부등식 확보

P6·P8: 양화사·대우

B1 2.3·2.7절

무엇을 먼저 고르는지, 무엇을 부정하는지 적기

P7: 잘못된 증명

B5 · 반례

가정은 만족하지만 결론이 실패하는 구체적 입력 제시

60개 단원을 읽는 지도#

파트

단원 수

중심 질문

B0–B5

6

계산을 어떻게 정의·증명·반례로 바꾸는가?

A1–A6

6

기저를 바꾸어도 남는 사상과 쌍대의 구조는 무엇인가?

C1–C7

7

표준형·텐서·행렬식·미분은 무엇을 분류하고 계산하는가?

H0–H9

10

거리·각도·양정치를 더하면 어떤 최적근사가 가능한가?

N1–N9

9

유한 정밀도에서 무엇을 계산하고 어느 오차를 신뢰하는가?

O1–O4

4

볼록성과 선형대수는 최적화의 존재·조건·계산을 어떻게 잇는가?

E0–E10

11

모집단 예측·회귀·IV·패널·동적 모형에서 같은 구조가 어떻게 쓰이는가?

I1–I5

5

무한차원·고차원에서 어떤 가정과 결론이 달라지는가?

S1–S2

2

가정을 감사하고 하나의 문제를 여러 경로로 검증할 수 있는가?

합은 \(6+6+7+10+9+4+11+5+2=60\)입니다. 첫 수업은 같은 생산 모형을 처음 배우는 독자를 위한 별도 참고이며, 정식 60개 단원의 수에 더하지 않습니다.

가장 확실한 경로는 B → A → C → H → N → O → E → I → S의 목차 순서입니다. 관심에 따라 첫 읽기의 중심을 달리할 수는 있습니다.

  • P — 증명과 구조: B·A·C·H를 차례로 읽고 I의 유한차원 반례와 S1의 가정 감사로 연결합니다. I에서 필요한 분석학 전제는 해당 장의 안내를 확인합니다.

  • E — 계량경제: B·A의 사상·기저를 익힌 뒤 H의 사영·SVD, N의 최소제곱 계산을 먼저 확보하고 E0부터 읽습니다. 최적화와 동적 모형에서 C·O의 결과가 인용되면 해당 증명으로 돌아갑니다.

  • M — 수치·데이터: B·A·H의 기본 구조를 확보하고 N1–N9를 중심으로 읽습니다. E의 응용을 거쳐 S2에서 정확도·비용을 함께 기록합니다. 행렬함수 등에서 쓰는 C의 도구도 인용 위치에서 보충합니다.

관심 있는 주제를 먼저 읽다가 낯선 개념이 나오면, 본문에서 연결한 앞 장으로 돌아가 보세요. 진단에 막힌 곳이 많으면 처음에는 B0·B1과 첫 수업을 함께 읽고, 각 단원의 정확한 선행 참조를 따라가면 됩니다.

1.4 기호가 무엇을 가리키는지 확인하기#

장 식별자는 B(기초를 잇는 다리), A(선형사상과 쌍대성), C(표준형·다중선형대수·행렬미분), H(내적과 기하), N(수치계산), O(최적화), E(계량경제), I(무한차원), S(회고와 종합)입니다. 첫 두 단원의 식별자는 B0와 B1입니다. 본문의 1.x·2.x는 두 단원의 절 번호이며, 다른 장의 교차참조는 B0·B1 표기를 사용합니다.

함수 \(T\)와 표현행렬을 구별해 보겠습니다. \(T(x,y)=(y,x)\)는 입력의 두 성분을 바꾸는 규칙입니다. 표준기저 \(E=((1,0),(0,1))\)에서

\[ T(1,0)=(0,1),\qquad T(0,1)=(1,0) \]

이므로 열에 두 결과를 세운 행렬은 \(\begin{bmatrix}0&1\\1&0\end{bmatrix}\)입니다.

이번에는 \(b_1=(1,1)\), \(b_2=(1,-1)\)로 좌표를 적겠습니다. \((x,y)=ab_1+bb_2\)가 되려면 \(a+b=x\), \(a-b=y\)여야 합니다. 두 식을 더하고 빼면

\[ 2a=x+y,\quad 2b=x-y,\qquad a=\frac{x+y}{2},\quad b=\frac{x-y}{2}. \]

역으로 이 값을 넣으면 \(a+b=x\), \(a-b=y\)가 됩니다. 표현이 실제로 존재하고 앞 계산에서 값이 강제되므로 유일합니다. 따라서 \(B=(b_1,b_2)\)는 기저입니다.

\[ Tb_1=b_1,\qquad Tb_2=-b_2. \]

같은 함수의 \(B\)-좌표 행렬은 \(\operatorname{diag}(1,-1)\)입니다. 이를

\[\begin{split} [T]_{E\leftarrow E}=\begin{bmatrix}0&1\\1&0\end{bmatrix}, \qquad [T]_{B\leftarrow B}=\begin{bmatrix}1&0\\0&-1\end{bmatrix} \end{split}\]

로 적습니다. 화살표 오른쪽은 입력 좌표, 왼쪽은 출력 좌표의 기저입니다.

\(v=(3,5)\)이면 \([v]_B=(4,-1)^{\mathsf T}\)입니다. 행렬을 곱하면 \((4,1)^{\mathsf T}\)이고 이를 벡터로 돌리면 \(4b_1+b_2=(5,3)=Tv\)입니다. 일반적인 표현행렬의 존재와 유일성도 2.5절에서 증명합니다.

위 패널의 표준 성분에서 벡터 3,5와 교환된 5,3을 보여 주고 아래 패널의 B 좌표에서 각각 4,-1과 4,1을 보여 준다.

그림 2 위 패널은 실제 성분 \((x,y)\), 아래는 \(B=((1,1),(1,-1))\)에서의 계수 \((a,b)\)입니다. 축 이름부터 다릅니다. 같은 벡터를 다른 좌표로 기록한 것과, 함수 \(T\)가 벡터 자체를 바꾼 것을 구별합니다. 두 성분은 여기서는 같은 단위를 갖는 추상 수치입니다.#

전치와 켤레전치의 성분 정의는

\[ (A^{\mathsf T})_{ij}=a_{ji},\qquad (A^*)_{ij}=\overline{a_{ji}} \]

입니다. 복소수 \(a+bi\)의 켤레는 \(a-bi\)이며 \(i^2=-1\)입니다. \(z=(1,i)^{\mathsf T}\)이면

\[ z^{\mathsf T}z=1\cdot1+i\cdot i=1-1=0,\qquad z^*z=1\cdot1+(-i)i=1-i^2=2. \]

실수 성분이면 켤레가 원래 수와 같아 두 행렬이 같습니다. 추상 사상의 수반과의 관계는 내적을 정의할 때 다룹니다. 지금은 성분 연산의 정의만 사용했습니다.

1.5 가정과 아직 쓰지 않는 이론#

\(X^{\mathsf T}X\)가 가역이라고 가정한다”와 “\(X\)의 열이 독립이므로 가역이다”는 다른 문장입니다. 첫째는 조건이고 둘째는 증명이 필요한 주장입니다.

본문의 가정과 용어

확인할 내용

유한차원

유한한 기저가 있다는 조건을 어디에 쓰는가

char≠2

스칼라 \(2\)로 나누는 것이 허용되는가

FTA

복소다항식의 근 존재 정리를 사용하는가

Zorn

무한 집합의 극대원 존재 원리를 사용하는가

완비성

수열의 극한이 공간 안에 존재해야 하는가

측도론

적분·조건부기댓값의 이론을 사용하는가

복소해석

복소함수의 적분·미분 정리를 사용하는가

이것들은 전부 외부 정리는 아닙니다. 유한차원과 char≠2는 대상에 거는 조건이고, FTA와 Zorn은 이름 붙은 정리 또는 원리입니다. 이번 두 장의 증명에는 FTA, Zorn, 완비성, 측도론, 복소해석을 사용하지 않습니다. 그 이론의 결론을 증명 없이 끌어와 현재 논증을 끝내지도 않습니다.

앞으로의 연결을 말하는 문장은 예고로 표시합니다. 예고된 결과를 지금 증명한 것으로 세지 않습니다. 실수의 구성부터 모든 수학을 한꺼번에 시작할 수는 없으므로 출발 규칙과 현재 증명의 의존 관계를 함께 밝힙니다.

뒤에서 인용하는 외부 결과를 읽는 방법#

현재 두 장의 증명에는 실수 연산·집합·함수·유한합·귀납 외에 별도의 분석학 정리가 필요하지 않습니다. 이후에는 각 장이 직접 증명하는 내용과 출발 전제로 인용하는 내용을 나눕니다. 다음 표는 위치를 찾는 안내이며 외부 이론 전체의 증명을 대신하지 않습니다.

처음 점검할 위치

별도로 확인할 전제·인용 결과

A5·C의 복소 고유문제

FTA를 쓰는 증명인지, 실수로 남는 결론인지

E0–E4

적분가능성·독립성·Gaussian 분포 및 확률극한의 사용 범위

I1

일반 Hahn–Banach의 선택 원리, Banach–Alaoglu 등 명시적 외부 정리

I2–I3

측도론의 극한 정리, 유계역, 스펙트럼 표현의 외부 부분

I4

일반 집중부등식·랜덤행렬 극한과 본문에서 직접 증명한 특수 경우의 구별

I5

Hilbert 공간 기하와 일반 준모수 점근 하한·무한상태 금융 이론의 구별

“조망”이라는 표시는 일반 외부 이론의 진술·의미·문헌을 안내한다는 뜻입니다. 그 장의 작은 계산을 끝내는 데 필요한 근거까지 없어지는 것은 아닙니다. 각 결과가 어느 층위에 속하는지는 해당 위치에서 읽고, S1에서 다시 감사합니다.

1.6 수치 각주: 같은 식을 계산해도 값이 달라지는 이유#

결합법칙을 깨뜨리는 정확한 사례#

여기서는 이진 배정밀도(binary64), 최근접 반올림, 정확히 중간이면 마지막 유효 비트가 짝수인 쪽을 선택하는 규칙을 계산 모형으로 채택합니다. 이는 실수의 정리가 아니라 컴퓨터 연산을 설명하기 위한 명시적인 규칙입니다.

정규화된 binary64 수는 유효숫자 53비트를 가지므로 \([2^e,2^{e+1})\)에서 이웃 수의 간격은 \(2^{e-52}\)입니다. 유효숫자를 \(1+k2^{-52}\)로 쓰면 인접한 \(k\)의 차이가 \(1\)이고 여기에 \(2^e\)를 곱하기 때문입니다.

\(x=2^{54}\)로 잡겠습니다. \(-x\)에서 \(0\) 쪽으로 이웃한 수는 \(-x+2\)입니다. 실수 \(-x+1\)은 그 중간이므로 짝수 비트 규칙은 \(-x\)를 선택합니다. 이를 \(\operatorname{fl}(-x+1)=-x\)라고 씁니다. \(\operatorname{fl}\)은 정확한 실수 결과를 표현 가능한 수로 반올림하는 연산입니다.

연산마다 반올림하는 계산은

\[ \operatorname{fl}(\operatorname{fl}(x+(-x))+1) =\operatorname{fl}(0+1)=1, \]
\[ \operatorname{fl}(x+\operatorname{fl}((-x)+1)) =\operatorname{fl}(x+(-x))=0 \]

입니다. 같은 세 수의 덧셈에서 괄호 위치만 바꿨는데 결과가 다릅니다. 따라서 이 연산은 결합법칙을 만족하지 않습니다.

체의 공리에는 덧셈 결합법칙이 포함됩니다. 공리 하나가 실패했으므로 부동소수점 수와 이 연산을 체로 취급할 수 없습니다. 체의 다른 공리를 전부 검사할 필요는 없습니다.

\(1\) 주위의 간격은 좌우가 다르다#

\(1\)의 바로 위 수는 \(1+2^{-52}\)이고 바로 아래 수는 \(1-2^{-53}\)입니다. 위는 지수 \(e=0\)인 구간, 아래는 \(e=-1\)인 구간에 속하기 때문입니다.

\(u=2^{-53}\)이라 두면 위 간격은 \(2u\), 아래 간격은 \(u\)입니다. 최근접 반올림의 경계는 이웃 수와의 중점이므로

\[ \operatorname{fl}(1+t)=1\quad\Longleftrightarrow\quad -\frac{u}{2}\le t\le u. \]

여기서 \(t\)는 정확한 실수 증분이고 \(1+t\)를 한 번 반올림한다고 가정합니다. 양쪽 경계의 동점에서도 \(1\)이 선택됩니다. 대칭 조건 \(|t|\le u\)는 음수 쪽에서 틀립니다. \(t=-u\)를 넣으면 \(1-u\)는 이미 표현 가능한 바로 아래 수여서 반올림 뒤에도 \(1-u\ne1\)입니다.

1을 기준으로 단위 u를 사용한 수직선. 바로 아래 수는 -1, 위 수는 2에 있고 1로 반올림되는 정확한 증분 구간은 -0.5부터 1까지이다.

그림 3 가로축은 실제 수 \(1+t\) 자체가 아니라 증분의 비율 \(t/u\)입니다. 가운데 점은 저장값 1이고, 닫힌 굵은 구간은 1로 반올림되는 실수 입력입니다. 왼쪽 간격과 오른쪽 간격이 다른 이유를 확대해 보여 줍니다.#

NumPy의 eps는 \(1\) 위쪽 간격 \(2^{-52}=2u\)입니다. 이 책에서는 이를 기계 엡실론, \(u\)를 반올림 단위라고 구별합니다.

1.7 계산 랩: 결과와 실행 조건을 함께 기록하기#

앞에서 계산한 반올림과 덧셈 순서의 차이를 짧은 코드로 확인해 봅시다. 같은 난수 입력을 다시 만드는 방법도 함께 살펴봅니다.

실행 환경을 기록하는 방법은 실습 안내에 모았습니다. 여기서는 계산 결과에 집중합니다. 고정 시드는 같은 난수 생성기와 구현 조건에서 입력을 반복하기 위한 장치입니다.

import math
import numpy as np

x = float(2**54)
left = (x + (-x)) + 1.0
right = x + ((-x) + 1.0)
print("괄호 비교:", left, right)
assert left == 1.0 and right == 0.0

eps = np.finfo(float).eps
u = eps / 2
assert eps == 2.0**-52
assert 1.0 + u == 1.0
assert 1.0 + eps > 1.0
assert 1.0 - u < 1.0
assert 1.0 - u/2 == 1.0

rng1 = np.random.default_rng(20260101)
rng2 = np.random.default_rng(20260101)
assert np.array_equal(rng1.standard_normal(8), rng2.standard_normal(8))
print("보통 합 / 보정 합:", sum([x, 1.0, -x]),
      math.fsum([x, 1.0, -x]))
괄호 비교: 1.0 0.0
보통 합 / 보정 합: 0.0 1.0

assert는 뒤의 조건이 거짓이면 실행을 멈춥니다. 첫 실험의 \(1\)\(0\)은 지정한 계산 모형에서 정확한 결과이므로 정확한 등호로 검사했습니다. 일반적인 행렬 계산은 오차가 누적될 수 있어 C12처럼 허용오차를 사용합니다. 허용오차 검사를 통과했다고 실수에 대한 정리가 증명된 것은 아닙니다.

1.8 막힌 지점을 학습 기록으로 바꾸기#

15분 정도 같은 줄에서 멈췄다면 다음 세 문장을 적어 보세요.

  1. 지금 가정한 것은 무엇인가?

  2. 최종적으로 보여야 하는 것은 무엇인가?

  3. 다음 줄에 필요한데 아직 얻지 못한 것은 무엇인가?

\(U\cap W\)가 부분공간”에서 멈췄다면 첫째 칸은 “\(U,W\) 각각의 세 닫힘 조건”, 둘째 칸은 “교집합의 세 조건”, 셋째 칸은 “원소가 교집합에 있다는 뜻을 풀어 쓰기”입니다. \(u\in U\cap W\)\(u\in U\)이고 \(u\in W\)라고 바꾸면 두 가정을 사용할 수 있습니다.

학습 시간은 첫 읽기·따라 쓰기·혼자 재작성으로 나눠 실제 소요를 기록하세요. 학습시간은 배경지식과 재작성 횟수에 따라 달라지므로 고정된 완주 시간을 가정하지 않습니다. 모든 진단 풀이를 읽으면 예상보다 길어질 수 있습니다.

1.9 장말 연습과 전체 풀이#

연습 1 · 계산. \(v=(7,1)\)\(B=((1,1),(1,-1))\) 좌표를 구하고 \(T(x,y)=(y,x)\)의 출력 좌표와 실제 출력을 계산하세요.

풀이. \(a+b=7\), \(a-b=1\)을 더하면 \(2a=8\), \(a=4\)입니다. 첫 식에서 \(b=3\)입니다. 따라서 \([v]_B=(4,3)\)입니다. \(\operatorname{diag}(1,-1)(4,3)^{\mathsf T}=(4,-3)^{\mathsf T}\)이고 \(4(1,1)-3(1,-1)=(1,7)=Tv\)입니다.

연습 2 · 증명. \(L=\{t(1,-2,1):t\in\mathbb R\}\)이 부분공간임을 증명하세요.

풀이. \(t=0\)을 넣으면 \(0\in L\)입니다. \(a(1,-2,1)\), \(b(1,-2,1)\)의 합은 \((a+b)(1,-2,1)\)이고 \(a+b\in\mathbb R\)이므로 \(L\)에 속합니다. \(c\in\mathbb R\)을 곱하면 \((ca)(1,-2,1)\)이고 \(ca\in\mathbb R\)이므로 역시 \(L\)에 속합니다. 세 조건을 모두 만족합니다.

연습 3 · 결함탐지.\((10^{16}+1)-10^{16}=0\)이지만 \(10^{16}+(1-10^{16})=1\)이므로 결합법칙이 실패한다.”라는 부동소수점 설명을 고치세요.

풀이. 최근접 짝수 반올림에서 \(1-10^{16}\)\(-10^{16}\)으로 반올림되므로 둘째 식의 값 역시 \(0\)입니다. 서로 다른 결과를 얻지 못했으므로 반례가 아닙니다. 1.6절의 \((2^{54},-2^{54},1)\)과 두 괄호를 쓰면 각각 \(1\)\(0\)을 얻어 올바른 반례가 됩니다.

연습 4 · 코딩. 저장한 카드와 현재 환경의 NumPy 버전·eps가 다른 경우를 나열하는 함수를 쓰세요.

풀이. 아래 함수는 차이가 없으면 빈 사전, 있으면 저장값과 현재값을 반환합니다.

import numpy as np

def compare_environment(saved):
    current = {"numpy": np.__version__, "eps": float(np.finfo(float).eps)}
    return {key: (saved.get(key), value)
            for key, value in current.items()
            if saved.get(key) != value}

print(compare_environment({"numpy": "연습용 다른 버전", "eps": 0.0}))
assert compare_environment(
    {"numpy": np.__version__, "eps": float(np.finfo(float).eps)}
) == {}
{'numpy': ('연습용 다른 버전', '2.4.6'), 'eps': (0.0, 2.220446049250313e-16)}

연습 5 · 이론적용. C5의 식을 푼 것만으로 “추정값이 편향되지 않는다”고 결론지을 수 있나요?

풀이. C5에서는 고정된 수 배열과 행렬 등식만 사용했습니다. 편향은 확률모형에서 추정량의 기댓값과 모수의 차이를 말하므로 확률변수·분포·기댓값에 관한 조건이 추가로 필요합니다. 해당 조건을 주지도 사용하지도 않았으므로 그 결론은 나오지 않습니다. 2.9절에서는 대수적 오차 항등식으로 이 구분을 확인합니다.

다시 쓸 수 있어야 할 다섯 문장#

  • 해집합을 구할 때는 얻은 꼴이 실제로 해를 만드는지도 확인합니다.

  • \(T\)는 함수이고 \([T]_{C\leftarrow B}\)는 지정한 좌표에서 그 함수를 계산하는 행렬입니다.

  • 가정은 증명할 결론과 구별해서 적습니다.

  • 정확한 실수 연산과 연산마다 반올림하는 계산을 구별합니다.

  • 막힌 줄에서 사용한 정의와 아직 필요한 사실을 적습니다.

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

앞에서는 생산계획 두 개를 대입하고, 모든 해를 매개변수로 쓰고, 실제 허용되는 범위를 골랐습니다. 이제 같은 내용을 정의와 명제로 옮깁니다. 처음 보는 추상적 대상을 추가하기보다, 이미 한 계산에서 어느 조건이 일반적으로 작동했는지 확인하겠습니다.

정의 · 관측사상, 해집합, 허용집합#

실수 행렬 \(A\in\mathbb R^{m\times n}\)에 대해 \(T_A(x)=Ax\)를 관측사상이라 부르겠습니다. 고정된 \(b\in\mathbb R^m\)의 해집합과 0으로 관측되는 변화의 집합은

\[ S_b=\{x\in\mathbb R^n:Ax=b\},\qquad \ker A=\{z\in\mathbb R^n:Az=0\} \]

입니다. 모형이 허용하는 집합을 \(C\subseteq\mathbb R^n\)라 하면 실제 가능한 해는 \(S_b\cap C\)입니다. 생산 예의 \(C\)는 세 성분이 모두 음이 아닌 벡터들의 집합입니다. \(S_b\)\(S_b\cap C\)는 같은 대상으로 가정하지 않습니다.

명제 1 · 행렬의 관측은 선형이고 0으로 관측되는 변화는 부분공간이다#

모든 \(a,c\in\mathbb R\), \(u,v\in\mathbb R^n\)\(A(au+cv)=aAu+cAv\)입니다. 따라서 \(\ker A\)는 영벡터를 포함하고 덧셈·실수배에 닫힙니다.

증명. 각 행 \(i\)에서

\[\begin{split} \begin{aligned} (A(au+cv))_i &=\sum_j a_{ij}(a u_j+c v_j)\\ &=a\sum_j a_{ij}u_j+c\sum_j a_{ij}v_j\\ &=(aAu+cAv)_i. \end{aligned} \end{split}\]

분배법칙으로 모든 성분이 같으므로 벡터 등식입니다. \(A0=0\)이므로 \(0\in\ker A\). \(Au=Av=0\)이면 \(A(u+v)=Au+Av=0\), \(A(au)=aAu=0\)입니다. 따라서 합과 실수배도 핵에 속합니다. 이것이 1.3절에서 설명한 부분공간의 세 조건입니다. \(\square\)

명제 2 · 한 해와 보이지 않는 변화가 모든 해를 만든다#

\(Ax_0=b\)\(x_0\)가 존재하면

\[ S_b=x_0+\ker A:=\{x_0+z:z\in\ker A\}. \]

이 경우 실수 해가 유일할 필요충분조건은 \(\ker A=\{0\}\)입니다.

증명. \(x\in S_b\)를 잡으면 \(A(x-x_0)=Ax-Ax_0=b-b=0\). 따라서 \(z=x-x_0\in\ker A\)이고 \(x=x_0+z\)이므로 오른쪽에 속합니다. 역으로 \(z\in\ker A\)이면 \(A(x_0+z)=Ax_0+Az=b\)여서 \(x_0+z\in S_b\)입니다. 양쪽 포함을 확인했습니다.

핵이 \(\{0\}\)이면 표현식에서 가능한 해는 \(x_0\) 하나입니다. 역으로 \(x_0\)가 유일해이고 \(z\in\ker A\)이면 \(x_0+z\)도 해이므로 \(x_0+z=x_0\), 즉 \(z=0\)입니다. 이 주장은 실수 해의 유일성입니다. 추가 제약과 교차하면 실수 해는 여러 개여도 허용해가 하나일 수 있습니다. 예를 들어 생산 모형에서 두 자원이 모두 0이면 허용해는 \(0\) 하나지만 실수 해는 \(t(1,-2,1)\) 전체입니다. \(\square\)

명제 3 · 첫 생산 예의 해와 변화#

\(A=\begin{pmatrix}1&1&1\\0&1&2\end{pmatrix}\), \(b=(6,6)^T\)이면 \(\ker A=\operatorname{span}((1,-2,1))\)이고 \(S_b=\{(t,6-2t,t):t\in\mathbb R\}\). 비음수 허용해는 정확히 \(0\le t\le3\)에 해당합니다.

증명. \(Az=0\)의 둘째 식에서 \(z_2=-2z_3\), 첫째 식에서 \(z_1=z_3\). 따라서 모든 핵 원소는 \(z_3(1,-2,1)\)입니다. 역으로 이 꼴에 \(A\)를 곱하면 두 성분 모두 0이므로 핵의 등식이 성립합니다. \(x_0=(0,6,0)\)\(Ax_0=b\)이므로 명제 2를 적용하면 \(x=x_0+t(1,-2,1)=(t,6-2t,t)\). 비음수 조건은 \(t\ge0\)\(6-2t\ge0\)이고, 이는 \(0\le t\le3\)과 동치입니다. 범위 안에서는 세 성분이 모두 비음수이고, 범위 밖에서는 적어도 하나가 음수이므로 양방향을 모두 확인했습니다. \(\square\)

명제 4 · 좌표의 숫자와 벡터 자체를 구별하기#

\(B=((1,1),(1,-1))\)에서 임의의 \((x,y)\)는 유일하게 \(a(1,1)+b(1,-1)\)로 쓰이며, \(a=(x+y)/2\), \(b=(x-y)/2\)입니다. 성분 교환 \(T(x,y)=(y,x)\)는 이 좌표에서 \((a,b)\mapsto(a,-b)\)입니다.

증명. 제시한 \(a,b\)를 더하면 \(x\), 빼면 \(y\)이므로 표현이 존재합니다. 다른 \(a',b'\)도 표현하면 \(a'+b'=x\), \(a'-b'=y\)이고 두 식의 합·차에서 \(2a'=x+y\), \(2b'=x-y\)여서 같은 값입니다. 실수에서 \(2\ne0\)이므로 나눗셈이 허용됩니다. 또한 \(T(1,1)=(1,1)\), \(T(1,-1)=-(1,-1)\)이고 성분 교환은 합과 실수배를 보존하므로 \(T(a(1,1)+b(1,-1))=a(1,1)-b(1,-1)\). 따라서 좌표에서 둘째 계수만 부호가 바뀝니다. \(\square\)

앞에서 쓴 말

수학적 표현

놓치지 않을 조건

이 계획은 실제로 맞는다

\(Ax_0=b\), \(x_0\in C\)

방정식과 허용집합을 각각 검사

합계에 보이지 않는 변화

\(z\in\ker A\)

변화량의 음수 성분은 허용될 수 있음

빠짐없이 모든 해를 구했다

\(S_b=x_0+\ker A\)

기준해의 존재와 양쪽 포함

하나로 정해진다

존재와 유일성을 모두 증명

실수 해인지 제약된 해인지 지정

좌표만 바꾸었다

같은 벡터를 다른 기저의 계수로 표현

벡터의 변화와 기록 방식의 변화를 구별

계산의 답을 확인하는 일과 그 답이 성립하는 이유를 설명하는 일을 구별했습니다. 다음 장에서는 같은 생산 문제의 수치를 문자로 바꾸고, 모든 경우를 다루는 증명의 문장을 만들어 봅니다. B1로 이어 읽기.