728x90
반응형
에 이어 sympy를 사용한 삼각형 문제풀이를 했지.
이번 글에서는 외접원을 구하는 방법을 소개해볼까? 모든 삼각형은 외접원을 가지고, 그 외접원의 중심을 외심이라고 하지. 문제를 소개해볼게.
문제
세 점 $A(6,1), B(-1,2), C(2,3)$을 꼭짓점으로 하는 $△ABC$의 외심의 좌표와 외접원의 반지름의 길이를 구하여라.
연습장 풀이
설명을 위한 그림으로 좌표의 형태나 점의 위치는 신경 쓰지 말길 바라.
원의 중심, 즉 외심을 $(a,b)$라 하고 반지름을 $r$이라고 하면, 이 원의 방정식은
$$(x-a)^2 + (y-b)^2 = r^2$$이고 이 위에 점 $A, B, C$가 있는 형태이지.
$$
\begin{align}
(6-a)^2 + (1-b)^2 & = r^2 \\
(-1-a)^2 +(2-b)^2 & = r^2 \\
(2-a)^2 +(-3-b)^2 & = r^2
\end{align}
$$
첫번째 식에서 두 번째 식을 변변이 빼서 정리하면
$$ -7a+b=-16$$
두 번째 식에서 셋째식을 변변이 빼서
$$ 3a+b=4$$를 얻거든. 따라서
$$ (a, b) = (2,-2)$$
이고 $ r^2 = 25$ 즉 $r=5$가 나오게 되지.
자, 이걸 python 의 sympy를 이용하여 풀어볼게.
python code
from sympy import *
import matplotlib.pyplot as plt
import numpy as np
a,b = symbols("a b") # a,b 를 symbol 처리
A,B,C = Point([6,1]), Point([-1,2]), Point([2,3]) # 문제의 세 점 A,B,C
P = Point([a,b]) # 외심의 좌표를 P(a,b)라 한다.
AP = A.distance(P) # AP 의 길이 : 외접원의 반지름
BP = B.distance(P) # BP 의 길이 : 외접원의 반지름
CP = C.distance(P) # CP 의 길이 : 외접원의 반지름
eq1 = Eq(AP,BP) # AP = BP
eq2 = Eq(AP,CP) # AP = CP
res = solve([eq1,eq2], {a,b}) # 외접원의 반지름이 서로 같다는 것으로 방정식을 풀면 됨
print(type(res[0])) # res는 dict형을 원소로 하는 길이1의 list형 따라서
res[0]이라는 indexing을 통해 결과 추출
radius = AP.subs(res[0]) # subs 함수를 이용하여 a,b에 구한 값을 각각 넣으면 반지름이 나옴
print(f'center of circle: {res}')
print(f'radius of circle: {radius}')
결과를 보면
<class 'dict'>
center of circle:[{a: 2, b: -2}]
radius of circle:5
연습장에 풀어본 값들과 똑같지.
그런데 sympy 에서는 다른 간단한 함수도 제공해 줘. 아래 더욱더 간단한 코드를 보자고
python code (별해)
from sympy import *
import matplotlib.pyplot as plt
import numpy as np
a, b = symbols("a b")
A, B, C = Point([6, 1]), Point([-1, 2]), Point([2, 3])
tr = Triangle(A, B, C) # Triangle 함수를 써서 삼각형를 만든다.
center = tr.circumcenter # 삼각형의 외심 center를 구함
radius = tr.circumradius # 삼각형의 외심 반지름을 구함
circumcircle = tr.circumcircle # 삼각형의 외접원의 정보를 구함
print(f'center of circle: {center}')
print(f'radius of circle: {radius}')
print(f'circum circle: {circumcircle}')
결과를 보면
center of circle: Point2D(2, -2)
radius of circle: 5
circum circle: Circle(Point2D(2, -2), 5)
즉 circumcircle이 외접원이라는 뜻이니만큼 python의 선구자들이 웬만큼 만들어 놨어.
오늘 나온 함수를 정리해 볼게
Triangle | 삼각형 객체를 만든다. |
Triangle.circumcenter | 외접원의 중심 |
Triangle.circumradius | 외접원의 반지름 |
Triangle.circumcircle | 외접원 |
728x90
반응형
'파이썬으로 풀어보는 고딩수학 > 평면좌표' 카테고리의 다른 글
파푸스의 중선 정리 with Sympy (0) | 2023.12.13 |
---|---|
삼각형의 무게중심을 sympy로 구하기 (0) | 2023.12.06 |
직각삼각형 만들기 (0) | 2023.12.01 |
두 점에서 거리가 같은 직선상의 점 구하기 (0) | 2023.11.28 |
삼각형의 모양 판단? (0) | 2023.11.17 |
댓글