查找二次方程所有根的 Java 程序

要理解此示例,您应具备以下 Java 编程的知识:

二次方程的标准形式是:

ax² + bx + c = 0

这里, a , b , 和 c 是实数并且 a 不能等于 0。

我们可以使用以下公式计算二次方的根:

x = (-b ± (b²-4ac)) / (2a)

± 符号表示将有两个根:

root1 = (-b + (b²-4ac)) / (2a)
root2 = (-b - (b²-4ac)) / (2a)

术语称为二次方程的行列式。它指定了根的性质。那是, b2-4ac

  • 如果行列式 > 0,则根为实数且不同
  • 如果行列式 == 0,则根为实数且相等
  • 如果行列式 < 0,则根是复数且不同

示例:查找二次方程根的 Java 程序

public class Main {

  public static void main(String[] args) {

    // value a, b, and c
    double a = 2.3, b = 4, c = 5.6;
    double root1, root2;

    // calculate the determinant (b2 - 4ac)
    double determinant = b * b - 4 * a * c;

    // check if determinant is greater than 0
    if (determinant > 0) {

      // two real and distinct roots
      root1 = (-b + Math.sqrt(determinant)) / (2 * a);
      root2 = (-b - Math.sqrt(determinant)) / (2 * a);

      System.out.format("root1 = %.2f and root2 = %.2f", root1, root2);
    }

    // check if determinant is equal to 0
    else if (determinant == 0) {

      // two real and equal roots
      // determinant is equal to 0
      // so -b + 0 == -b
      root1 = root2 = -b / (2 * a);
      System.out.format("root1 = root2 = %.2f;", root1);
    }

    // if determinant is less than zero
    else {

      // roots are complex number and distinct
      double real = -b / (2 * a);
      double imaginary = Math.sqrt(-determinant) / (2 * a);
      System.out.format("root1 = %.2f+%.2fi", real, imaginary);
      System.out.format("\nroot2 = %.2f-%.2fi", real, imaginary);
    }
  }
}

输出

root1 = -0.87+1.30i and root2 = -0.87-1.30i

在上面的程序中,系数 a , b , 和 c 分别设置为 2.345.6。然后,根据 b2 - 4ac 计算 determinant

根据行列式的值,根的计算如上式所示。注意我们使用了库函数 Math.sqrt() 来计算一个数的平方根。

我们使用 format() 方法打印计算出的根。

format() 函数也可以替换 printf() 为:

System.out.printf("root1 = root2 = %.2f;", root1);