编程求ax² bx c=0的根
时间: 2024-10-22 12:22:58 浏览: 28
在编程中,求解二次方程`ax^2 + bx + c = 0`的根通常可以使用数学公式或数值方法。这里我将简述两种常见的算法:
**1. 使用二次公式**(也称为韦达定理公式)
对于二次方程,其根由下面公式给出:
\[ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
其中`a`, `b`, 和 `c` 分别是二次项系数、一次项系数和常数项。
**2. 数值方法(如牛顿迭代法或二分法)**
当系数不是精确整数,或者公式计算结果有浮点误差导致无法直接取平方根时,可以采用迭代的方法,例如牛顿迭代法。该方法通过不断逼近函数零点的方式来找到近似解。
在Python中,你可以使用math库的`cmath`模块处理复数根,或者使用科学计算库如NumPy提供的`numpy.roots()`函数来快速求解:
```python
import cmath
import numpy as np
def solve_quadratic(a, b, c):
delta = (b ** 2) - (4 * a * c)
if delta > 0:
root1 = (- cmath.sqrt(delta)) / (2 * a)
elif delta == 0:
root1 = root2 = -b / (2 * a)
else: # complex roots
real_part = -b / (2 * a)
imaginary_part = cmath.sqrt(-delta) / (2 * a)
root1 = complex(real_part, imaginary_part)
root2 = complex(real_part, -imaginary_part)
return (root1, root2)
# 示例
a = 1
b = -3
c = 2
roots = solve_quadratic(a, b, c)
print("Roots are:", roots)
```
阅读全文