From 7f3b8fee3b6395e56cba0eba697ff3e667c14e87 Mon Sep 17 00:00:00 2001 From: songyc macbook Date: Sun, 26 Jul 2026 06:59:04 +0900 Subject: [PATCH] =?UTF-8?q?fix:=202.3=20=EB=B3=B4=EA=B0=95=EB=B6=84?= =?UTF-8?q?=EC=9D=98=20=EB=B3=BC=EB=93=9C=20=EC=95=88=20LaTeX=20=EC=A4=91?= =?UTF-8?q?=EC=B2=A9=204=EA=B3=B3=20=EC=88=98=EC=A0=95=20+=20=EC=BB=A4?= =?UTF-8?q?=EB=B0=8B=20=EC=A0=84=20=EA=B2=80=EC=A6=9D=20=EC=A0=88=EC=B0=A8?= =?UTF-8?q?=20=EA=B7=9C=EC=B9=99=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 어제 보강한 소거법의 비용 소제목들(왜 1단계가 약 n²인가 등)의 중첩 분리 - CLAUDE.md: 페이지 수정 후 커밋 전 볼드-수식 중첩 검사 스크립트 실행을 필수 절차로 명시 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01G8rNxLqi5rYjRamC8uwiJW --- CLAUDE.md | 11 +++++++++++ pages/2.3 행렬 계산과 A = LU.md | 8 ++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 651c438..eead801 100755 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -40,6 +40,17 @@ disable-anki-sync:: true - ⚠️ **수식은 반드시 다른 마크업 밖에 단독으로 쓴다.** `$...$`가 굵은 글씨(`**...**`) 등 다른 문법 안에 중첩되면 Logseq이 수식을 렌더링하지 못하고 문자 그대로 노출된다. - 잘못된 예: `**3차원 ($\mathbb{R}^3$)**` → 올바른 예: `**3차원** ($\mathbb{R}^3$)` - 강조하려는 구절에 수식이 섞여 있으면 텍스트 부분만 `**...**`로 감싸고 수식은 밖으로 뺀다. 예: `$Ax$ **를 계산하는 2가지 방법**` + - ⚠️ **Claude가 반복적으로 어긴 규칙이다 (특히 소제목·헤더성 볼드 구절에서). 페이지를 작성·수정했으면 커밋 전에 반드시 아래 검사를 실행해 위반 0건을 확인한다:** + ```bash + python3 -c " + import re, io, glob + bad = 0 + for f in glob.glob('pages/*.md'): + for i, l in enumerate(io.open(f, encoding='utf-8'), 1): + for m in re.finditer(r'\*\*([^*]+?)\*\*', l): + if '\$' in m.group(1): print(f'{f}:{i}:', m.group(0)[:80]); bad += 1 + print('볼드-수식 중첩 위반:', bad)" + ``` - 언어는 한국어. 수학·전문 용어는 필요시 영어 병기. - ## 정리 스타일 (기존 노트 기준) diff --git a/pages/2.3 행렬 계산과 A = LU.md b/pages/2.3 행렬 계산과 A = LU.md index c4067c9..920e2fb 100755 --- a/pages/2.3 행렬 계산과 A = LU.md +++ b/pages/2.3 행렬 계산과 A = LU.md @@ -14,21 +14,21 @@ deck:: Logseq/전공공부/선형대수학 - **소거법의 비용** (연산 횟수 세기) - 📌 원문 (p.97): ((6a635bbc-cd20-4362-8dcc-ae180ca53cba)) - 세는 단위: 소거의 기본 동작은 "피벗 행에 승수를 **곱해서** 아래 행에서 **뺀다**" — 성분 하나를 갱신할 때마다 곱셈 1번 + 뺄셈 1번이 한 쌍으로 든다. 아래에서 "1번"은 이 (곱셈, 뺄셈) 한 쌍을 뜻한다. - - **왜 1단계가 약 $n^2$ 번인가** — 1열의 피벗 아래를 전부 0으로 만드는 비용: + - **왜 1단계가 약** $n^2$ **번인가** — 1열의 피벗 아래를 전부 0으로 만드는 비용: - 피벗 아래에는 $(n-1)$ 개의 행이 있다. 그 각각의 행에 대해 "1행 × 승수"를 빼야 한다. - 한 행을 갱신할 때 그 행의 성분 $n$ 개가 각각 (곱셈+뺄셈) 1번씩 필요하다. - 따라서 1단계 = $(n-1)$ 행 × $n$ 성분 = $n^2 - n$ 번 ≈ $n^2$ 번. (1행 자체는 바뀌지 않으므로 $n^2$ 이 아니라 $n^2 - n$ 이지만, $n$ 이 크면 차이는 무시된다.) - - **왜 총합이 $\frac{1}{3}n^3$ 인가** — 단계마다 문제가 한 사이즈씩 줄어든다: + - **왜 총합이** $\frac{1}{3}n^3$ **인가** — 단계마다 문제가 한 사이즈씩 줄어든다: - 1단계가 끝나면 1행과 1열은 완성. 남은 작업은 오른쪽 아래의 $(n-1) \times (n-1)$ 부분행렬 — 크기 $(n-1)$ 짜리 문제를 새로 시작하는 것과 같다. 그래서 2단계 ≈ $(n-1)^2$ 번, 3단계 ≈ $(n-2)^2$ 번, …, 마지막 단계 ≈ $1^2$ 번. - $$\text{총합} \approx n^2 + (n-1)^2 + (n-2)^2 + \cdots + 2^2 + 1^2 = \frac{1}{3}n\left(n+\tfrac{1}{2}\right)(n+1) \approx \frac{1}{3}n^3$$ - 💡 왜 제곱의 합이 $\frac{1}{3}n^3$ 인가: $1^2 + 2^2 + \cdots + n^2$ 은 곡선 $y = x^2$ 아래 넓이를 폭 1짜리 계단으로 근사한 것과 같다. 그 넓이가 적분 $\int_0^n x^2\,dx = \frac{1}{3}n^3$. 정확한 공식 $\frac{1}{3}n(n+\frac{1}{2})(n+1)$ 을 전개해도 최고차항은 $\frac{1}{3}n^3$ 이고, $n$ 이 충분히 크면 $\frac{1}{2}$ 과 $1$ 은 중요하지 않다. - 수치로 확인: $n = 100$ 이면 제곱의 합은 정확히 $338{,}350$, 근사값 $\frac{100^3}{3} = 333{,}333$ — 오차 1.5%. $n$ 이 클수록 더 정확해진다. - - **왜 우변은 $n^2$ 번뿐인가** — $b$ 는 열 하나(성분 $n$ 개)라서 행렬보다 훨씬 싸다: + - **왜 우변은** $n^2$ **번뿐인가** — $b$ 는 열 하나(성분 $n$ 개)라서 행렬보다 훨씬 싸다: - ① 순방향 $b \to c$: 1단계에서 $b_2, \cdots, b_n$ 에서 $b_1$ 의 배수를 뺀다 → $(n-1)$ 번. 2단계는 $b_1$ 과 무관하므로 $(n-2)$ 번. … 마지막 단계는 1번. - ② 역대입 $c \to x$: $x_n$ 은 $u_{nn}x_n = c_n$ 에서 피벗으로 나누는 1단계. $x_{n-1}$ 은 (이미 구한 $x_n$ 을 대입 + 피벗으로 나눔) 2단계. … $x_1$ 은 $(n-1)$ 개를 대입하고 나누는 $n$ 단계. - $$\underbrace{[(n-1) + (n-2) + \cdots + 1]}_{①\ b \to c} + \underbrace{[1 + 2 + \cdots + (n-1) + n]}_{②\ c \to x} = n^2$$ - 💡 $n^2$ 이 되는 짝짓기 트릭 (p.98): ①의 $(n-1)$ 과 ②의 $1$, ①의 $(n-2)$ 와 ②의 $2$, … 를 짝지으면 매 쌍의 합이 $n$ 이고 쌍이 $(n-1)$ 개 → $n(n-1)$. ②에 짝 없이 남은 마지막 $n$ 하나를 더하면 $n(n-1) + n = n^2$. 딱 떨어진다. - - **결론 — $LU$ 를 저장하는 이유를 수치로**: + - **결론 —** $LU$ **를 저장하는 이유를 수치로**: - $A \to LU$ 분해(비싼 부분): $\approx \frac{1}{3}n^3$ 번 — **한 번만** 하면 된다. - 새로운 $b$ 마다 드는 비용: $Lc = b$ (순방향) + $Ux = c$ (역대입) = $n^2$ 번. - $n = 1{,}000$ 이면 $\frac{1}{3}n^3 \approx 3.3$ 억 번 vs $n^2 = 100$ 만 번 — 두 번째 $b$ 부터는 **약 333배 싸게** 푼다.