一元二次方程求根Python
时间: 2024-12-05 09:13:29 浏览: 15
基于python实现的检验一元二次方程是否有实数根的程序
一元二次方程的求根通常涉及到计算给定方程 `ax^2 + bx + c = 0` 的解,其中 `a`, `b`, 和 `c` 是常数,`a` 不等于零。在Python中,我们可以使用数学库`math` 或者 `numpy` 来解决这个问题,如果方程有实数解,可以使用公式 `x = [-b ± sqrt(b^2 - 4ac)] / (2a)`。
以下是使用Python标准库`cmath`处理复数解的情况:
```python
import cmath
def solve_quadratic(a, b, c):
discriminant = b**2 - 4*a*c
if discriminant >= 0:
x1 = (-b + cmath.sqrt(discriminant)) / (2 * a)
x2 = (-b - cmath.sqrt(discriminant)) / (2 * a)
return x1, x2
else:
real_part = -b / (2 * a)
imaginary_part = cmath.sqrt(-discriminant) / (2 * a)
return complex(real_part, imaginary_part), complex(real_part, -imaginary_part)
# 示例
a, b, c = 1, -3, 2
solution = solve_quadratic(a, b, c)
print(f"方程 {a}x^2 + {b}x + {c} 的解是 {solution}")
```
如果只需要实数解并且不需要复数支持,可以使用`__future__.division`或在计算中直接避免浮点数除法:
```python
from __future__ import division
def solve_quadratic_real(a, b, c):
delta = b ** 2 -b + delta ** 0.5) / (2 * a)
x2 = (-b - delta ** 0.5) / (2 * a)
return x1, x2
elif delta == 0:
return [(-b) / (2 * a)]
else: # 复数根
return "方程无实数解"
# 示例
solution = solve_quadratic_real(1, -3, 2)
print(f"方程 {a}x^2 + {b}x + {c} 的解是 {solution}")
```
阅读全文