求方程: ax2+bx+c= 0的根,用3个函数分别求出当: b2 - 4ac>0,b2 - 4ac=0,b2 - 4ac <0时的根并输出结果。从主函数中输出a, b, c的值。
时间: 2023-10-06 09:08:28 浏览: 214
已知二元一次方程ax²+bx+c=0(a≠0),编程实现求解方程的根。(分三种情况考虑)
好的,我了解了您的要求。以下是我的回答:
首先,我们可以使用公式求出方程的根:
当b² - 4ac > 0时,方程有两个实数根,公式为:
x1 = (-b + sqrt(b² - 4ac)) / (2a)
x2 = (-b - sqrt(b² - 4ac)) / (2a)
当b² - 4ac = 0时,方程有一个实数根,公式为:
x = -b / (2a)
当b² - 4ac < 0时,方程有两个虚数根,公式为:
x1 = (-b + sqrt(-1 * (b² - 4ac))) / (2a)
x2 = (-b - sqrt(-1 * (b² - 4ac))) / (2a)
根据上述公式,我们可以编写三个函数,分别用于计算当b² - 4ac>0,b² - 4ac=0和b² - 4ac <0时的根。
以下是代码实现:
```python
import math
def calc_real_roots(a, b, c):
delta = b*b - 4*a*c
if delta > 0:
x1 = (-b + math.sqrt(delta)) / (2*a)
x2 = (-b - math.sqrt(delta)) / (2*a)
return (x1, x2)
elif delta == 0:
x = -b / (2*a)
return (x,)
else:
return None
def calc_complex_roots(a, b, c):
delta = b*b - 4*a*c
if delta < 0:
x1 = (-b + 1j * math.sqrt(-delta)) / (2*a)
x2 = (-b - 1j * math.sqrt(-delta)) / (2*a)
return (x1, x2)
else:
return None
def calc_roots(a, b, c):
real_roots = calc_real_roots(a, b, c)
if real_roots:
return real_roots
else:
return calc_complex_roots(a, b, c)
a = float(input("请输入a的值:"))
b = float(input("请输入b的值:"))
c = float(input("请输入c的值:"))
roots = calc_roots(a, b, c)
if roots:
print("方程的根为:", roots)
else:
print("方程无解")
```
以上代码中,我们首先定义了三个函数`calc_real_roots`、`calc_complex_roots`和`calc_roots`用于计算方程的根。
函数`calc_real_roots`用于当方程有实数根时的计算;函数`calc_complex_roots`用于当方程有虚数根时的计算;函数`calc_roots`则用于判断方程有无实数根并分别调用上述两个函数进行计算。
最后,我们从主函数中输入a,b,c的值,并根据计算结果输出方程的根。
希望这能解决您的问题!
阅读全文