C语言一元二次方程的根
时间: 2024-10-26 13:01:34 浏览: 15
一元二次方程求根(小白易懂版)
在C语言中,我们可以使用牛顿法(Newton-Raphson Method)或者其他数值方法来近似计算一元二次方程ax^2 + bx + c = 0的根。一元二次方程的根由下面的公式给出:
如果判别式D = b^2 - 4ac >= 0,则有两个实根:
x1, x2 = (-b ± sqrt(D)) / 2a
如果判别式D < 0,则方程有两个复根(共轭复数形式):
x1 = (-b + i*sqrt(-D)) / 2a
x2 = (-b - i*sqrt(-D)) / 2a
以下是简单的C函数示例,用于计算两个实根:
```c
#include <stdio.h>
#include <math.h> // 引入math库,使用sqrt函数
// 函数声明
double quadratic_solver(double a, double b, double c);
int main() {
double a, b, c;
printf("请输入一元二次方程的系数(a, b, c): ");
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
printf("警告:一元二次方程无法处理a为0的情况.\n");
return 1;
}
double discriminant = b * b - 4 * a * c;
double root1, root2;
if (discriminant >= 0) {
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程的两个实根是: %.2lf 和 %.2lf\n", root1, root2);
} else {
complex double realPart = -b / (2 * a);
complex double imagPart = sqrt(-discriminant) / (2 * a);
printf("方程的两个虚根是: %.2lf + %.2lfi 和 %.2lf - %.2lfi\n",
realPart.real, imagPart.imaginary, realPart.real, -imagPart.imaginary);
}
return 0;
}
// 使用牛顿法近似求解,这里简化版只适用于实数根
double quadratic_solver(double a, double b, double c) {
double x = -b / (2 * a);
return x;
}
```
在这个程序中,用户输入一元二次方程的系数,然后根据判别式的值来确定根的形式,并计算它们。
阅读全文