2단원 · 행렬과 선형변환

무엇이 변하고, 무엇이 남나요?

1872년 펠릭스 클라인은 어떤 변환을 허용할 때 끝까지 남는 성질로 기하학을 구분했어요. 도형만 보는 데서 나아가 도형에 작용하는 변환도 함께 보는 관점이에요. 이 단원에서는 변환을 행렬로 나타내고, 무엇이 바뀌며 무엇이 남는지 비교해 봐요.

1소거 퍼즐 — 가우스 소거법 12고대02-01·02

연립일차방정식을 첨가행렬로 바꾸면 세 가지 행 연산으로 풀 수 있어요. 왼쪽을 $\begin{pmatrix}1&0\\0&1\end{pmatrix}$로 만들면 오른쪽 열에서 해를 바로 읽을 수 있어요. 최소 횟수로 풀어 보세요.

0단계

각 행은 직선 하나를 나타내요. 마지막에는 두 직선이 축과 나란한 꼴로 정리돼요. 식의 모양은 달라져도 교점인 해는 그대로예요. 기본 행 연산은 해집합을 보존해요.

더 깊이 보기 — 같은 소거 과정으로 구하는 역행렬

첨가행렬 $(A \mid I)$ 에 같은 행 연산을 가해 $(I \mid A^{-1})$ 을 얻는 것이 가우스-조르당 역행렬 계산법이에요 [12고대02-02]. 연결 탐구 1(Lights Out)에서는 같은 소거법을 0과 1만 쓰고 2가 되면 다시 0으로 계산하는 수 체계 $\mathbb{F}_2$에 적용하면 퍼즐도 연립방정식으로 풀 수 있어요. 계산 규칙이 달라도 소거의 생각은 그대로 쓸 수 있다는 사례예요.

2격자의 변화로 읽는 선형변환 12고대02-03·04·05

선형변환 $T$의 두 조건: $T(u+v)=T(u)+T(v)$, $T(cu)=cT(u)$. 이 두 조건을 만족하면 한 직선 위의 등간격 관계가 보존돼요. $T$가 가역이면 서로 다른 평행선도 다시 서로 다른 평행선이 돼요. $T(e_1),T(e_2)$만 알면 모든 벡터의 결과를 계산할 수 있고, 두 결과를 열로 세운 것이 바로 행렬이에요.

초록/붉은 사각형 = 단위정사각형의 상. 그 넓이가 $|\det A|$, 뒤집히면(붉은색) $\det A < 0$ — 행렬식은 넓이 배율과 도형이 거울처럼 뒤집혔는지를 함께 기록하는 수예요 [12고대02-03]. 회전 프리셋에서 나오는 복소 고윳값은 3단원에서 다시 살펴봐요.

3합성 실험실 — 행렬곱은 왜 순서를 타는가 12고대02-06

변환을 이어 붙이면(합성) 행렬은 이 돼요: $T_2 \circ T_1 \leftrightarrow A_2 A_1$. 두 합성변환을 나란히 실행하여 곱의 순서를 바꾸었을 때 결과가 같은지 확인해 보세요.

F
F
더 깊이 보기 — 순서를 바꾸면 결과가 달라지는 까닭

가역변환끼리 합성하면 다시 가역변환이고, 세 변환을 묶는 위치를 바꿔도 결과는 같아요. 항등변환과 각 변환을 되돌리는 역변환까지 같은 모임 안에 있으면 이를 군(group)이라고 해요. 같은 중심의 회전끼리는 적용 순서를 바꿔도 결과가 같지만, 정다각형의 회전과 반사를 섞으면 보통 순서에 따라 결과가 달라져요. ‘가환’은 순서를 바꿔도 같다는 뜻이고, ‘비가환’은 그렇지 않다는 뜻이에요.

4변환군에 따른 불변량

변환의 종류를 고르고 여러 변환을 적용하여 어떤 성질이 계속 보존되는지 확인해 보세요. 허용되는 변환이 많아질수록 보존되는 성질은 줄어들며, 어떤 변환에서 어떤 성질이 보존되는지가 해당 기하학에서 무엇을 연구할지가 정해져요.

적용 0회
성질처음지금보존 여부

연결 탐구 · 클라인의 관점
  • 등거리군에서 보존되는 성질: 길이·각·넓이 → 유클리드 기하
  • 닮음군에서 보존되는 성질: 각·비율 → 닮음 기하
  • 일반선형군에서 보존되는 성질: 평행성·넓이의 → 아핀 기하의 핵심 불변량
