求方程ax^2+bx+c=0的根,用三个函数gz,ez和sz分别求当b^2-4ac大于0、等于0和小于0时的根,并输出结果。从主函数输入a、b、c的值。(输出保留3位小数)
时间: 2023-04-28 07:01:44 浏览: 103
好的,以下是代码实现:
```python
import math
def gz(a, b, c):
delta = b**2 - 4*a*c
if delta > :
x1 = (-b + math.sqrt(delta)) / (2*a)
x2 = (-b - math.sqrt(delta)) / (2*a)
return round(x1, 3), round(x2, 3)
elif delta == :
x = -b / (2*a)
return round(x, 3)
else:
return "无实数根"
def ez(a, b, c):
delta = b**2 - 4*a*c
if delta > :
x1 = (-b + math.sqrt(delta)) / (2*a)
x2 = (-b - math.sqrt(delta)) / (2*a)
return round(x1, 3), round(x2, 3)
elif delta == :
x = -b / (2*a)
return round(x, 3)
else:
x1 = complex(-b / (2*a), math.sqrt(-delta) / (2*a))
x2 = complex(-b / (2*a), -math.sqrt(-delta) / (2*a))
return round(x1, 3), round(x2, 3)
def sz(a, b, c):
delta = b**2 - 4*a*c
if delta > :
x1 = (-b + math.sqrt(delta)) / (2*a)
x2 = (-b - math.sqrt(delta)) / (2*a)
return round(x1, 3), round(x2, 3)
elif delta == :
x = -b / (2*a)
return round(x, 3)
else:
p = -b / (2*a)
q = math.sqrt(-delta) / (2*a)
return f"{round(p, 3)}+{round(q, 3)}i", f"{round(p, 3)}-{round(q, 3)}i"
# 主函数
a = float(input("请输入a的值:"))
b = float(input("请输入b的值:"))
c = float(input("请输入c的值:"))
print("当b^2-4ac大于时的根为:", gz(a, b, c))
print("当b^2-4ac等于时的根为:", ez(a, b, c))
print("当b^2-4ac小于时的根为:", sz(a, b, c))
```
其中,`gz`函数用于求当$b^2-4ac>$时的根,`ez`函数用于求当$b^2-4ac=$时的根,`sz`函数用于求当$b^2-4ac<$时的根。这三个函数的实现方式基本相同,只是当根的类型不同时输出的结果不同。
在主函数中,我们通过`input`函数获取用户输入的$a$、$b$、$c$的值,然后分别调用三个函数求解,并输出结果。
注意,当$b^2-4ac<$时,我们输出的是一个复数,其中$i$表示虚数单位。
阅读全文