08. 여덟 번째 수업: 폴리아의 증명 (Polya’s Generalization)
인류는 2천 년 넘게 직각삼각형의 세 변에 오직 ‘정사각형’만 매달면서 $a^2 + b^2 = c^2$ 공식을 고민해 왔습니다. 그런데 헝가리의 천재 수학자 조지 폴리아(George Polya, 1887~1985)가 나타나 상식을 완전히 뛰어넘는 놀라운 깨달음을 던져주었습니다.
학습 목표
- 조지 폴리아가 증명한 ‘모양만 같다면(닮음비)’ 어떤 도형이든 피타고라스 정리가 성립한다는 확장의 원리를 배웁니다.
- 정사각형 대신 반원(히포크라테스의 초승달)을 매달아도 성립하는 기하학적 미학을 시각화합니다.
- 파이썬의 객체지향 프로그래밍(OOP) 상속을 이용해 다형성(Polymorphism)과 닮음 넓이 관계를 코드로 증명합니다.
1. 정사각형의 굴레를 벗어나다
폴리아는 피타고라스 정리의 매달려 있는 도형이 꼭 뾰족한 ‘정사각형’일 필요가 없음을 수학적으로 증명했습니다. 직각삼각형의 세 변에 매달린 도형 세 개가 서로 ‘닮음도형(모양이 완전히 똑같은 도형)’이기만 하다면, 그것이 눈사람 모양이든, 정육각형이든, 심지어 둥근 ‘반원(Semi-circle)’이든 무조건 넓이 보존의 법칙($A + B = C$)이 성립한다는 것입니다.
실제로 세 변에 ‘정육각형’을 그려봅시다. a변의 육각형 넓이와 b변의 육각형 넓이를 더하면 정확히 c변의 육각형 넓이가 됩니다. 혹은, 수학사에서 매우 유명한 히포크라테스의 초승달(Lunes of Hippocrates) 문제처럼 둥근 반원을 3개 그려도 넓이의 합은 완벽하게 $a^2 + b^2 = c^2$ 비율을 추종합니다. 피타고라스 교단이 설정한 좁은 사각형의 세계관을, 폴리아가 모든 기하학적 형태로 우주급 확장을 해버린 것입니다.
2. Python의 클래스 복제: 다형성(Polymorphism) 테스트
프로그래밍 세계에서 ‘서로 닮았다(동일한 템플릿이다)’라는 개념은 클래스(Class)를 찍어내는 객체지향 프로그래밍과 완전히 맞닿아 있습니다. 어떤 형태(정육각형, 반원 등)의 클래스든, 길이 변수 하나만 주입되면 넓이 보존 법칙이 동작하는지 파이썬 코드로 검증해 보겠습니다.
import math
class PolyaShape:
"""폴리아의 규칙 (어떤 모양이든 넓이 법칙이 성립해야 한다)"""
def __init__(self, side_length):
self.side = side_length
class Semicircle(PolyaShape):
"""지름(=변의 길이)을 바탕으로 반원의 넓이를 구하는 도형"""
def get_area(self):
radius = self.side / 2
return (math.pi * radius**2) / 2
# 3:4:5 직각삼각형 뼈대
a, b, c = 3, 4, 5
# 직각삼각형의 각 변에 둥근 '반원' 인스턴스 3개를 달아봅시다!
shape_A = Semicircle(a)
shape_B = Semicircle(b)
shape_C = Semicircle(c)
# A와 B의 반원 넓이를 더한 값 (작은 두 반원)
sum_of_small_arcs = shape_A.get_area() + shape_B.get_area()
# C 반원의 넓이 (가장 거대한 빗변의 반원)
massive_c_arc = shape_C.get_area()
print(f"변 a 반원 넓이 + 변 b 반원 넓이 = {sum_of_small_arcs}")
print(f"가장 큰 빗변 c의 반원 넓이 = {massive_c_arc}")
# 소수점 아래 무한정 밀려나는 파이(pi) 값 때문에 근사치 검증 모듈을 씁니다.
if math.isclose(sum_of_small_arcs, massive_c_arc):
print("증명 성공! 정사각형이 아닌 '우주선 모양(반원)' 이라도 피타고라스 법칙은 절대적으로 성립합니다.")
코드의 실행결과는 True로 끝납니다. 어떤 수식을 get_area에 집어넣든, 세 도형이 닮음비만 유지된다면 컴퓨터도 인간과 똑같은 피타고라스 대원칙을 도출해 냅니다.
학습 정리
- 폴리아의 일반화 증명: 삼각형의 세 변을 기준으로 그려진 도형이 정사각형이 아니어도 관계없다. 세 도형이 서로 ‘닮은 도형’이기만 하다면, 어느 모양을 붙여 놓아도 넓이의 합($A + B = C$)은 영원히 붕괴되지 않는다.
- 파이썬의 클래스 상속 기능과 함수 오버라이딩을 활용하면, 하나의 코어 이론(피타고라스 비율)을 수많은 다양한 형태(도형)에 무한 변주하여 재사용할 수 있다.