허용한 변환과 그때 보존되는 성질로 기하학을 구분하는 클라인의 변환군 관점

5복소수 곱셈의 행렬 표현

복소수 $z = a+bi$ 에 행렬 $M(z) = \begin{pmatrix} a & -b \\ b & a \end{pmatrix}$ 를 대응시키면, 복소수 곱셈이 그대로 행렬곱이 돼요. $i$ 는 $\begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}$ — 90° 회전행렬. $i^2=-1$은 90° 회전을 두 번 하면 180° 회전, 곧 −1배가 되는 관계와 이어져요.

z = ? |z| = ?, arg = ? z·w = ?

zw를 드래그해 보세요. z·w 는 "w를 arg(z)만큼 돌리고 |z|배 늘인 것" — 복소수 곱셈은 회전과 닮음을 2×2 실수 행렬로 나타낸 셈이에요.

더 깊이 보기 — 사원수로 나타내는 3차원 회전

2차원 회전은 복소수로, 3차원 회전은 사원수(quaternion)로 나타낼 수 있으며, 사원수는 게임 엔진과 로켓의 자세 제어에도 쓰이는 수 체계예요. 관련 논문 Quaternions and Rotations in E⁴를 참고하면 수행평가 심화 주제로 확장할 수 있어요.

6동차좌표와 원근 투영

초점거리를 $d$로 두면 “멀수록 작게”는 $x'=\dfrac{d\,x}{z+d}$로 나타나요. 나눗셈이 들어가므로 이 식 자체는 비선형이에요. 좌표를 $(x,y,z,1)$로 하나 늘리는 동차좌표를 쓰면 행렬곱과 마지막 나눗셈으로 계산을 나눌 수 있어요. 3D 게임도 화면을 그릴 때마다 이 계산으로 원근감을 만들어요.

d = 4.0

