编写一个程序,利用三个不同的数学函数来计算一元二次方程ax^2 + bx + c = 0的根,根据判别式b² - 4ac的情况:当判别式大于0、等于0以及小于0时。主函数应接收a, b, c作为输入参数,并分别返回对应的根。请展示这些函数如何处理不同判别式的解并输出结果。
时间: 2024-11-15 14:20:59 浏览: 19
在Python中,你可以创建三个函数,分别处理三种情况:实数根(判别式大于0)、单实数根(判别式等于0)和复数根(判别式小于0)。这里是一个简单的示例:
```python
import cmath
def calculate_real_roots(a, b, c):
discriminant = b**2 - 4*a*c
if discriminant > 0:
root1 = (-b + cmath.sqrt(discriminant)) / (2 * a)
root2 = (-b - cmath.sqrt(discriminant)) / (2 * a)
return f"两个实根分别为 {root1:.2f} 和 {root2:.2f}"
else:
root = -b / (2 * a)
return f"单实根为 {root:.2f}"
def calculate_one_root(a, b, c):
discriminant = b**2 - 4*a*c
if discriminant == 0:
root = -b / (2 * a)
return f"唯一的实根为 {root:.2f}"
else:
raise ValueError("输入错误,判别式为0,无法得到唯一实根")
def calculate_complex_roots(a, b, c):
discriminant = b**2 - 4*a*c
if discriminant < 0:
root1 = (-b + cmath.sqrt(discriminant)) / (2 * a)
root2 = (-b - cmath.sqrt(discriminant)) / (2 * a)
return f"两个复数根分别为 {root1.real:.2f} + {root1.imag:.2f}i 和 {root2.real:.2f} + {root2.imag:.2f}i"
else:
raise ValueError("输入错误,判别式小于0,应该有两个复数根")
# 主函数
def main_function(a, b, c):
print(calculate_real_roots(a, b, c))
try:
print(calculate_one_root(a, b, c))
except ValueError as e:
print(e)
# 测试用例
main_function(1, -3, 2) # 输出:两个实根分别为 2.00 和 1.00
main_function(1, 0, -1) # 输出:唯一的实根为 1.00
main_function(1, 0, -2) # 输出:输入错误,判别式为0,无法得到唯一实根
```
在这个例子中,`calculate_real_roots`、`calculate_one_root`和`calculate_complex_roots`函数分别负责处理不同的判别式情况,主函数`main_function`用于测试这三种情况。如果判别式为负,则会抛出异常并提示用户输入错误。
阅读全文