求方程a㎡+bm+c=0的根,用3个函数分别求当:b²-4ac大于0、等于0和小于0时的根并输出结果。从主函数a、b、c的值
时间: 2024-12-17 18:17:15 浏览: 12
在解决二次方程 \( a^2 + bx + c = 0 \) 的根的问题时,我们通常会使用韦达定理,特别是判别式 \( D = b^2 - 4ac \),它决定了方程根的性质:
1. 当 \( D > 0 \) (即 \( b^2 - 4ac \) 是正数),方程有两个不相等的实根,可以使用公式 \( x_{1,2} = \frac{-b \pm \sqrt{D}}{2a} \) 来计算。
2. 当 \( D = 0 \) (判别式等于零),方程有两个相等的实根,此时 \( x_1 = x_2 = \frac{-b}{2a} \)。
3. 当 \( D < 0 \) (判别式为负数),方程无实根,但有复数解,使用复数形式 \( x = \frac{-b \pm i\sqrt{|D|}}{2a} \),其中 \( i \) 是虚数单位。
以下是使用Python编写的一个简单示例,展示了如何创建三个函数分别处理这三种情况,并在主函数中计算和输出结果:
```python
import cmath
def quadratic_root_pos(a, b, c):
D = b**2 - 4*a*c
if D > 0:
x1 = (-b + cmath.sqrt(D)) / (2 * a)
x2 = (-b - cmath.sqrt(D)) / (2 * a)
return x1, x2
else:
return None
def quadratic_root_eq(a, b, c):
D = b**2 - 4*a*c
if D == 0:
x = -b / (2 * a)
return x
else:
return None
def quadratic_root_neg(a, b, c):
D = b**2 - 4*a*c
if D < 0:
x = (-b + cmath.sqrt(-D)) / (2 * a)
y = (-b - cmath.sqrt(-D)) / (2 * a)
return complex(x), complex(y)
else:
return None
# 主函数,获取用户输入的a, b, c
a = float(input("请输入a的值: "))
b = float(input("请输入b的值: "))
c = float(input("请输入c的值: "))
# 根据判别式的值调用相应函数
if b**2 - 4*a*c > 0:
roots = quadratic_root_pos(a, b, c)
elif b**2 - 4*a*c == 0:
roots = quadratic_root_eq(a, b, c)
else:
roots = quadratic_root_neg(a, b, c)
if roots is not None:
print(f"当b²-4ac>0时,根为{x1:.2f}, {x2:.2f}")
elif roots is not None and isinstance(roots[0], complex):
print(f"当b²-4ac<0时,根为{roots[0].real:.2f}+{roots[0].imag:.2f}i, {roots[1].real:.2f}+{roots[1].imag:.2f}i")
else:
print("方程没有实根,只有复数解.")
```
运行此程序后,用户将按照输入的系数a、b、c得到相应的根信息。
阅读全文