$$\begin{pmatrix} x' \\ y' \\ z' \\ w \end{pmatrix} = \begin{pmatrix} 1&0&0&0 \\ 0&1&0&0 \\ 0&0&1&0 \\ 0&0&\tfrac{1}{d}&1 \end{pmatrix} \begin{pmatrix} x \\ y \\ z \\ 1 \end{pmatrix},\qquad \text{화면 좌표} = \left(\tfrac{x'}{w},\ \tfrac{y'}{w}\right)$$ 카메라를 가까이 가져갈수록($d\downarrow$) 가까운 물체와 먼 물체의 크기 차이가 커져요.

연결 탐구 · 표현을 바꾸어 선형으로 나타내기 원근을 만드는 나눗셈은 행렬곱이 끝난 뒤 마지막 단계에서 한 번 해요. 좌표 하나를 늘리면 이동·회전·원근에 필요한 계산을 4×4 행렬곱으로 묶을 수 있어요. 그래픽 처리 장치(GPU)도 이 행렬 계산을 반복해요. 르네상스 화가의 소실점 원근법과 오늘날 게임 화면의 원근을 같은 수학으로 설명할 수 있어요.

수행평가 1 · 행렬과 선형변환 모델링 (9월 3주)

논문 한 편을 골라 정의와 명제를 직접 계산하거나 시뮬레이션으로 구현하십시오. 결과는 LaTeX로 작성한 논술에 정리하십시오. 아래 시작 코드를 복사한 뒤 ★ 표시된 값을 바꾸어 자신만의 탐구로 발전시키십시오.

읽을 논문 · 난이도 순

Turning Lights Out with Linear Algebra — Anderson & Feil (1998)
Mathematics Magazine 71(4), 1998
§1–2를 읽고 퍼즐 규칙을 𝔽₂ 연립방정식으로 옮기는 과정을 자신의 언어로 재구성하십시오. 연결 탐구 1에서 직접 실험하고, 4×4와 6×6 보드에서 풀리는 배치의 비율을 비교하십시오.
Iterated Function Systems and the Global Construction of Fractals — Barnsley & Demko (1985)
Proc. Royal Society A · 웹 공개 PDF
§1의 아이디어와 고사리 계수표를 먼저 읽으십시오. 아래 시작 코드와 연결 탐구 2에서 구현을 살펴보십시오. 아핀 계수 하나를 바꾸어 변형되는 부분을 찾고, 수축 정도와 형태 안정성의 관계를 설명하십시오.
Error Detecting and Error Correcting Codes — Hamming (1950)
Bell System Technical Journal · 웹 공개 PDF
§1–3을 읽고 (7,4) 해밍 부호를 𝔽₂ 행렬곱으로 구현하여 1비트 오류를 자동 복구하십시오. QR코드가 일부 훼손되어도 읽히는 이유를 이 논문의 개념으로 설명하십시오.
The Mathematics of Perspective Drawing — 소실점에서 사영기하까지
원근법·사영기하·동차좌표를 다룬 읽을거리
6번 위젯과 함께 르네상스 원근법, 동차좌표, 4×4 행렬 렌더러의 관계를 살펴보십시오. 소실점이 무한원점이라는 말의 의미를 동차좌표로 정확히 서술하십시오.

스타터 코드

starter-fern.html — 반슬리 고사리 (20줄)
<canvas id="c" width="500" height="500"></canvas>
<script>
const ctx = document.getElementById("c").getContext("2d");
// 반슬리의 아핀 변환 4개: [a,b,c,d,e,f,확률] → (x,y) ↦ (ax+by+e, cx+dy+f)
const maps = [
  [ 0.00,  0.00,  0.00, 0.16, 0, 0.00, 0.01],  // ★ 줄기
  [ 0.85,  0.04, -0.04, 0.85, 0, 1.60, 0.85],  // 본체의 0.85를 0.8로 바꾸십시오.
  [ 0.20, -0.26,  0.23, 0.22, 0, 1.60, 0.07],  // ★ 왼쪽 잎
  [-0.15,  0.28,  0.26, 0.24, 0, 0.44, 0.07],  // ★ 오른쪽 잎
];
let x = 0, y = 0;
for (let i = 0; i < 40000; i++) {
  let r = Math.random(), m;
  for (m of maps) { r -= m[6]; if (r < 0) break; }
  [x, y] = [m[0]*x + m[1]*y + m[4], m[2]*x + m[3]*y + m[5]];
  ctx.fillStyle = "#55703F";
  ctx.fillRect(250 + x*46, 500 - y*46, 1, 1);   // ★ 46: 확대 배율
}
</script>
starter-perspective.html — 동차좌표 원근 렌더러 (25줄)
<canvas id="c" width="500" height="400"></canvas>
<script>
const ctx = document.getElementById("c").getContext("2d");
const d = 4;                       // ★ 카메라 거리(2로 줄이면 더 넓게 보입니다.)
const verts = [];                  // 정육면체 8꼭짓점
for (const sx of [-1,1]) for (const sy of [-1,1]) for (const sz of [-1,1])
  verts.push([sx, sy, sz]);
const edges = [[0,1],[0,2],[0,4],[3,1],[3,2],[3,7],[5,1],[5,4],[5,7],[6,2],[6,4],[6,7]];
let th = 0;
setInterval(() => {
  ctx.clearRect(0, 0, 500, 400);
  th += 0.01;                      // ★ 회전 속도
  const P = verts.map(([x,y,z]) => {
    const rx = x*Math.cos(th) + z*Math.sin(th);        // y축 회전(선형변환)
    const rz = -x*Math.sin(th) + z*Math.cos(th);
    const w  = rz/d + 1;                               // 동차좌표의 마지막 성분
    return [250 + 130*rx/w, 200 - 130*y/w];            // 원근 나눗셈은 여기 한 번뿐
  });
  ctx.strokeStyle = "#8A4525"; ctx.lineWidth = 2;
  for (const [i,j] of edges) {
    ctx.beginPath(); ctx.moveTo(...P[i]); ctx.lineTo(...P[j]); ctx.stroke();
  }
}, 16);
</script>

연결 탐구 1에서 Lights Out 해법 시작 코드를 확인할 수 있어요. 논술 개요에는 문제, 계산, 결론, 적용 한계를 포함하세요.

이 단원과 연결되는 탐구

탐구

연결 탐구 2 · 아핀변환과 프랙탈

오늘 배운 변환을 정해진 확률로 반복하면 IFS 프랙탈을 만들 수 있어요.

확장

연결 탐구 7 · 곡선과 접공간

평면곡선의 단위 접벡터를 90° 돌리면 수직인 두 방향 중 하나를 얻을 수 있어요.