在C语言中,求二次方程的复根可以通过以下步骤实现:
计算判别式 :首先计算判别式 `delta`,其公式为 `delta = b^2 - 4ac`。判断判别式的值
如果 `delta > 0`,则方程有两个不相等的实根。
如果 `delta == 0`,则方程有两个相等的实根(一个重根)。
如果 `delta < 0`,则方程有两个共轭复根。
计算复根
当 `delta < 0` 时,复根的公式为 `x1 = (-b + i * sqrt(-delta)) / (2 * a)` 和 `x2 = (-b - i * sqrt(-delta)) / (2 * a)`,其中 `i` 是虚数单位(即 `sqrt(-1)`)。
下面是一个完整的C语言程序示例,用于求解一元二次方程的复根:
```c
include include void main() { double a, b, c, delta, realPart, imaginaryPart; // 输入方程系数 printf("请输入一元二次方程的系数a, b, c: "); scanf("%lf %lf %lf", &a, &b, &c); // 计算判别式 delta = b * b - 4 * a * c; // 判断判别式的大小,以确定方程的根的情况 if (delta > 0) { // 两个不相等的实根 double root1 = (-b + sqrt(delta)) / (2 * a); double root2 = (-b - sqrt(delta)) / (2 * a); printf("方程有两个不相等的实根: root1 = %.2lf, root2 = %.2lf\n", root1, root2); } else if (delta == 0) { // 两个相等的实根(一个重根) double root = -b / (2 * a); printf("方程有两个相同的实根: root1 = root2 = %.2lf\n", root); } else { // 两个共轭复根 realPart = -b / (2 * a); imaginaryPart = sqrt(-delta) / (2 * a); printf("方程有两个不同的虚根: root1 = %.2lf+%lf*i, root2 = %.2lf-%lf*i\n", realPart, imaginaryPart, realPart, imaginaryPart); } } ``` 代码解释: 通过 `scanf` 函数获取用户输入的系数 `a`, `b`, `c`。 使用公式 `delta = b^2 - 4ac` 计算判别式的值。 如果 `delta > 0`,则计算两个不相等的实根。 如果 `delta == 0`,则计算两个相等的实根。 如果 `delta < 0`,则计算两个共轭复根,其中实部为 `-b / (2 * a)`,虚部为 `sqrt(-delta) / (2 * a)`。 输出结果: 根据判别式的值,输出相应的根。 通过这个程序,你可以方便地求解一元二次方程的实根和复根。输入方程系数:
计算判别式:
判断判别式的值