求方程ax2+bx+c=0的根,用3个函数分别求当:bx2-4ac大于0、等于0和小于0时的根并输出结果
时间: 2024-09-06 10:05:33 浏览: 95
在求解一元二次方程`ax^2 + bx + c = 0`的根时,通常会根据判别式`Δ = b^2 - 4ac`的值来决定采用哪种方法求解:
1. 当判别式`Δ > 0`时,方程有两个不同的实数根,可以使用求根公式:
```
x1 = (-b - √Δ) / (2a)
```
其中`√Δ`表示根号下判别式的值。
2. 当判别式`Δ = 0`时,方程有两个相同的实数根(或称为重根),可以使用以下公式求解:
```
x1 = x2 = -b / (2a)
```
3. 当判别式`Δ < 0`时,方程没有实数根,但有两个共轭的复数根,可以表示为:
```
x1 = (- i√(-Δ)) / (2a)
```
其中`i`是虚数单位。
为了实现这一过程,可以定义三个函数来分别处理这三种情况,并输出相应的结果。
函数1:求解`Δ > 0`时的根
```c
void solve_real_roots(double a, double b, double c) {
double delta = b * b - 4 * a * c;
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
printf("x1 = %f, x2 = %f\n", x1, x2);
}
```
函数2:求解`Δ = 0`时的根
```c
void solve_double_roots(double a, double b) {
double x = -b / (2 * a);
printf("x1 = x2 = %f\n", x);
}
```
函数3:求解`Δ < 0`时的复数根
```c
void solve_complex_roots(double a, double b, double c) {
double delta = b * b - 4 * a * c;
double real_part = -b / (2 * a);
double imaginary_part = sqrt(-delta) / (2 * a);
printf("x1 = %.2f + %.2fi, x2 = %.2f - %.2fi\n", real_part, imaginary_part, real_part, imaginary_part);
}
```
在实际应用中,根据判别式的值调用相应的函数即可求出方程的根。
阅读全文