05. 고대 3대 작도 불능 난제 (Three Impossible Problems)

1. 학습 목표 (Learning Objectives)

  • 무려 2천 년 동안 전 세계 최고의 수학자들을 미치게 만들었던 고대 그리스의 3대 작도 퀘스트를 살펴봅니다.
  • 컴퍼스와 눈금 없는 자라는 도구가 본질적으로 “유리수에다가, 기껏해야 한 번에 $\sqrt{2}$ (제곱근)까지만 더하고 뺄 수 있는 계산기” 에 불과하다는 대수학적 계층 한계를 깨닫습니다.
  • 파이썬의 기호 연산 라이브러리(SymPy)를 활용하여 이 세 가지 목표값이 왜 컴퍼스의 물리적 스펙을 초과하는지 증명합니다.

2. 수천 년의 저주: 3대 난제

그리스 시대에는 기하학에 미친 사람들이 많았습니다. 그들은 눈금 없는 자와 컴퍼스만으로 거의 우주의 모든 도형을 그릴 수 있다고 믿으며 오만에 빠져있었습니다. 하지만 도저히 작도가 안 되는 아래 3가지 마의 퀘스트에 직면했고, 역사상 수많은 천재들이 이걸 풀겠다고 인생을 낭비하다 무덤으로 갔습니다.

  1. 원적 문제 (Squaring the Circle): “주어진 어떤 원과 넓이가 $100\%$ 똑같은 정사각형을 그려라!”
  2. 배적 문제 (Doubling the Cube): 델로스 섬에 전염병이 돕니다. 아폴론 신전의 신탁이 내려왔습니다. “내 제단(정육면체)의 모양은 유지하되, 전체 부피가 정확히 2배가 되는 돌 제단을 다시 깎아 바쳐라!”
  3. 각의 3등분 문제 (Trisecting the Angle): “임의의 각도가 주어졌을 때, 그걸 정확히 세 조각($1/3$) 내는 선을 그어라! (각의 이등분은 너무 쉬운데 참 이상하네…)”

놀랍게도 이 3문제의 정답은 “눈금 없는 자와 컴퍼스 룰 위에서는 절대로 우주 멸망할 때까지 작도 불가능하다” 였습니다. 이 사실이 통쾌하게 입증된 건 고대 그리스 파편이 아닌, 무려 19세기의 현대 대수학(방정식 이론) 에 와서였습니다.

3. 작도 도구의 치명적 한계: 2차 방정식의 저주

왜 컴퍼스 콤보로는 안 될까요? 현대 대수학자들은 콤파스와 눈금 없는 자가 그리는 궤적을 $x, y$ 좌표 평면 위 방정식으로 번역해 보았습니다.

  • 눈금 없는 자가 긋는 선: 1차 방정식 ($y = ax + b$)
  • 컴퍼스가 그리는 궤적 선: 2차 방정식 ($x^2 + y^2 = r^2$)

선과 선이 만나는 교점을 구한다는 건 결국 이 방정식들을 연립해서 푼다는 뜻입니다. 중학교 때 배운 ‘근의 공식’을 떠올려 보세요. 2차 방정식을 풀면 무조건 제곱근 무리수 ($\sqrt{\quad}$ 루트) 형태로 답이 나옵니다. 즉, 컴퍼스로 작도한다는 것은 시작 숫자(유리수)에서 출발해 기진맥진 콤파스를 백만 번 돌려봐야, 고작 숫자에 루트($\sqrt{2}$) 한 겹 씌우거나 그 루트 안에 또 루트 씌우는($\sqrt{\sqrt{2}}$) 수준의 레벨 업밖에 못 한다는 끔찍한 물리적 한계선(차수 2의 거듭제곱승 $2^n$)이 존재했던 것입니다.

4. 파이썬 SymPy 가 판독한 난제의 해답값

파이썬의 심볼(기호) 연산기 SymPy 를 동원하여, 저 3가지 퀘스트가 요구하는 진실된 숫자의 근원(Root)이 무엇인지 캐내봅니다.

import sympy as sp

# 1. 델로스 제단 배적 문제: 부피가 원본(1)의 2배가 되게 하라!
# 부피 방정식: x^3 = 2  (새 제단의 한 변의 길이를 x라 함)
x = sp.Symbol('x')
cube_equation = sp.Eq(x**3, 2)
# 실수해 뽑아내기
cube_root = sp.solve(cube_equation, x)[0].evalf()
print(f"🗡️ 제단 부피 2배를 위한 새 변의 길이: {cube_root}")
  • [판독]: 정답은 무적의 $2^{1/3}$ 즉 $\sqrt[3]{2}$ (세제곱근). 컴퍼스는 무조건 ‘제곱근(루트 2승)’만 쪼갤 수 있습니다. 3승 루트는 절대 추출 불가! 작도 실패.
# 2. 임의의 각 3등분 문제
# 예시: 60도를 3등분 한 20도. Cos(20도)를 작도로 뽑아낼 수 있는가?
# 삼각함수 3배각 공식에 의해 4x^3 - 3x = 1/2 (x = cos20) 방정식 등장
angle_equation = sp.Eq(4*x**3 - 3*x, 1/2)
print("📐 60도의 3등분(20도) 렌더링을 위한 좌표 해 (복소수 차원 출력)")
print(sp.solve(angle_equation, x))
  • [판독]: 역시 대수학 방어막으로 막혀 방어력 최고 차수가 방정식 $x^{3}$ (3차 방정식)입니다! 컴퍼스(2차 무기)의 공격력으로는 절대로 이 3차 장벽을 뚫고 뼈대 길이(Cos 20)를 잡을 수 없습니다. 작도 실패.
# 3. 원적 문제: 넓이가 피(pi)인 원과 동일 면적의 정사각형
# 면적 방정식: x^2 = pi
circle_equation = sp.Eq(x**2, sp.pi)
square_side = sp.solve(circle_equation, x)[1]
print(f"🔴 원과 동일 면적 루트 Pi 값: {square_side}")
  • [판독]: 정답 길이 $\sqrt{\pi}$. 아예 차수를 논할 가치도 없습니다. 무한소수무리수를 넘어선 우주의 에러코드, 어떠한 다항 방정식의 해조차 될 수 없는 초월수($Transcendental \, Number$) 입니다. 작도 완전 실패.

5. 학습 정리 (Summary)

  1. 작도의 수학적 실체 판명: 두 점을 잇는 것, 원을 겹쳐 그리는 행위는 고차원 마법이 아니라 단순히 좌표평면 위 1차, 2차 연립 방정식을 풀어 제곱근 무리수 길이를 양산하는 지루한 기계 연산입니다.
  2. 3대 난제가 불가능한 이유: 세 문제 모두 정답값이 3차 방정식의 해(세제곱근) 이거나 아예 방정식 무대에 올릴 수도 없는 초월수($\pi$) 였기 때문입니다. 컴퍼스의 레벨을 한참 초과한 버그 퀘스트였던 셈입니다.
서브목차