이 글에서는 포물선 방정식이 주어졌을 때 꼭짓점(vertex), 초점(focus), 준선(directrix)을 구하는 파이썬 프로그램 작성 방법을 알아봅니다.
문제 정의
포물선의 표준형 방정식은 y = ax² + bx + c입니다. 계수 a, b, c의 값이 입력으로 주어지면, 포물선의 꼭짓점과 초점의 좌표 그리고 준선의 방정식을 구하는 것이 목표입니다.

핵심 개념 정리
꼭짓점(Vertex): 포물선이 가장 급격하게 방향을 전환하는 지점의 좌표입니다. 포물선의 대칭축이 지나는 점이며, x좌표는 h = −b/(2a), y좌표는 k = (4ac − b²)/(4a)로 계산합니다.
초점(Focus): 포물선 위의 모든 점에서 초점까지의 거리와 준선까지의 거리가 항상 같다는 정의를 만족하는 고정점입니다. 초점은 꼭짓점에서 1/(4a)만큼 떨어진 위치, 즉 (h, k + 1/(4a))에 있습니다.
준선(Directrix): 포물선과 같은 곡선이나 곡면을 정의할 때 기준이 되는 고정 직선으로, y = k − 1/(4a)로 나타냅니다.
구현 예제
def findparabola(a, b, c):
print ("Vertex: (" , (-b / (2 * a)) , ", ",(((4 * a * c) - (b * b)) / (4 * a)) , ")" )
print ("Focus: (" , (-b / (2 * a)) , ", ", (((4 * a * c) -(b * b) + 1) / (4 * a)) , ")" )
print ("Directrix: y=", (((4 * a * c) - (b * b) - 1) / (4 * a)))
# main()
a = 7
b = 5
c = 3
findparabola(a, b, c)
실행 결과
Vertex: ( -0.35714285714285715 , 2.107142857142857 ) Focus: ( -0.35714285714285715 , 2.142857142857143 ) Directrix: y= 2.0714285714285716
코드 동작 원리
findparabola() 함수는 계수 a, b, c를 매개변수로 받아 다음 순서로 결과를 출력합니다.
- 꼭짓점: x좌표는 −b/(2a), y좌표는 (4ac − b²)/(4a) 공식을 그대로 적용합니다.
- 초점: 꼭짓점의 y좌표 식에서 분자에 1을 더한 값, 즉 (4ac − b² + 1)/(4a)를 사용합니다. 이는 k + 1/(4a)와 수학적으로 동일한 표현입니다.
- 준선: (4ac − b² − 1)/(4a)로 계산하며, 이는 k − 1/(4a)에 해당합니다.
모든 변수와 함수는 아래 그림과 같이 전역 범위(global scope)에서 선언되어 프로그램 어디에서든 접근할 수 있습니다.

참고로 a > 0이면 포물선은 위로 열리고 초점은 꼭짓점 위에 위치하며, a < 0이면 아래로 열려 초점이 꼭짓점 아래에 놓입니다. 두 경우 모두 같은 공식이 자동으로 적용되지만, a = 0이면 0으로 나누게 되므로 반드시 a ≠ 0이어야 한다는 점에 유의해야 합니다.
결론
이 글에서는 포물선 방정식 y = ax² + bx + c가 주어졌을 때 꼭짓점, 초점, 준선을 구하는 파이썬 프로그램을 살펴보았습니다. 세 요소는 모두 −b/(2a)와 (4ac − b²)/(4a)를 기반으로 하는 간단한 공식으로 계산할 수 있으며, 하나의 함수로 깔끔하게 정리할 수 있다는 점이 핵심입니다.