c 求一元二次方程的根
时间: 2024-10-12 20:16:50 浏览: 3
求解一元二次方程通常采用公式法,给定一个一般形式的一元二次方程 ax^2 + bx + c = 0 (a ≠ 0),其中 x 是未知数,a、b 和 c 是已知常数。该方程的根可以通过下面的公式计算:
\[ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} \]
这个公式叫做“韦达定理”(Vieta's formulas),它基于平方根的性质,如果判别式 b^2 - 4ac 大于零,方程有两个实数根;等于零则有一个实数根(即重根);小于零则无实根,有复数解。
在编程中,特别是用 C 语言,可以编写函数来实现这个计算。例如:
```c
#include <math.h>
double quadratic_solver(double a, double b, double c) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
return (-b + sqrt(discriminant)) / (2 * a), (-b - sqrt(discriminant)) / (2 * a);
} else if (discriminant == 0) {
return -b / (2 * a);
} else {
double real_part = -b / (2 * a);
double imaginary_part = sqrt(-discriminant) / (2 * a);
return complex(real_part, imaginary_part);
}
}
```
这里我们假设已经引入了 `complex` 类型来处理复数,如果没有,则需要另外处理复数部分。