编写一个函数,求方程ax²+bx+c=0的根,用3个函数分别求当 b²-4ac 大于 0、等于0和小于0时的根,并输出结果。要求从主函数输入a、b、c的值。
时间: 2025-01-05 16:45:10 浏览: 7
好的,我可以为您编写一个求解一元二次方程ax²+bx+c=0的根的程序。这个程序将包含三个函数,分别处理判别式大于0、等于0和小于0的情况。以下是Python代码实现:
```python
import math
def solve_positive(a, b, c):
"""当判别式大于0时求解"""
x1 = (-b + math.sqrt(b**2 - 4*a*c)) / (2*a)
x2 = (-b - math.sqrt(b**2 - 4*a*c)) / (2*a)
return x1, x2
def solve_zero(a, b, c):
"""当判别式等于0时求解"""
x = -b / (2*a)
return x
def solve_negative(a, b, c):
"""当判别式小于0时求解"""
real_part = -b / (2*a)
imaginary_part = math.sqrt(4*a*c - b**2) / (2*a)
return real_part, imaginary_part
def main():
print("求解一元二次方程ax²+bx+c=0的根")
try:
a = float(input("请输入a的值: "))
b = float(input("请输入b的值: "))
c = float(input("请输入c的值: "))
if a == 0:
print("这不是一个一元二次方程")
return
delta = b**2 - 4*a*c
if delta > 0:
roots = solve_positive(a, b, c)
print(f"方程有两个不同的实根: x1 = {roots[0]}, x2 = {roots[1]}")
elif delta == 0:
root = solve_zero(a, b, c)
print(f"方程有一个重根: x = {root}")
else:
roots = solve_negative(a, b, c)
print(f"方程有两个共轭复根: x1 = {roots[0]} + {roots[1]}i, x2 = {roots[0]} - {roots[1]}i")
except ValueError:
print("请输入有效的数字")
if __name__ == "__main__":
main()
```
这个程序的主要特点如下:
1. 使用了三个独立的函数分别处理判别式大于0、等于0和小于0的情况。
2. 在主函数中,我们首先获取用户输入的a、b、c值。
3. 检查a是否为零,如果是,则不是一元二次方程。
4. 计算判别式delta = b² - 4ac。
5. 根据delta的值调用相应的函数并输出结果。
6. 使用try-except结构处理可能的输入错误。
这个程序可以处理所有可能的情况,包括实根、重根和复根。它还包含了基本的错误处理,确保用户输入有效的数字。
阅读全文