编写一个程序,利用三个不同的函数分别计算一元二次方程ax^2 + bx + c = 0的根,根据判别式b^2 - 4ac的情况:当判别式大于0,等于0以及小于0时。主函数应接收a, b, c作为输入参数,并显示相应情况下的根。请展示详细的函数实现和输出示例。
时间: 2025-01-02 07:48:47 浏览: 48
首先,我们需要创建三个函数,分别用于处理三种判别式的场景:
1. 当判别式大于0,方程有两个不同的实数根;
2. 判别式等于0,方程有一个实数根或重根;
3. 判别式小于0,方程没有实数根,但可能有复数根。
下面是Python代码实现:
```python
import cmath
def calculate_two_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}"
def calculate_one_real_root_or_repeated(a, b, c):
discriminant = b**2 - 4*a*c
if discriminant == 0:
return f"一个实根或重根:{-(b / (2 * a)):.2f}"
else:
raise ValueError("方程无实数解")
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)"
def main():
a = float(input("请输入a: "))
b = float(input("请输入b: "))
c = float(input("请输入c: "))
try:
if b**2 >= 4*a*c:
result = calculate_two_real_roots(a, b, c)
else:
result = calculate_one_real_root_or_repeated(a, b, c)
except ValueError as ve:
result = str(ve)
print(result)
if __name__ == "__main__":
main()
```
现在,你可以运行这个程序,根据输入的a、b和c,它将按照判别式的值显示相应的根。例如:
- 输入a=1, b=-3, c=2,输出将是两个不同的实根,如 `-1.00 和 2.00`。
- 输入a=1, b=2, c=1,输出将是重根,如 `-1.00` 或者一个“方程无实数解”的错误。
- 输入a=1, b=2, c=-5,输出将是两个共轭复数根,如 `0.00 + (1.41i) 和 0.00 - (1.41i)`。
阅读全文
相关推荐


















