이차 방정식의 근은 경우에 따라 실수가 아닌 복소수 형태일 수 있습니다. 따라서 Python에서 이차 방정식을 풀 때는 복소수 연산을 지원하는 cmath 모듈을 사용하는 것이 가장 안전하고 간편한 방법입니다.
이차 방정식과 근의 공식
일반적인 이차 방정식은 다음과 같은 형태입니다.
ax² + bx + c = 0
이 방정식의 두 근은 아래의 근의 공식으로 구할 수 있습니다.
x = (-b ± √(b² - 4ac)) / 2a
여기서 판별식(discriminant)인 b² - 4ac의 값에 따라 근의 성질이 달라집니다. 값이 음수이면 근은 허수(복소수)가 되는데, 일반적인 math.sqrt() 함수는 음수의 제곱근을 계산하지 못하므로 cmath.sqrt()를 사용해야 합니다.
예제 코드
import cmath a = 12 b = 8 c = 1 # 판별식 계산 d = (b**2) - (4*a*c) # 근의 공식 적용 root1 = (-b - cmath.sqrt(d)) / (2 * a) root2 = (-b + cmath.sqrt(d)) / (2 * a) print(root1) print(root2)
실행 결과
위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.
(-0.5+0j) (-0.16666666666666666+0j)
코드 설명
이 예제에서 계수는 a=12, b=8, c=1이며, 판별식 d는 64 - 48 = 16으로 양수이므로 서로 다른 두 실근을 가집니다. 출력 결과에서 뒤에 붙은 +0j는 복소수임을 나타내는 부분으로, 허수부가 0이라는 의미입니다.
만약 판별식이 음수라면, cmath.sqrt() 덕분에 에러 없이 복소수 형태의 근이 정상적으로 출력됩니다. 예를 들어 a=1, b=2, c=5인 경우 (-1+2j), (-1-2j) 같은 복소근이 반환됩니다.
결론적으로, 어떤 계수 조건에서도 오류 없이 이차 방정식의 근을 구하려면 cmath 모듈을 사용하는 것이 가장 좋습니다.