이번 글은 삼각형의 외접원 구하기
삼각형의 외접원 구하기
저번 글 두 점에서 거리가 같은 직선상의 점 구하기 두 점에서 거리가 같은 직선상의 점 구하기 저번 글에서는 2023.11.17 - [파이썬으로 풀어보는 고딩수학/평면좌표] - 삼각형의 모양 판단? 삼각형
sine-qua-none.tistory.com
에서 이어져.
직선과 직선, 선분과 선분이 수직으로 만나는 문제들은 아주 중요해. 평면 (또는 공간)에 좌표축 기능도 할 수 있고, 또한 피타고라스 정리를 사용하여 선분의 길이랄지, 거리의 최솟값 문제를 해결하는데 많이 쓰이거든.
이번엔 수직, 또는 직각과 관련된 문제야.
문제
좌표평면 위에 두 점 A(0,2),B(1,5)A(0,2),B(1,5)가 있다. 점 PP가 직선 y=1y=1위를 움직일 때, △ABC△ABC가 직각삼각형이 되도록 하는 점 PP의 좌표를 구하여라.
그림으로 그려볼까?

그림으로 대충 그려봤을 때, 직각 삼각형이 나오는 경우는 두 가지 정도 있는 것 같아.
- ∠A∠A가 직각인 경우
- ∠B∠B가 직각인 경우
각 ∠P∠P가 직각인 경우가 있을지 모르겠는데, 그것도 검증을 해 봐야지.
연습장 풀이
자, 위 문제는 세 경우로 나뉘어. ∠A∠A가 직각인 경우, ∠B∠B가 직각인 경우, 그리고 각 ∠P∠P가 직각인 경우!
각 ∠A∠A가 직각일 때,
피타고라스 정리에 의해 PA2+AB2=PB2PA2+AB2=PB2 이 성립하고,
a2+12+12+32=(a−1)2+42a2+12+12+32=(a−1)2+42 이어서 a=3a=3을 얻게 되지.
각 ∠B∠B가 직각일 때,
피타고라스 정리에 의해 PB2+AB2=PA2PB2+AB2=PA2 이 성립하고,
(a−1)2+42+12+32=a2+12(a−1)2+42+12+32=a2+12 이어서 a=13a=13 이 나오지. 마지막으로,
각 ∠P∠P가 직각일 때,
마찬가지로, PA2+PB2=AB2PA2+PB2=AB2 이 성립하고,
a2+12+(a−1)2+42=32+12a2+12+(a−1)2+42=32+12인데, 이를 정리하면
a2−a+4=0 이 나와. 그런데 좌변의 식은 (a−12)2+154, 즉 양수의 합이므로 0이 나올 수가 없어(물론 a가 복소수라면 해를 구할 수는 있겠지만, 좌표평면에 점으로서는 부적격!)
종합해 보면 a=3,13 두 가지가 답이 될 수 있어. 그럼 이를 python으로 해결해 볼게.
Python code
위에서 설명한 대로 어떤 각이 직각이냐로 나눠서 풀면 좋지.
from sympy import *
import matplotlib.pyplot as plt
import numpy as np
a = symbols("a", real=True)
A, B = Point([0, 2]), Point([1, 5]) # 문제의 점 A,B 정의
P = Point([a, 1]) # P의 좌표는 P(a,1)이라 쓸 수 있다.$y=1$위에 있으므로
AB = A.distance(B)
AP = A.distance(P)
BP = B.distance(P)
# 어떤 각이 직각인지 모르는 상태이므로 상황을 나눠서 풀이한다.
# 만일 A가 직각이라면, AB^2 + AP^2 = BP^2 이 성립한다.
eq = Eq(AB ** 2 + AP ** 2, BP ** 2)
res = solve(eq, a)
print(f'value of a when A is a right angle: {res}')
# 만일 B가 직각이라면, AB^2 + BP^2 = AP^2 이 성립한다.
eq = Eq(AB ** 2 + BP ** 2, AP ** 2)
res = solve(eq, a)
print(f'value of a when B is a right angle: {res}')
# 만일 P가 직각이라면, AP^2 + BP^2 = AB^2 이 성립한다.
eq = Eq(AP ** 2 + BP ** 2, AB ** 2)
res = solve(eq, a)
print(f'value of a when P is a right angle: {res}')
결과를 볼까?
value of a when A is a right angle: [3]
value of a when B is a right angle: [13]
value of a when P is a right angle: []
결과들을 보니, res 값이 list 형으로 출력되는 걸 알 수 있어. [3] , [13] 등 꺽쇠괄호로 묶어진 것을 list라고 생각하면 됩니다. 세 번째 결과를 봐봐. 빈 괄호 [ ]로 출력됐지? 답이 없다는 이야기야. 즉 P가 직각인 상황은 발생하지 않는다는 이야기지.
여기서 주목할 점은
a = symbols("a", real=True)
이야. a를 기호로 정의하기 위해 symbols를 썼는데, real = True 라는 조건을 달았어. 이는 a 기호는 실수를 나타낸다는 의미야. 만일 이 조건을 생략하고
a = symbols("a")
이렇게만 코딩을 하면, 결과는 다음과 같아.
value of a when A is a right angle: [3]
value of a when B is a right angle: [13]
value of a when P is a right angle: [1/2 - sqrt(15)*I/2, 1/2 + sqrt(15)*I/2]
와우! 세 번째 식이 빈 괄호 []가 아니고, 어떤 복잡한 숫자가 출력이 되는구먼, 근데 결괏값을 보니
I (아이)
라는 대문자가 곁들어져 있네. 이것은 바로 허수
I=√−1:=i
를 나타내는 문자야. 수 체계를 복소수까지 확대시켜 주는 가상의 수이지. 아닌 게 아니라 식(1)에 근의 공식을 써보면
a=1±√15i2
야. 이거는 복소수지. 이 숫자가 좌표가 될 순 없어.
정리
이 글에서 나온 것 중 중요한 것을 정리해 보면
a= symbols("a", real = True) | 기호를 정의하되 조건대로 (즉, real number 가 참이게끔) 정의하는 것 |
'파이썬으로 풀어보는 고딩수학 > 평면좌표' 카테고리의 다른 글
파푸스의 중선 정리 with Sympy (0) | 2023.12.13 |
---|---|
삼각형의 무게중심을 sympy로 구하기 (0) | 2023.12.06 |
삼각형의 외접원 구하기 (0) | 2023.11.29 |
두 점에서 거리가 같은 직선상의 점 구하기 (0) | 2023.11.28 |
삼각형의 모양 판단? (0) | 2023.11.17 |
댓글