본문 바로가기
파이썬으로 풀어보는 고딩수학/평면좌표

파푸스의 중선 정리 with Sympy

by hustler78 2023. 12. 13.
728x90
반응형

전 글 삼각형의 무게중심을 sympy로 구하기

 

삼각형의 무게중심을 sympy로 구하기

직각삼각형 만들기 직각삼각형 만들기 이번 글은 삼각형의 외접원 구하기 삼각형의 외접원 구하기 저번 글 두 점에서 거리가 같은 직선상의 점 구하기 두 점에서 거리가 같은 직선상의 점 구하

sine-qua-none.tistory.com

에 이어 계속 평면좌표 이야기를 해보겠음.

 

이번엔 파푸스 정리(Pappus's theorem)이야. 사실 이 정리는 

 아폴로니오스의 중선정리( Apollonius' theorem)

 

라는 이름이 훨씬 많이 쓰이지. 

 

 

 

 

위의 그림은 아폴로니오스 중선정리의 위키피디아 설명에서 그대로 가져온 것이야. 

임의의 삼각형 $\triangle ABC$ 가 있고, $I$가 변 $BC$의 중점이면,

$$ AB^2 + AC^2 = 2(AI^2 + BI^2)$$
이 성립한다.

 

 

python code로 이것을 증명해볼게

 

 

Python Code

from sympy import *
import matplotlib.pyplot as plt
import numpy as np

x1, x2, x3 = symbols("x1 x2 x3")
y1, y2, y3 = symbols("y1 y2 y3")
A,B,C = Point(x1,y1), Point(x2,y2), Point(x3, y3)   # 삼각형의 꼭지점 A,B,C
I = B.midpoint(C)                                   # I는 BC의 중점

eqn1 = A.distance(B) **2 + A.distance(C)**2         # AB^2 + AC^2
eqn2 = 2*( A.distance(I)**2 + B.distance(I)**2)     # 2(AI^2 + BI^2)

is_equal = expand(eqn1) == expand(eqn2)             # eqn1 과 eqn2가 같은지
print(f'Pappus Theorem is {is_equal}')

 

 

답은?

 

Pappus Theorem is True

 

 

이렇게 python을 통하여도 증명할 수 있지. 더 자세하게 위 code이 eqn1, eqn2를 출력해 보면,

 

print(eqn1)
print(eqn2)

 

출력결과는

(x1 - x2)**2 + (x1 - x3)**2 + (y1 - y2)**2 + (y1 - y3)**2
2*(x2/2 - x3/2)**2 + 2*(y2/2 - y3/2)**2 + 2*(x1 - x2/2 - x3/2)**2 + 2*(y1 - y2/2 - y3/2)**2

 

위와 같이 나와. 한눈에 보면, 이게 같은 건지 다른 건지 알 수가 없어.  심지어 python도 같은지 다른지 구분 못하는 거 같더라고.  무슨 뜻이냐면, 위의 메인 code에서 밑에서 두 번째 줄의 expand를 지우잖아? 즉,

is_equal = eqn1 == eqn2             # eqn1 과 eqn2가 같은지

 

이렇게만 하면 결과가

 

Pappus Theorem is False

이렇게 나온다는 이야기야. 

 

 

그래서 expand라는 함수를 쓰는 거야. expand는 말 그대로 위의 식들을 모두 전개해서 좀 명확하게 보여주는 기능이지. 즉,

 

 

expand를 쓰면?

 

print(expand(eqn1))
print(expand(eqn2))

 

이렇게 출력해 보면,

2*x1**2 - 2*x1*x2 - 2*x1*x3 + x2**2 + x3**2 + 2*y1**2 - 2*y1*y2 - 2*y1*y3 + y2**2 + y3**2
2*x1**2 - 2*x1*x2 - 2*x1*x3 + x2**2 + x3**2 + 2*y1**2 - 2*y1*y2 - 2*y1*y3 + y2**2 + y3**2

 

한눈에 보기에도 똑같지.

 

 

 

정리

이 글에서 나온 sympy 함수를 정리

 

expand 주어진 sympy 식을 전개하는 것!

 

 

 

여담

사실 파푸스 정리는 스튜어트 정리라는 일반화된 식의 특수한 경우야. 파푸스 정리보다는 인지도가 덜하지만, 나름대로 수학자 이름이 붙은 정리이니 다음 글에서 한번 살펴보겠음!

 

 

 

 

728x90
반응형

댓글