Корни квадратного уравнения в Java — программа с дискриминантом

Стандартное квадратное уравнение имеет вид:

ax2 + bx + c = 0

Здесь a, b и c — вещественные числа, и a не может быть равно 0.

Корни уравнения находятся по формуле:

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

Знак ± означает, что корней два:

root1 = (-b + √(b2-4ac)) / (2a)
root1 = (-b - √(b2-4ac)) / (2a)

Выражение b2-4ac называется дискриминантом уравнения. Он определяет тип корней:

  • если дискриминант > 0 — корни действительные и разные;

  • если дискриминант == 0 — корни действительные и равные;

  • если дискриминант < 0 — корни комплексные и разные.

Пример: программа для поиска корней квадратного уравнения

В программе разобраны все три случая. Для квадратного корня используется метод Math.sqrt() из стандартной библиотеки.

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 discriminant (b2 - 4ac)
    double discriminant = b * b - 4 * a * c;

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

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

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

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

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

    // if discriminant is less than zero
    else {

      // roots are complex number and distinct
      double real = -b / (2 * a);
      double imaginary = Math.sqrt(-discriminant) / (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.3, 4 и 5.6. Затем считается дискриминант b2 - 4ac.

В зависимости от значения дискриминанта корни вычисляются по формулам выше. Для квадратного корня используется функция Math.sqrt() из стандартной библиотеки Java.

Для вывода используется метод format().

Совет

format() можно заменить на printf() — они работают одинаково:

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