67강에서 소거를 마치고 후진대입으로 답을 얻었습니다. 답은 나왔지만 한 가지가 걸립니다.
소거하는 경로가 여러 가지입니다. 어느 행을 먼저 기준으로 삼을지, 중간에 어떤 행을 몇 배 할지에 따라 계단 모양이 달라집니다. 그러면 행사다리꼴은 그 사람이 어떻게 계산했느냐에 따라 달라지는 것이고, 거기서 읽어 낸 피벗의 개수 같은 양도 계산 경로에 딸린 것일 수 있습니다.
이것이 문제입니다. 67강 문제 3에서 피벗 개수로 해의 개수를 판정했는데, 그 개수가 사람마다 다르면 판정이 성립하지 않습니다.
이 강의는 두 가지를 합니다.
첫째, 소거를 끝까지 밀어붙여 표준형을 만듭니다. 그러면 후진대입도 필요 없어집니다.
둘째, 그 표준형이 유일함을 밝힙니다. 어떻게 계산하든 같은 것이 나오므로, 거기서 읽는 양들이 행렬 자신의 성질이 됩니다. 그 대표가 계수이며 73강에서 이 과목의 중심 개념이 됩니다.
문제. 67강 문제 1의 첨가행렬을 다시 봅니다.
(1) 피벗 위쪽도 으로 만드세요.
(2) 피벗을 모두 로 맞추세요.
(3) 결과에서 해를 읽으세요.
생각의 실마리. 67강에서는 피벗 아래만 으로 만들고 멈췄습니다. 같은 행 연산으로 위쪽도 없앨 수 있습니다. 아래에서 위로 올라가며 소거하면 됩니다.
풀이. (1) 67강의 결과에서 출발합니다.
셋째 행의 피벗은 셋째 열입니다. 그 위를 없앱니다. 둘째 행에서 셋째 행의 배를, 첫째 행에서 셋째 행의 배를 뺍니다.
둘째 행의 피벗은 둘째 열입니다. 첫째 행에서 둘째 행의 배를 뺍니다.
(2) 셋째 행을 배 합니다.
(3) 각 행이 곧 답입니다.
후진대입이 필요 없습니다. 답이 상수항 열에 그대로 적혀 있습니다.
이 문제에서 배우는 것: 기약행사다리꼴.
기약행사다리꼴(RREF). 행사다리꼴이면서 다음을 더 만족합니다.
- 모든 피벗이 입니다.
- **피벗이 있는 열은 피벗 말고 모두 **입니다.
행사다리꼴과 비교합니다.
| 조건 | 행사다리꼴 | 기약행사다리꼴 |
|---|---|---|
| 피벗 아래가 | 예 | 예 |
| 피벗 위가 | 아니오 | 예 |
| 피벗이 | 아니오 | 예 |
여기까지 미는 절차를 가우스-조던 소거법이라 합니다. 순서는 이렇습니다.
2단계에서 아래부터 하는 이유가 있습니다. 위 피벗을 먼저 처리하면 아래 피벗의 열을 건드리게 되어 헛수고가 됩니다.
검산에서 이 행렬의 RREF가 로 나옵니다.
계산이 더 필요한데 왜 여기까지 미는가. 답만 원한다면 67강에서 멈추는 편이 빠릅니다. 심화 5에서 계산량을 비교하는데 가우스-조던이 더 비쌉니다. 여기까지 미는 이유는 표준형을 얻기 위해서이며, 그 가치는 문제 2에서 드러납니다.
바로 확인 1.
확인 1-1. 기약행사다리꼴의 두 추가 조건을 쓰세요.
답. 피벗이 이고 피벗이 있는 열의 나머지가 모두 입니다.
확인 1-2. 는 기약행사다리꼴입니까?
답. 맞습니다. 피벗이 이고 피벗 열에 다른 성분이 없습니다.
확인 1-3. 위쪽을 소거할 때 아래 피벗부터 하는 이유를 쓰세요.
답. 위 피벗을 먼저 하면 아래 피벗의 열을 다시 건드리게 되기 때문입니다.
문제. 을 봅니다.
(1) 기약행사다리꼴을 구하세요.
(2) 행 순서를 바꾸거나 중간에 다른 행 연산을 넣어도 같은 결과가 나옵니까?
(3) 그 사실이 왜 중요합니까?
생각의 실마리. (2)를 실제로 해 보면 답이 나옵니다. 다만 왜 그런지를 설명해야 하며, 열쇠는 피벗 열의 위치가 계산과 무관하게 정해진다는 데 있습니다.
풀이. (1) 소거하면
이고 피벗 열은 첫째와 셋째입니다.
(2) 같습니다. 검산에서 세 가지 다른 경로를 확인합니다. 행 순서를 로 섞어서 소거해도, 중간에 무관한 행 연산을 끼워 넣어도 결과가 같습니다.
(3) 읽어 낸 양이 행렬 자신의 성질이 되기 때문입니다.
이 문제에서 배우는 것: 유일성.
RREF의 유일성. 행렬 의 기약행사다리꼴은 유일합니다. 어떤 순서로 어떤 행 연산을 하든 같은 것에 도달합니다.
증명의 뼈대만 봅니다. 상세는 심화 1에서 다룹니다.
첫째, 피벗 열이 어디인지가 정해져 있습니다. 번째 열이 피벗 열인 것은
번째 열이 자기보다 앞선 열들의 일차결합이 아니다
와 같습니다. 이 조건은 행 연산으로 변하지 않습니다. 행 연산은 해집합을 보존하므로 열들 사이의 일차 관계를 그대로 두기 때문입니다.
둘째, 피벗 열이 정해지면 나머지도 정해집니다. 피벗 열은 단위벡터가 되고, 자유 열은 앞선 피벗 열들의 일차결합인데 그 계수가 유일하게 결정됩니다.
이제 왜 여기까지 밀었는지가 분명합니다.
| 형태 | 유일한가 |
|---|---|
| 행사다리꼴 | 아닙니다 (경로마다 다릅니다) |
| 기약행사다리꼴 | 유일합니다 |
행사다리꼴에서도 피벗의 위치와 개수는 같습니다. 달라지는 것은 피벗이 아닌 자리의 값들입니다. 그래서 67강의 판정법이 옳았던 것이며, 이제 그 근거가 생겼습니다.
피벗의 개수에 이름을 붙입니다.
계수. 행렬 의 기약행사다리꼴에 있는 피벗의 개수를 의 계수라 하고 로 씁니다.
유일성 덕분에 이것은 잘 정의된 양입니다. 위의 에서 입니다.
계수는 이 과목에서 가장 자주 쓰이는 수 중 하나입니다. 73강에서 그것이 일차독립인 열의 최대 개수임을 보이고, 74강에서 해집합의 차원을 결정하는 정리로 정식화되며, 88강의 특이값 분해에서 이 아닌 특이값의 개수로 다시 나타납니다.
바로 확인 2.
확인 2-1. 행사다리꼴과 기약행사다리꼴 중 유일한 것은 무엇입니까?
답. 기약행사다리꼴입니다.
확인 2-2. 계수를 정의하세요.
답. 기약행사다리꼴의 피벗 개수입니다.
확인 2-3. 계산 경로가 달라도 피벗의 위치가 같은 이유를 쓰세요.
답. 피벗 열인지 여부가 열들 사이의 일차 관계로 결정되고, 행 연산이 그 관계를 바꾸지 않기 때문입니다.
문제. 다음을 봅니다.
(1) 해를 하나 찾으세요.
(2) 해집합 전체를 매개변수로 쓰세요.
(3) 해집합의 모양을 말하세요.
생각의 실마리. (2)에서 (1)의 해에 무엇을 더해야 여전히 해가 되는지 봅니다. 더해도 되는 것들이 만족하는 조건을 따로 떼어 내는 것이 이 문제의 핵심입니다.
풀이. (1) 자유변수 에 을 넣으면 이고 입니다.
(2) 어떤 를 더해도 해가 되려면
이어야 합니다. 상수항을 으로 바꾼 방정식의 해입니다.
따라서
검산에서 어느 값에서도 입니다.
(3) 점 를 지나고 방향이 인 직선입니다.
이 문제에서 배우는 것: 해집합의 구조.
일반해의 구조. 가 해를 가지면 해집합은
입니다. 여기서 는 특수해 하나이고 는 동차해입니다.
한 문장으로 하면 이렇습니다.
특수해는 아무것이나 하나면 됩니다. 다른 특수해를 골라도 같은 집합이 나옵니다. 두 특수해의 차가 동차해이기 때문입니다.
이 구조는 이 과목 밖에서도 계속 나타납니다.
| 대상 | 특수해 | 동차해 |
|---|---|---|
| 연립일차방정식 | A\mathbf{x}_{p}=\mathbf | A\mathbf{h}=\mathbf |
| 부정적분 | 원시함수 하나 | 상수 |
| 선형미분방정식 | 특수해 | 제차해 |
둘째 줄이 49강에서 이미 나왔습니다. 에서 가 특수해이고 가 "미분하면 "인 것들 전체입니다. 지금 보니 그것과 같은 구조입니다. 셋째 줄은 100강대의 미분방정식에서 다시 만납니다.
공통점은 선형성입니다. 이 선형인 연산이면 의 해집합은 언제나 이 모양이며, 76강에서 선형변환을 정의하며 이것을 일반화합니다.
해집합의 모양도 정리합니다. 동차해 전체는 원점을 지나는 평평한 집합이고, 거기에 를 더한 것은 평행이동된 평평한 집합입니다.
| 자유변수 개수 | 동차해 | 해집합 |
|---|---|---|
| 점 하나 | ||
| 원점 지나는 직선 | 직선 | |
| 원점 지나는 평면 | 평면 |
해집합이 원점을 지나는 것은 일 때뿐입니다. 그래서 해집합은 부분공간이 아니고 아핀 부분공간이라 부릅니다. 심화 4에서 이 구별을 다룹니다.
바로 확인 3.
확인 3-1. 일반해의 구조를 한 문장으로 쓰세요.
답. 특수해 하나에 동차해 전체를 더한 것입니다.
확인 3-2. 특수해를 다르게 골라도 되는 이유를 쓰세요.
답. 두 특수해의 차가 동차해이므로 같은 집합이 나옵니다.
확인 3-3. 자유변수가 개이면 해집합은 어떤 모양입니까?
답. 평면 모양이며 원점을 지날 수도 있고 아닐 수도 있습니다.
문제. 미지수가 개인 를 봅니다.
(1) 해가 존재할 조건을 계수로 쓰세요.
(2) 해가 유일할 조건을 쓰세요.
(3) 세 경우를 하나의 표로 정리하세요.
생각의 실마리. 67강 문제 3에서 판정한 것을 계수의 언어로 옮기는 문제입니다. 와 를 비교하면 모순 행의 유무가 드러납니다.
풀이. (1) 해가 없는 경우는 , 인 행이 나올 때였습니다. 그것은 첨가행렬에서 상수항 열에 피벗이 서는 것과 같습니다.
상수항 열에 피벗이 서면 의 피벗이 의 피벗보다 하나 많으므로
입니다. 따라서 해가 존재할 조건은
입니다.
(2) 해가 존재한다고 할 때, 자유변수가 없으면 유일합니다. 자유변수의 개수는 이므로 조건은
입니다.
(3) 정리합니다.
이 문제에서 배우는 것: 계수에 의한 판정.
판정 정리. 가 일 때
조건 해 없습니다 유일합니다 무수히 많습니다 그리고 자유변수의 개수는 입니다.
검산에서 세 경우를 확인합니다.
| 경우 | 결론 | |||
|---|---|---|---|---|
| 유일 | 둘째 줄 | |||
| 무수히 | 셋째 줄 | |||
| 없음 | 첫째 줄 |
즉시 따라오는 결과들이 있습니다.
첫째, 입니다. 피벗이 행마다 최대 하나이고 열마다 최대 하나이기 때문입니다.
둘째, 방정식이 미지수보다 적으면 해가 유일할 수 없습니다. 이면 이므로 둘째 줄이 불가능합니다. 해가 없거나 무수히 많습니다.
직관과 맞습니다. 미지수는 많은데 조건이 적으면 자유도가 남습니다.
셋째, 미지수보다 방정식이 많으면 해가 없기 쉽습니다. 이면 이므로 에서 상수항 열에 피벗이 설 여지가 있습니다. 데이터가 방정식이 되는 실제 문제가 대개 이 모양이며, 그때 정확한 해 대신 가장 가까운 근사를 찾는 것이 82강의 최소제곱입니다.
바로 확인 4.
확인 4-1. 해가 존재할 조건을 계수로 쓰세요.
답. 입니다.
확인 4-2. 자유변수의 개수를 쓰세요.
답. 입니다.
확인 4-3. 방정식이 개, 미지수가 개일 때 유일한 해가 가능합니까?
답. 불가능합니다. 계수가 이하이므로 자유변수가 최소 개 남습니다.
문제. 을 봅니다.
(1) 언제나 해가 존재합니까?
(2) 의 해를 모두 구하세요.
(3) 해집합이 갖는 구조를 말하세요.
생각의 실마리. (1)은 대입해 보면 즉시 나옵니다. (3)에서는 해 두 개를 더하거나 상수배 했을 때 여전히 해인지 확인합니다. 62강의 벡터공간 공리가 떠올라야 합니다.
풀이. (1) 이 언제나 해입니다.
이것을 자명해라 합니다. 따라서 동차계는 해가 없는 경우가 없습니다. 문제 4의 첫째 줄이 일어나지 않습니다.
(2) 소거하면 둘째 행이 첫째 행의 배이므로 사라집니다.
이고 미지수가 개이므로 자유변수가 개입니다. , 로 두면 입니다.
검산에서 두 방향벡터와 그 일차결합이 모두 을 만족합니다.
(3) 해집합이 일차결합에 대해 닫혀 있습니다. 이고 이면
입니다. 62강에서 정의한 벡터공간의 성질을 그대로 가집니다.
이 문제에서 배우는 것: 영공간.
영공간. 의 해집합을 의 영공간이라 하고 로 씁니다. 일차결합에 대해 닫혀 있으며 언제나 을 포함합니다.
동차계의 성질을 정리합니다.
| 성질 | 내용 |
|---|---|
| 자명해 | 이 언제나 해입니다 |
| 닫힘 | 해들의 일차결합이 해입니다 |
| 비자명해 조건 | 일 때 존재합니다 |
| 차원 | 자유변수의 개수 |
셋째 줄에서 즉시 따라오는 결과가 있습니다. 이면 이므로
이 사실이 72강에서 일차독립을 다룰 때 결정적으로 쓰입니다. 벡터가 차원보다 많으면 반드시 일차종속이라는 정리가 이것의 다른 표현입니다.
넷째 줄이 예고하는 것이 74강의 계수-퇴화차수 정리입니다.
**"가 남기는 것과 뭉개는 것의 합이 원래 차원"**이라는 뜻이며, 이 과목에서 가장 자주 쓰는 정리입니다. 지금은 자유변수를 세는 규칙으로만 보이지만, 74강에서 그 의미가 분명해집니다.
문제 3의 구조도 다시 읽힙니다. 해집합은 이므로, 영공간을 평행이동한 것입니다. 그래서 해집합의 차원이 와 같고, 그것이 자유변수의 개수입니다.
바로 확인 5.
확인 5-1. 동차계가 언제나 해를 갖는 이유를 쓰세요.
답. 이 언제나 해이기 때문입니다.
확인 5-2. 비자명해가 존재할 조건을 쓰세요.
답. , 즉 자유변수가 있을 때입니다.
확인 5-3. 미지수 개, 방정식 개인 동차계에 비자명해가 있습니까?
답. 있습니다. 계수가 이하이므로 자유변수가 남습니다.
| 개념 | 내용 |
|---|---|
| 기약행사다리꼴 | 피벗이 이고 피벗 열의 나머지가 |
| 유일성 | RREF는 유일합니다 |
| 계수 | 피벗의 개수 |
| 자유변수 | 개 |
| 특수해 | 인 아무것 하나 |
| 동차해 | 인 것 전체 |
| 영공간 |
| 판정 | 조건 |
|---|---|
| 해 없음 | |
| 유일 | |
| 무수히 |
| 즉시 따라오는 것 | 내용 |
|---|---|
| 피벗이 행·열마다 하나 | |
| 유일한 해가 없습니다 | |
| 인 동차계 | 비자명해가 반드시 있습니다 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 행사다리꼴이 유일하다고 봅니다 | 기약행사다리꼴만 유일합니다 |
| 자유변수를 잊고 해가 유일하다 합니다 | 피벗 없는 열을 셉니다 |
| 특수해만 답으로 씁니다 | 동차해를 더해야 전체입니다 |
| 해집합을 부분공간이라 합니다 | 이면 아핀입니다 |
문제 6. 의 기약행사다리꼴을 구하세요.
답. 입니다.
문제 7. 의 계수를 구하세요.
답. 둘째 행이 첫째의 배이므로 입니다.
문제 8. 문제 7의 자유변수 개수를 쓰세요.
답. 개입니다.
문제 9. , 이면 해가 몇 개입니까?
답. 없습니다.
문제 10. 가 이고 일 때 의 해는 어떻습니까?
답. 언제나 존재하고 자유변수가 개이므로 무수히 많습니다.
문제 11. 가 일 때 의 최댓값을 쓰세요.
답. 입니다.
문제 12. 동차계가 자명해만 가질 조건을 쓰세요.
답. 입니다.
문제 13. 이고 동차해가 일 때 일반해를 쓰세요.
답. 입니다.
문제 14. 두 특수해의 차가 무엇인지 쓰세요.
답. 동차해입니다.
문제 15. 영공간이 일차결합에 닫힌 이유를 쓰세요.
답. 이기 때문입니다.
문제 16. 미지수 개, 방정식 개인 동차계의 해집합 차원의 최솟값을 쓰세요.
답. 입니다.
문제 17. RREF가 유일한 것이 왜 유용합니까?
답. 거기서 읽는 계수 같은 양이 계산 경로가 아니라 행렬 자신의 성질이 되기 때문입니다.
문제 18. 해집합이 원점을 지날 조건을 쓰세요.
답. 일 때입니다.
심화 1. 기약행사다리꼴의 유일성을 증명하세요.
풀이. 두 부분으로 나눕니다.
1단계. 피벗 열의 위치가 유일합니다.
의 열을 이라 하고 다음 성질을 봅니다.
가 의 일차결합이다.
행 연산은 이 성질을 보존합니다. 왜냐하면 라는 것은 동차계 이 이고 인 해를 가진다는 뜻인데, 행 연산은 해집합을 바꾸지 않기 때문입니다. 역방향도 같습니다.
이제 RREF에서 번째 열이 피벗 열인 것과 가 거짓인 것이 같음을 봅니다. RREF에서 피벗 열은 단위벡터 이고 그 앞의 열들은 번째 성분이 모두 이므로 일차결합으로 을 만들 수 없습니다. 반대로 피벗이 아닌 열은 그 앞의 피벗 열들의 일차결합입니다.
따라서 피벗 열의 집합은 만으로 정해지고 계산 경로와 무관합니다.
2단계. 성분도 유일합니다.
피벗 열의 위치가 로 정해졌다고 합니다. RREF에서 번째 열은 입니다. 이것은 정의에서 강제됩니다.
피벗이 아닌 열 를 봅니다. RREF에서 이 열은 보다 앞선 피벗 열들의 일차결합입니다.
그런데 이 일차독립이므로 계수 가 유일하게 정해집니다. 그리고 이 계수는 1단계와 같은 이유로 원래 의 열들 사이의 관계에서 결정되므로 계산 경로와 무관합니다.
두 단계를 합치면 RREF가 유일합니다.
증명의 구조를 다시 봅니다. 핵심은 행 연산이 열들 사이의 일차 관계를 보존한다는 것 하나였고, 그것은 67강 문제 2에서 증명한 해집합 보존의 다른 표현입니다. 67강의 결과가 여기서 정확히 필요했습니다.
행사다리꼴이 유일하지 않다는 점도 확인해 둡니다. 과 은 같은 행렬의 서로 다른 행사다리꼴일 수 있습니다. 피벗의 위치는 같지만 값이 다릅니다.
심화 2. 를 증명하고 등호가 되는 경우를 논하세요.
풀이. 두 부등식을 따로 봅니다.
. 66강 심화 1의 둘째 관점에서 의 각 열은 이고, 그것은 의 열들의 일차결합입니다. 따라서 의 모든 열이 의 열들로 만들어집니다. 일차독립인 열의 최대 개수가 계수이므로 의 계수가 더 클 수 없습니다.
. 66강 심화 1의 셋째 관점에서 의 각 행은 의 행들의 일차결합입니다. 같은 논리로 따라옵니다. 여기서 계수가 행으로 세도 열로 세도 같다는 사실을 썼는데, 73강에서 증명합니다.
검산에서 와 을 곱하면 계수가 를 넘지 않음이 확인됩니다.
무작위 행렬에서는 상한이 그대로 달성됩니다. 특별한 관계가 없으면 계수가 최대가 되기 때문입니다.
등호가 깨지는 예도 봅니다.
인데 입니다. 66강의 영인자가 계수의 언어로 다시 나타났습니다. 가 살려 둔 방향을 가 정확히 뭉개면 아무것도 남지 않습니다.
등호 조건도 있습니다. 가 역행렬을 가지면 입니다. 가역인 변환은 정보를 잃지 않기 때문이며, 69강에서 이 관점을 정식화합니다.
이 부등식이 실무에서 쓰이는 자리가 있습니다. 저계수 근사입니다. 큰 행렬 을 로 근사할 때 가 이고 가 이면 곱의 계수가 이하이므로, 를 조절해 근사의 정밀도와 저장 비용을 맞바꿉니다. 89강의 주성분분석과 342강의 저계수 적응이 같은 발상입니다.
심화 3. 해집합이 아핀 부분공간임을 밝히고 부분공간과 구별하세요.
풀이. 62강에서 벡터공간을 정의했고, 그 안에서 같은 공리를 만족하는 부분집합을 부분공간이라 합니다. 71강에서 정식으로 다루지만 조건만 미리 씁니다.
부분공간의 조건. 을 포함하고, 덧셈과 상수배에 대해 닫혀 있습니다.
동차계의 해집합 는 부분공간입니다. 문제 5에서 확인했습니다.
비동차계의 해집합은 부분공간이 아닙니다. 이면 이 해가 아니기 때문입니다. 실제로 해 두 개를 더하면
이므로 덧셈에 닫혀 있지도 않습니다.
그런데 완전히 무관한 것은 아닙니다. 부분공간을 평행이동한 것입니다.
이런 집합을 아핀 부분공간이라 합니다.
| 부분공간 | 아핀 부분공간 | |
|---|---|---|
| 원점 포함 | 예 | 아닐 수 있습니다 |
| 덧셈 닫힘 | 예 | 아닙니다 |
| 모양 | 원점 지나는 평평한 집합 | 평평한 집합 |
아핀 부분공간에서도 닫혀 있는 연산이 있습니다. 계수의 합이 인 일차결합입니다.
두 해를 잇는 직선 위의 모든 점이 해라는 뜻입니다. 이것을 아핀결합이라 하며, 확률에서 인 경우가 볼록결합이 됩니다. 205강의 볼록집합에서 다시 나옵니다.
실용적 의미도 있습니다. 신경망에서 는 원점을 지나는 변환이라 표현력이 제한되므로 편향을 더해 로 씁니다. 아핀변환이며, 224강에서 그것이 왜 필요한지 다시 봅니다.
심화 4. 가우스-조던과 가우스 소거의 계산량을 비교하세요.
풀이. 67강 심화 1에서 가우스 소거가 이었습니다. 가우스-조던은 위쪽도 소거하므로 더 듭니다.
가우스-조던의 계산량. 각 단계 에서 피벗 행을 정규화한 뒤, 그 열의 다른 모든 행 개를 소거합니다. 각 행마다 개의 성분을 갱신하므로
입니다. 가우스가 이므로 약 배입니다.
| 방법 | 전진 | 후진 | 합계 |
|---|---|---|---|
| 가우스 + 후진대입 | |||
| 가우스-조던 | 없음 |
후진대입이 없어지지만 그 이득이 수준이라 의 추가 비용을 못 갚습니다.
그러면 가우스-조던은 언제 씁니까. 세 가지입니다.
| 용도 | 이유 |
|---|---|
| 이론 | RREF가 유일하므로 표준형입니다 |
| 계수 계산 | 피벗을 명확히 셉니다 |
| 역행렬 | (69강) |
실제 계산에서 방정식만 풀 때는 가우스로 충분하며, 심지어 실무 라이브러리는 LU 분해를 미리 해 두고 여러 에 대해 재사용합니다. 70강에서 그 이점을 봅니다.
한 가지 더 있습니다. 가우스-조던은 수치적으로 더 위험할 수 있습니다. 소거 연산이 많아지면 반올림 오차가 쌓일 기회도 늘어나기 때문입니다. 그래서 정밀한 계산에서는 잘 쓰지 않습니다.
심화 5. 방정식과 미지수의 개수 관계로 실제 문제를 분류하세요.
풀이. 문제 4에서 과 의 대소가 해의 성격을 좌우함을 보았습니다. 실제 문제에서 어떻게 나타나는지 봅니다.
: 부족결정계입니다. 조건보다 미지수가 많아 해가 무수히 많습니다.
| 예 | 상황 |
|---|---|
| 압축센싱 | 측정이 신호 차원보다 적습니다 |
| 신경망 학습 | 파라미터가 데이터보다 많습니다 |
| CT 재구성 | 투영 각도가 부족합니다 |
무수히 많은 해 중 어느 것을 고르느냐가 문제가 됩니다. 답은 추가 기준을 두는 것입니다. 노름이 최소인 해를 고르거나(), 성분이 인 것이 많은 해를 고릅니다(). 83강에서 최소 노름 해를 다루고, 그 선택이 곧 사람이 넣는 가정입니다.
: 과결정계입니다. 조건이 많아 정확한 해가 대개 없습니다.
| 예 | 상황 |
|---|---|
| 회귀 | 데이터가 파라미터보다 많습니다 |
| 측량 | 측정을 여러 번 합니다 |
| 보정 | 관측이 모델보다 많습니다 |
정확한 해를 포기하고 오차를 최소화합니다. 를 최소로 하는 를 찾는 것이 82강의 최소제곱이며, 64강의 정사영이 그 기하적 정체입니다.
이라도 안심할 수 없습니다. 이면 여전히 특이합니다. 그리고 계수가 이더라도 조건수가 나쁘면 67강 심화 6에서 본 대로 답을 믿을 수 없습니다.
| 상황 | 대응 |
|---|---|
| 추가 기준으로 해를 고릅니다 | |
| 최소제곱으로 근사합니다 | |
| , 조건 나쁨 | 정칙화합니다 |
세 경우 모두 "그냥 풀면 되는" 상황이 아닙니다. 실제 데이터를 다룰 때 정확한 해가 존재하고 유일한 경우는 오히려 드물며, 이 강의의 판정 정리는 무엇이 문제인지 진단하는 도구로 쓰입니다.
심화 6. 계수-퇴화차수 정리를 자유변수 세기로부터 예고하고 그 의미를 논하세요.
풀이. 문제 5에서 자유변수의 개수가 였습니다. 그리고 자유변수 하나마다 영공간의 방향벡터가 하나씩 나옵니다.
옮겨 쓰면
입니다. 이것이 계수-퇴화차수 정리이며 74강에서 정식으로 증명합니다.
지금은 세는 규칙으로 보이지만 의미가 있습니다. 를 인 변환으로 읽으면
| 항 | 뜻 |
|---|---|
| 입력 공간의 차원 | |
| 출력에 살아남는 차원 | |
| 으로 뭉개지는 차원 |
**"입력 차원 = 살아남는 것 + 뭉개지는 것"**입니다. 어떤 차원도 사라지거나 생기지 않고 두 갈래로 나뉩니다.
예를 봅니다. 66강 문제 5의 정사영 은 이고 입니다. 그러면 이어야 하는데, 실제로 축 전체가 으로 갑니다. 평면의 두 차원 중 하나는 살고 하나는 뭉개집니다.
이 정리가 왜 강력한지도 짚어 둡니다. 두 양 중 하나를 알면 다른 하나가 따라옵니다. 영공간을 직접 구하기 어려울 때 계수만 세면 그 차원을 알 수 있고, 반대도 됩니다.
그리고 이 정리는 이 과목을 넘어 계속 나타납니다.
| 분야 | 대응하는 진술 |
|---|---|
| 군론 | 준동형사상의 제1정리 |
| 위상수학 | 오일러 표수의 교대합 |
| 미분기하 | 정칙값 정리의 차원 계산 |
공통점은 "전체 = 상 + 핵"의 형태이며, 선형대수에서 가장 단순한 모습으로 나타난 것이 이 정리입니다.
이 강의에서는 numpy만 씁니다. RREF를 직접 구현해 유일성을 확인하고, 해집합의 구조와 계수 판정을 대조합니다. 유일성은 여러 경로로 계산해 비교하는 방식으로만 확인할 수 있으므로 코드가 특히 유용합니다.
import numpy as np
def rref(M):
"""기약행사다리꼴과 피벗 열 목록을 돌려줍니다."""
R = M.astype(float).copy(); m, n = R.shape; r = 0; piv = []
for c in range(n):
k = None
for i in range(r, m):
if abs(R[i, c]) > 1e-12: k = i; break
if k is None: continue
if k != r: R[[r, k]] = R[[k, r]]
R[r] = R[r] / R[r, c]
for i in range(m):
if i != r and abs(R[i, c]) > 1e-12: R[i] -= R[i, c] * R[r]
piv.append(c); r += 1
if r == m: break
return np.round(R, 10), piv
# --- 문제 1: 끝까지 밀면 답이 상수항 열에 남습니다 ----------------------
A = np.array([[1.,2.,1.,6.],[2.,5.,3.,17.],[1.,3.,4.,20.]])
R, p = rref(A); print(R.tolist(), p)
# [[1.0, 0.0, 0.0, 0.5], [0.0, 1.0, 0.0, 0.5], [0.0, 0.0, 1.0, 4.5]] [0, 1, 2]
# --- 문제 2: 경로가 달라도 RREF는 같습니다 -------------------------------
B = np.array([[1.,2.,-1.,3.],[2.,4.,-1.,7.],[3.,6.,-2.,10.]])
R1, p1 = rref(B)
R2, _ = rref(B[[2,0,1]].copy()) # 행 순서를 섞고
B3 = B.copy(); B3[1] += 5*B3[0]; B3[2] -= 2*B3[1] # 무관한 연산을 끼워도
R3, _ = rref(B3)
print(R1.tolist(), p1)
# [[1.0, 2.0, 0.0, 4.0], [0.0, 0.0, 1.0, 1.0], [0.0, 0.0, 0.0, 0.0]] [0, 2]
print(bool(np.allclose(R1,R2)), bool(np.allclose(R1,R3))) # True True
# --- 문제 3: 특수해 + 동차해 --------------------------------------------
Am = np.array([[1.,2.,0.],[0.,0.,1.]]); bm = np.array([3.,4.])
xp = np.array([3.,0.,4.]) # 특수해
h = np.array([-2.,1.,0.]) # 동차해 방향
print(np.round(Am@xp,10).tolist(), np.round(Am@h,10).tolist())
# [3.0, 4.0] [0.0, 0.0]
for t in [0., 2., -1.5]:
print(t, np.round(Am@(xp + t*h), 10).tolist())
# 0.0 [3.0, 4.0]
# 2.0 [3.0, 4.0]
# -1.5 [3.0, 4.0]
# --- 문제 4: 계수로 판정합니다 ------------------------------------------
cases = {
"유일": (np.array([[1.,0.],[0.,1.]]), np.array([1.,2.])),
"무수": (np.array([[1.,1.],[2.,2.]]), np.array([1.,2.])),
"없음": (np.array([[1.,1.],[2.,2.]]), np.array([1.,3.])),
}
for name, (M, v) in cases.items():
print(name, int(np.linalg.matrix_rank(M)),
int(np.linalg.matrix_rank(np.column_stack([M, v]))), M.shape[1])
# 유일 2 2 2
# 무수 1 1 2
# 없음 1 2 2
# --- 문제 5: 동차계와 영공간 --------------------------------------------
H = np.array([[1.,2.,3.],[2.,4.,6.]])
Rh, ph = rref(np.column_stack([H, np.zeros(2)])); print(Rh.tolist(), ph)
# [[1.0, 2.0, 3.0, 0.0], [0.0, 0.0, 0.0, 0.0]] [0]
n1 = np.array([-2.,1.,0.]); n2 = np.array([-3.,0.,1.])
print(np.round(H@n1,10).tolist(), np.round(H@n2,10).tolist())
# [0.0, 0.0] [0.0, 0.0]
print(np.round(H@(3*n1 - 2*n2), 10).tolist()) # [0.0, 0.0] (일차결합도 해)
# --- 심화 2: rank(AB) <= min(rank A, rank B) ----------------------------
rng = np.random.default_rng(0)
for (m, n, k) in [(5,4,2), (6,6,3), (4,7,4)]:
X = rng.standard_normal((m,k)); Y = rng.standard_normal((k,n))
print(m, n, k, int(np.linalg.matrix_rank(X@Y)))
# 5 4 2 2
# 6 6 3 3
# 4 7 4 4
실행하면 주석과 같은 값이 나옵니다. 다섯 곳을 짚어 둡니다.
첫째, 문제 1에서 RREF의 상수항 열이 그대로 답입니다. 이며 67강의 후진대입 결과와 같습니다. 끝까지 밀면 대입 단계가 사라집니다.
둘째가 이 강의의 핵심 확인입니다. 세 가지 다른 경로가 모두 같은 RREF를 줍니다. 행 순서를 섞어도, 중간에 무관한 행 연산을 끼워 넣어도 True True입니다. 유일성 증명은 심화 1이 맡고, 코드는 그 주장이 실제로 성립함을 보입니다.
셋째, 특수해에 동차해를 아무리 더해도 가 로 고정됩니다. 가 이든 든 든 같습니다. 가 에 의해 이 되므로 결과에 영향을 주지 않습니다.
넷째, 계수 판정이 세 경우를 정확히 갈라냅니다. "없음"에서만 이고 로 값이 어긋납니다. 상수항을 붙였을 때 계수가 오르면 해가 없습니다.
다섯째, 영공간이 일차결합에 닫혀 있음이 확인됩니다. 도 으로 갑니다. 심화 2에서는 개의 열을 거쳐 만든 곱의 계수가 를 넘지 않습니다.
코드로 할 수 없는 일도 분명히 해 둡니다. 세 경로에서 같은 RREF가 나온 것은 유일성의 증명이 아닙니다. 무한히 많은 경로 중 셋을 본 것뿐입니다. 심화 1의 논증이 그 자리를 맡으며, 코드는 반증이 없음을 확인하는 역할입니다. 반대로 만일 하나라도 다른 결과가 나왔다면 그것은 완결된 반증이 됩니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| RREF | 기약행사다리꼴 | 피벗이 이고 그 열이 단위벡터입니다 |
| 계수 | 피벗의 개수입니다 | |
| 영공간 | 의 해집합입니다 | |
| \mathbf{x}_ | 특수해 | 인 하나입니다 |
| 동차계 | homogeneous | 상수항이 입니다 |
| 자명해 | trivial | 입니다 |
| 아핀 부분공간 | affine | 부분공간을 평행이동한 것입니다 |
| 부족결정 | 해가 무수히 많습니다 | |
| 과결정 | 정확한 해가 대개 없습니다 |
다음 69강에서는 되돌리기를 다룹니다. 66강 문제 3에서 행렬을 소거할 수 없다고 했고, 67강에서 되돌릴 수 있는 연산만 써야 한다고 했습니다. 그러면 어떤 행렬을 되돌릴 수 있습니까. 답이 역행렬이며, 그 존재 조건이 이 강의의 계수와 정확히 맞물립니다.