06. 여섯 번째 수업: 파이썬 while 무한 루프 록다운! 컴퓨터로 무한 찢기
지금까지 고대 철학자와 18세기 수학자들의 머리로 무한대($\infty$) 의 수렴(Convergence) 유리 천장을 증명했습니다. 하지만 우리는 21세기 해커입니다. 머리가 아프다면 컴퓨터 CPU 한테 대신 무한대 달리기를 시키면 됩니다.
파이썬의 마더퍼커 무한 루프문, while True: 를 발동시켜 “진짜 이 미립자 찌꺼기 10만 번 더하면 $1.000$ 에서 안 넘어가고 영구 정지 버그가 걸리는가?” 콘솔 창에 찍어보겠습니다.
1. 수렴 스크립트 작성 (제논의 ピ자 쪼가리)
아까 우리가 죽도록 찢었던 1/2 반갈죽 등비수열:
$\mathbf{\frac{1}{2} \ + \ \frac{1}{4} \ + \ \frac{1}{8} \ + \ \frac{1}{16} \ + \ \dots}$
이걸 파이썬에 while 로 돌립니다! 대신 $1.0000$ 에서 멈추는지 눈으로 봐야 하니, 한 번 더할 때마다 현재까지의 총 넓이(Sum) 를 프린트하도록 짜봅시다.
# [Python Code] 제논의 1/2 무한등비급수 팩토리얼 시뮬레이션
import time
# 1. 초기 셋업
current_piece = 0.5 # 제일 처음 튀어나온 대장 픽셀 쪼가리 (1/2)
total_sum = 0.0 # 지금까지 주워 담은 총 넓이 합계 장바구니!
turn_count = 1 # 루프 도는 턴 횟수 (무한의 굴레)
print("==== [WARNING] 무한 덧셈 엔진 가동! (목표 타겟: 수렴 1.0) ====\n")
# 2. 강제 영구 무한 루프 오픈!
while True:
# 장바구니에 계속 지금 조각을 쑤셔 넣는다! (누적 덧셈 +=)
total_sum += current_piece
# 디버깅 로그 렌더링
print(f"[Turn {turn_count:02d}] 얹은 먼지 = {current_piece:.10f} | 누적된 총면적 SUM = {total_sum:.15f}")
# 3. 브레이크(탈출) 록다운:
# 만약 새로 주워 먹은 조각 먼지가 컴퓨터 메모리가 인지할 수 없는 극한의 먼지조각(1e-10) 보다 작아지면
# 더 이상 더하는게 의미 없으니 강제 엔진 컷다운!
if current_piece < 0.0000000001:
print("\n★ [시스템 알림] 더해지는 먼지가 너무 작아 메모리 표출 불가! 수렴 상태(Convergence) 록업 터짐! 엔진 셧다운! ★")
break
# 4. 다음 턴 조각 준비: 반갈죽 공비 r = 1/2 세팅!
current_piece = current_piece * 0.5
turn_count += 1
# 너무 빨리 터지면 눈으로 못보니 0.1초 딜레이
# time.sleep(0.1)
2. 렌더링 콘솔의 공포
==== [WARNING] 무한 덧셈 엔진 가동! (목표 타겟: 수렴 1.0) ====
[Turn 01] 얹은 먼지 = 0.5000000000 | 누적된 총면적 SUM = 0.500000000000000
[Turn 02] 얹은 먼지 = 0.2500000000 | 누적된 총면적 SUM = 0.750000000000000
[Turn 03] 얹은 먼지 = 0.1250000000 | 누적된 총면적 SUM = 0.875000000000000
...
[Turn 10] 얹은 먼지 = 0.0009765625 | 누적된 총면적 SUM = 0.999023437500000
...
[Turn 20] 얹은 먼지 = 0.0000009537 | 누적된 총면적 SUM = 0.999999046325684
...
[Turn 32] 얹은 먼지 = 0.0000000002 | 누적된 총면적 SUM = 0.999999999767169
[Turn 33] 얹은 먼지 = 0.0000000001 | 누적된 총면적 SUM = 0.999999999883585
[Turn 34] 얹은 먼지 = 0.0000000000 | 누적된 총면적 SUM = 0.999999999941792
★ [시스템 알림] 더해지는 먼지가 너무 작아 메모리 표출 불가! 수렴 상태(Convergence) 록업 터짐! 엔진 셧다운! ★
보이십니까? Turn 10 때부터 이미 $0.999…$ 에 진입하더니, 턴수가 기하급수적으로 돌아갈수록 미친 듯이 $\mathbf{0.999999999…}$ 숫자 $9$를 옆으로 한없이 복제해 나갑니다.
하지만 절대! 결코 영원토록 십 자리 수인 $1.00000001$ 은 고사하고 $1.0000000$ 턱주가리 선 위로 넘어가지 못하고 저 유리 천장에 구속되어 얼어 죽어 버립니다.
제논이 이 파이썬 터미널 창을 봤다면 거품을 물고 쓰러졌을 겁니다. 시간과 우주를 쪼개 무한번 합체를 시켜도, 그 총량은 “수렴 공식 $S = a / (1 - r)$” 과 “파이썬 루프 메모리 극한계” 가 증명하듯 단단한 상수 바닥으로 곤두박질치는 진귀한 마법입니다.
자! 지금까지 “배열을 모조리 더해버릴 때 $\sum$ 일어나는 무한대 수렴” 만 팠다면. 다음 마지막 대미를 장식할 모듈 수학이야기 71화 에서는, “더하는 짓거리 치우고, 그냥 $\mathbf{x}$ 변수 자체를 우주 끝 무한대($\infty \infty \infty$) 로 확대 줌인 해버렸을 때” 일어나는 파동의 충돌, “수열과 함수의 종점 극한(Limits $\lim$)” 의 쌩얼을 까발리러 가겠습니다. 끝까지 해킹 파이프라인을 유지해 주십시오!