求方程ax²+bx+c=0的根,用3个函数分别求当:b²-4ac大于0、等于0和小于0时的根并输出结果。从主函数输入a,b,c的值。
时间: 2023-11-29 19:09:08 浏览: 271
已知二元一次方程ax²+bx+c=0(a≠0),编程实现求解方程的根。(分三种情况考虑)
可以使用以下三个函数来分别求解方程 $ax^2+bx+c=0$ 的根:
1. 当 $b^2-4ac>0$ 时,方程有两个不相等的实根:
$$
x_{1,2}=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
$$
2. 当 $b^2-4ac=0$ 时,方程有两个相等的实根:
$$
x_1=x_2=-\frac{b}{2a}
$$
3. 当 $b^2-4ac<0$ 时,方程没有实根,而有两个共轭复根:
$$
x_{1,2}=\frac{-b\pm i\sqrt{4ac-b^2}}{2a}
$$
下面是具体的代码实现:
```python
import cmath
def solve_quad_eq(a, b, c):
delta = b ** 2 - 4 * a * c
if delta > 0:
x1 = (-b + cmath.sqrt(delta)) / (2 * a)
x2 = (-b - cmath.sqrt(delta)) / (2 * a)
return x1, x2
elif delta == 0:
x = -b / (2 * a)
return x, x
else:
x1 = (-b + cmath.sqrt(delta)) / (2 * a)
x2 = (-b - cmath.sqrt(delta)) / (2 * a)
return x1, x2
```
在主函数中输入 $a,b,c$ 的值,然后调用上述函数即可:
```python
if __name__ == '__main__':
a = float(input('a='))
b = float(input('b='))
c = float(input('c='))
x1, x2 = solve_quad_eq(a, b, c)
print(f'x1={x1}, x2={x2}')
```
需要注意的是,在第三种情况下,函数返回的是两个复数,可以使用 `cmath` 模块来处理复数运算。
阅读全文