한양과학기술고등학교

에듀테크 프로젝트 대시보드

망델브로 집합 (Mandelbrot Set)

망델브로 집합 (Mandelbrot Set)

덧셈과 곱셈만 아는 아주 짧은 규칙 z ← z² + c 를 반복했을 뿐인데 — 어떤 c는 값이 얌전히 머물고, 어떤 c는 무한대로 튕겨 나간다. "머무는 점"만 검게 칠하면 무한히 파고들어도 똑같은 무늬가 나오는 프랙탈이 태어난다.

왜 유명할까? 1980년 브누아 망델브로가 컴퓨터로 처음 그려낸 이 그림은 "간단한 수식 → 끝없이 복잡한 형태"의 상징이 됐다. 해안선·번개·나뭇가지·구름처럼 자연의 울퉁불퉁함을 다루는 프랙탈 기하학, 그리고 GPU로 같은 계산을 픽셀마다 병렬로 돌리는 컴퓨터 그래픽스의 좋은 연습문제이기도 하다.

1. 복소수 한 점을 규칙에 넣어 본다

복소수 c를 하나 고르고, z를 0에서 시작해 계속 z = z² + c로 바꾼다. 이 값들의 행렬을 궤도(orbit)라고 한다. 궤도가 원점에서 반지름 2를 벗어나는 순간 "이 점은 반드시 무한대로 발산한다"가 수학적으로 보장된다 — 그래서 반지름 2가 탈출선이다.

회색 원 = 탈출 반지름 2 · 노란 점들 = 궤도 · 플롯을 클릭해 c를 옮겨 보자

c 실수부 (Re) -0.400
c 허수부 (Im) 0.600
최대 반복 60

c = -0.400 + 0.600i

판정: —

|z| 최종 = —

궤도가 한 점/고리로 수렴하면 집합 안(검정), 나선을 그리며 튀어 나가면 집합 밖이다.

2. 모든 점을 한 번에 — 탈출 시간 색칠

화면의 픽셀 하나가 복소평면의 c 하나다. 각 픽셀에서 위 반복을 돌려 몇 번 만에 반지름 2를 넘었는지(탈출 시간)를 색으로 바꾼다. 끝까지 안 넘으면 검정 — 그게 망델브로 집합이다. 그림을 클릭하면 그 지점으로 확대된다.

최대 반복 200

중심 (-0.5, 0) · 폭 3.0 · 배율 ×1

반복을 늘릴수록 검은 영역의 가느다란 "촉수"와 경계의 미세 구조가 더 선명해진다. 깊이 확대하면 부동소수점 정밀도(double) 한계로 픽셀이 뭉개진다.

줄리아 집합과의 관계. 망델브로가 "z=0에서 시작해 c를 픽셀로" 두는 것이라면, 줄리아 집합은 "c를 하나로 고정하고 z의 시작점을 픽셀로" 둔다. 망델브로 집합은 사실 "모든 줄리아 집합의 지도"다 — c가 망델브로 안에 있으면 그 줄리아 집합은 한 덩어리로 연결되고, 밖이면 먼지처럼 흩어진다.

3. 자기 닮음 (self-similarity)

큰 몸통 왼쪽에 붙은 작은 원, 그 위 촉수 끝에 또 붙은 더 작은 몸통… 아무리 확대해도 전체를 닮은 축소판(mini-brot)이 계속 나온다. "부분이 전체를 닮는다"는 이 성질이 프랙탈의 핵심이고, 그래서 이 그림은 정보량은 거의 0인데 세부는 무한하다.

4. 코드로 보면

탈출 시간 한 픽셀은 이게 전부다. 복소수 곱셈 (a+bi)² = a²-b² + 2abi만 풀어 쓰면 된다.

function escapeTime(cx, cy, maxIter) {
  let x = 0, y = 0, iter = 0;
  while (x*x + y*y <= 4 && iter < maxIter) {
    const xt = x*x - y*y + cx;   // z^2 의 실수부 + c
    y = 2*x*y + cy;              // z^2 의 허수부 + c
    x = xt;
    iter++;
  }
  return iter;                   // maxIter 면 "집합 안" 으로 간주
}

경계를 매끄럽게 칠하려면 정수 iter 대신 iter + 1 - log₂(log|z|) 같은 연속 탈출 값(smooth coloring)을 쓴다. 이 페이지의 그림도 그 방식이다.

c 값궤도 행동집합색
0계속 0안검정
-10, -1, 0, -1 … (주기 2)안검정
0.30.15… 로 수렴안검정
10,1,2,5,26 … 폭발밖탈출 시간 색
2i즉시 발산밖어두운 색
직접 해보기. ① 궤도 플롯에서 점을 경계선(c ≈ -0.75) 바로 안팎으로 조금씩 옮기며 "수렴 ↔ 발산"이 갈리는 걸 보라. ② 아래 그림을 몸통과 원이 만나는 잘록한 목("seahorse valley", c ≈ -0.75 + 0.1i) 근처로 여러 번 확대하면 해마 꼬리 모양이 나온다. ③ 줄리아 집합을 켜고 최대 반복을 올려 보라.