Logseq/pages/2.3 행렬 계산과 A = LU.md
songyc macbook 8cbc09bc32 fix: hls OCR 오타 46개 교정 + 볼드 안 LaTeX 중첩 44곳 분리
- hls 페이지 텍스트 하이라이트 본문을 책 원문 기준으로 교정 (속성·uuid 불변)
  - 오독 교정 포함: "2개의 피벗" → "n개의 피벗" 등
- 2장 페이지 6개에서 **...** 안에 $...$가 중첩된 44줄을 규칙대로 분리
- CLAUDE.md: hls 본문 텍스트 교정 허용 예외 규칙 추가

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G8rNxLqi5rYjRamC8uwiJW
2026-07-25 08:36:28 +09:00

9.9 KiB
Executable File
Raw Blame History

deck:: Logseq/전공공부/선형대수학

  • 핵심 개념

    • 이 절의 요지 3가지:
      • n \times n 행렬 AU 로 바꾸는 소거는 약 \frac{1}{3}n^3 번의 곱셈과 뺄셈이 필요하다.
      • ② 우변 bc 로 바꾸는 데는 n^2 번이면 된다.
      • ③ 행 교환이 없는 소거는 ALU 로 분해한다 (A = LU 의 2가지 증명).
    • 가우스-조르단 소거법 (Gauss-Jordan elimination): AX = I 를 열 단위로 한꺼번에 푸는 방법.
      • 📌 원문 (p.97): ((6a635ba0-717a-49ea-81c6-1b80acfb2f4c))
      • 아이디어: A^{-1}k 번째 열 x_kAx_k = e_k 의 해다 (e_kIk 번째 열). n 개의 방정식이 모두 같은 계수행렬 A 를 가지므로 첨가행렬을 [A \ \ I] 로 잡고 소거를 한 번만 적용한다.
      • [A \ \ I] \xrightarrow{\text{소거}} [I \ \ A^{-1}]
      • ⚠️ 가우스-조르단은 (역대입 대신) 피벗 위쪽까지 소거해 A 자리를 완전히 I 로 만든다. Ax=b 하나를 푸는 것보다 느리다A^{-1} 가 정말 필요할 때만 쓴다.
      • 💡 이 책의 일관된 메시지: x = A^{-1}b 라고 해서 실제로 A^{-1} 를 계산하지는 마라. 소거+역대입이 훨씬 싸다.
    • 소거법의 비용 (연산 횟수 세기)
      • 📌 원문 (p.97): ((6a635bbc-cd20-4362-8dcc-ae180ca53cba))
      • A \to U: 1단계(1열 소거)는 약 n^2 번의 곱셈·뺄셈, 2단계는 (n-1)^2, … → 총합 n^2 + (n-1)^2 + \cdots + 1^2 \approx \frac{1}{3}n^3.
        • 💡 제곱의 합 \approx x^2 의 적분 = \frac{1}{3}n^3 — 미적분과의 연결.
      • 우변 b \to c (소거 적용) 그리고 c \to x (역대입): 합쳐서 정확히 n^2 번.
        • [(n-1) + (n-2) + \cdots + 1] + [1 + 2 + \cdots + (n-1) + n] = n^2
      • 크기 감각: n = 1{,}000 이면 약 1초. n 이 2배가 되면 시간은 2^3 = 8 배 (n^3 규칙). 실무의 큰 행렬은 대부분 희소행렬 (sparse matrix, 대부분 성분이 0)이라 A = LU 계산이 훨씬 빠르다.
    • A = LU 분해 — 이 장의 핵심 공식
      • 소거 과정 EA = U 를 뒤집으면 A = E^{-1}U = LU. 2.2 소거행렬과 역행렬의 식 (11)이 \ell_{ij}L 의 정확한 위치에 배치됨을 보여줬다.
      • L U 의 정확한 형태 🧩:
        • L = 주대각선이 1이고, 주대각선 아래 (i,j) 에 승수 \ell_{ij} 가 들어간 하삼각행렬.
        • U = 소거가 끝난 상삼각행렬, 주대각선에 피벗들이 놓인다.
        • A = LU = \begin{bmatrix} 1 & & \\ \ell_{21} & 1 & \\ \ell_{31} & \ell_{32} & 1 \end{bmatrix} \begin{bmatrix} \text{피벗}_1 & * & * \\ & \text{피벗}_2 & * \\ & & \text{피벗}_3 \end{bmatrix}
    • 증명 1 — 행 단위로 보기: L 에서 \ell_{ij} 가 제자리에 있는 이유 (p.99~100)
      • 📌 원문 (p.99): ((6a635be3-d31e-4142-a915-420dc9b58289))
      • 소거 중 피벗 행에서 빼는 것은 A 의 원래 행이 아니라 이미 완성된 U 의 행이다 (피벗 행은 그 뒤로 다시 바뀌지 않으므로).
      • (U \text{의 3행}) = (A \text{의 3행}) - \ell_{31}(U \text{의 1행}) - \ell_{32}(U \text{의 2행}) \tag{3}
      • 📌 원문 — 식 (3) (p.100): 🔗 PDF 위치
        • A=LU 증명 식 (3) (p.100)
      • 이 식을 이항하면:
      • (A \text{의 3행}) = \ell_{31}(U \text{의 1행}) + \ell_{32}(U \text{의 2행}) + 1 \cdot (U \text{의 3행}) \tag{4}
      • 📌 원문 — 식 (4) (p.100): 🔗 PDF 위치
        • A=LU 증명 식 (4) (p.100)
      • 식 (4)가 정확히 행렬곱 A = LU 의 3행이다 — L 의 3행 [\ell_{31} \ \ \ell_{32} \ \ 1] 이 그대로 읽힌다. 모든 크기 n 에서 성립.
    • 증명 2 — (열)×(행) 랭크 1 행렬로 보기 (p.100~101)
      • 소거를 "A 에서 (L의 열)·(U의 행) 인 랭크 1 행렬을 빼는 것"으로 본다.
      • 1단계: \ell_1 = (1, \ell_{21}, \ell_{31}, \cdots)u_1 = (A 의 1행) 에 대해 A - \ell_1 u_1 = A_2 를 만들면 A_2 의 1행과 1열은 전부 0.
      • 반복하면 매 단계 "L 의 열 \ell_j × U 의 피벗 행 $u_j$" 를 소거하고, 조각을 다시 합치면:
      • A = \ell_1 u_1 + \ell_2 u_2 + \cdots + \ell_n u_n = \begin{bmatrix} \ell_1 & \cdots & \ell_n \end{bmatrix}\begin{bmatrix} u_1 \\ \vdots \\ u_n \end{bmatrix} = LU \tag{5}
      • 💡 1장 마지막의 "(열)×(행) 곱셈" 관점이 여기서 진가를 발휘한다. U 의 피벗 행 u_k 는 앞에 (k-1) 개의 0, L 의 열 \ell_k 도 위에 (k-1) 개의 0으로 시작.
    • 행 교환 없이 A = LU 분해가 가능한 조건 (p.101)
      • "행 교환이 없고 피벗에 0이 없는 A = LU 분해는 언제 가능한가?"
        • 📌 원문 — 질문 (p.101): ((6a635bfb-bcd2-4ff3-9fd5-31424ab7abb4))
      • 답: A왼쪽 상단 모서리에 있는 모든 k \times k 부분행렬 A_k 가 가역행렬일 때만 가능하다 (k = 1, \cdots, n).
        • 📌 원문 — 답 (p.101): ((6a635c01-2fd8-4235-a9d8-052b6b5f93d7))
      • 이유: 소거 과정이 좌상단 모서리 부분행렬을 순서대로 분해하기 때문 — A_k = L_k U_k 이 성립하려면 각 A_k 가 가역이어야 한다.
      • 💡 직관: k 번째 피벗은 좌상단 k\times k 블록 안에서 결정된다. 앞쪽 블록이 특이하면 그 시점에 피벗 0을 만나 행 교환이 필요해진다.
    • LU 를 이용한 Ax = b 풀이 — 두 개의 삼각 시스템
      • A = LU 를 알고 나면: Ax = bL(Ux) = b ⟺ 두 단계로 분리.
        • Lc = b순방향 대입으로 풀어 c 를 얻는다 (소거가 우변에 하던 일).
        • Ux = c역대입으로 풀어 x 를 얻는다.
      • 💡 같은 A 에 우변 b 만 바뀌는 문제를 여러 번 풀 때 진가: 비싼 \frac{1}{3}n^3 분해는 한 번만, 이후는 b 마다 n^2 만 든다.
  • 스스로 점검

    • A \to U 소거, 우변 처리(b \to c \to x)의 연산 횟수는 각각 대략 얼마인가?
      • A \to U 는 약 \frac{1}{3}n^3 번의 곱셈·뺄셈, 우변은 (소거 + 역대입 합쳐) 정확히 n^2 번.
    • A = LU 에서 L 의 주대각선과 그 아래에는 정확히 무엇이 들어가는가?
      • 주대각선에는 1, 주대각선 아래 (i,j) 성분에는 소거 때 쓴 승수 \ell_{ij} 가 부호 그대로 들어간다. (U 의 주대각선에는 피벗.)
    • "소거에서 피벗 행에 곱해 빼는 행은 A 의 행이 아니라 U 의 행이다" — 왜 이 관찰이 A = LU 증명의 핵심인가?
      • (Ui) = (Ai) - \sum_{j<i} \ell_{ij}(Uj) 을 이항하면 (Ai) = \sum_{j<i}\ell_{ij}(Uj) + 1\cdot(Ui) — 이것이 정확히 행렬곱 LUi 행이기 때문.
    • 행 교환 없이 A = LU 가 가능할 필요충분조건은?
      • 왼쪽 상단의 모든 k \times k 부분행렬 A_k (k=1,\cdots,n)가 가역인 것.
    • [A \ \ I] \to [I \ \ A^{-1}] (가우스-조르단)이 Ax=b 풀이보다 느린데도 배우는 이유는?
      • A^{-1} 전체가 필요할 때 n 개의 방정식 Ax_k = e_k 를 소거 한 번으로 동시에 풀어주는 체계적 방법이기 때문. (실전에서는 A^{-1} 를 만들지 않고 LU 로 푸는 것이 원칙.)
  • ✏️ 연습문제 풀이 (솔루션 참고)

    • 문제 1 (책 표시: 중요한 문제) — 순방향 소거가 \begin{bmatrix} 1&1 \\ 1&2 \end{bmatrix}x = \begin{bmatrix} 5\\7 \end{bmatrix}\begin{bmatrix} 1&1 \\ 0&1 \end{bmatrix}x = \begin{bmatrix} 5\\2 \end{bmatrix} 로 바꾼다. 빈칸을 채워라.
      • \ell_{21} = 1 (2행에서 1행 × 1 을 뺌). 역대입 단계의 행렬은 L = \begin{bmatrix} 1&0 \\ 1&1 \end{bmatrix}.
      • LUx_1 = (5,2) 에 곱하면 원래 방정식 Ax = (5,7) 을 되찾는다. 문자로: Ux = cL 을 곱하면 Ax = b.
      • 💡 "L 은 소거를 되돌리는 행렬"이라는 A = LU 의 의미를 2×2 로 확인하는 문제.
    • 문제 7 (책 표시: 꼭 풀어볼 만한 문제) — 대칭행렬 A = \begin{bmatrix} a&a&a&a \\ a&b&b&b \\ a&b&c&c \\ a&b&c&d \end{bmatrix}L, U 와 피벗 4개가 존재할 조건.
      • 소거하면 모든 승수가 1: L = \begin{bmatrix} 1&&& \\ 1&1&& \\ 1&1&1& \\ 1&1&1&1 \end{bmatrix}, U = \begin{bmatrix} a&a&a&a \\ &b-a&b-a&b-a \\ &&c-b&c-b \\ &&&d-c \end{bmatrix}.
      • 피벗은 a, \ b-a, \ c-b, \ d-c → 4개의 조건: a \neq 0, b \neq a, c \neq b, d \neq c.
      • 💡 피벗이 "연속된 값의 차"로 나오는 아름다운 패턴. 대칭행렬의 소거가 얼마나 규칙적인지 보여준다.
    • 문제 10L = \begin{bmatrix} 1&0&0 \\ 1&1&0 \\ 1&1&1 \end{bmatrix}, U = \begin{bmatrix} 1&1&1 \\ 0&1&1 \\ 0&0&1 \end{bmatrix}, b = (4,5,6). Lc = b 에서 c, Ux = c 에서 x 를 구하라. A 는?
      • Lc = b 순방향: c_1 = 4, c_1 + c_2 = 5 \Rightarrow c_2 = 1, c_1+c_2+c_3 = 6 \Rightarrow c_3 = 1c = (4,1,1).
      • Ux = c 역방향: x_3 = 1, x_2 = 0, x_1 = 3x = (3, 0, 1).
      • A = LU = \begin{bmatrix} 1&1&1 \\ 1&2&2 \\ 1&2&3 \end{bmatrix} — 방금 한 것이 정확히 이 A 에 대한 순방향 소거 + 역대입이다.
      • 💡 LU 풀이의 2단계 절차(①Lc=bUx=c)를 손에 익히는 표준 문제.
    • 문제 15 (책 표시: 쉽지만 중요한 문제) — A 가 행 교환 없이 피벗 5, 9, 3을 가질 때, 왼쪽 상단 2×2 부분행렬 A_2 의 피벗은?
      • A_2 의 피벗은 5, 9 — 앞의 두 피벗 그대로.
      • 이유: A 에 대한 소거는 왼쪽 상단 모서리에서 시작하므로, 처음 두 단계가 곧 A_2 에 대한 소거다 (A_k = L_k U_k).
      • 💡 "모서리 부분행렬이 가역이어야 A=LU 가 가능하다"는 본문 조건의 이유를 그대로 체험하는 문제.