使用Python编写程序,一元次方程根的求解。其中各项系数由键盘输入。分析:设一次二:次方程形式为ax2+bx+c=0(a≠0),则方程的根有以下三:种形式:(1)b2-4ac=0,有两个相等实根;(2)b2-4ac>0,有两个不等实根;(3)b2-4ac<0,无实数根
时间: 2024-10-24 18:10:34 浏览: 23
在Python中,可以使用`cmath`模块来处理复数情况,因为一元二次方程的根可能会是实数或复数。下面是一个简单的程序,用于求解用户输入的一元二次方程:
```python
import cmath
def quadratic_solver(a, b, c):
discriminant = b ** 2 - 4 * a * c
if discriminant == 0: # 两个相等实根
root = -b / (2 * a)
return root, "两个相等实根"
elif discriminant > 0: # 两个不等实根
root1 = (-b + cmath.sqrt(discriminant)) / (2 * a)
root2 = (-b - cmath.sqrt(discriminant)) / (2 * a)
return root1, root2, "两个不等实根"
else: # 无实数根,即复数根
real_part = -b / (2 * a)
imaginary_part = cmath.sqrt(-discriminant) / (2 * a)
return real_part, imaginary_part, "两个共轭虚根"
# 用户输入系数
a = float(input("请输入a的值:"))
b = float(input("请输入b的值:"))
c = float(input("请输入c的值:"))
# 求解并输出结果
result = quadratic_solver(a, b, c)
print(f"方程 {a}x^2 + {b}x + {c} 的解是:")
for i, part in enumerate(result[:-1]):
print(f"根{str(i+1)}:{part.real:.2f}{'+{}j'.format(part.imag if part.imag != 0 else '')}")
print(result[-1])
# 相关问题:
1. 如何处理用户输入的系数为0的情况?
2. 如果只关心实根,可以怎么改进这个函数?
3. 这个程序能否处理三次及以上多项式方程?
阅读全文