Como calcular una ecuación de segundo grado en Java

Hola a todos, hoy os voy a explicar como calcular una ecuación grado en Java.

Una ecuación de 2º grado es una ecuación que contiene una incógnita elevado al cuadrado, esta es la formula:

Pueden ocurrir los siguientes casos, estos casos dependerán del discriminante, que es la parte que hay dentro de la raíz cuadrada:

  • Si el discriminante es mayor que 0, hay dos soluciones.
  • Si el discriminante es 0, solo hay una solución.
  • Si el discriminante es menor que 0, no hay solución posible.

En Java, vamos a realizar un método para calcular una ecuación de 2º grado, pasandole los valores de a,b y c.

Según estos casos que hemos comentado, devolveremos un array de doubles, siendo de 1 o dos posiciones. Null si no tiene solución,

Asi lo podemos realizar:


public static double[] ecuacion2Grado(int a, int b, int c) {

    double discriminante = (Math.pow(b, 2) - (4 * a * c));
    if (discriminante >= 0) {

        double soluciones[];

        // Una solucion
        if(discriminante == 0){

            soluciones = new double[1];

            soluciones[0] = ((-b) - (4 * a * c)) / (2 * a);

        // Dos soluciones
        }else{

            soluciones = new double[2];

            soluciones[0] = ((-b) + Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);

            soluciones[1] = ((-b) - Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);

        }

        return soluciones;
    } else {
        // Sin solucion
        return null;
    }

}

Vamos a ver 3 ejemplos:


public static void main(String[] args) {

    System.out.println("x^2 - 5x + 6"); // dos soluciones
    double resultados[] = ecuacion2Grado(1, -5, 6);

    if (resultados == null) {
        System.out.println("No tiene solucion");
    } else {
        for (int i = 0; i < resultados.length; i++) {
            System.out.println(resultados[i]);
        }
    }

    System.out.println("x^2 - 2x + 1"); // una solucion
    resultados = ecuacion2Grado(1, -2, 1);

    if (resultados == null) {
        System.out.println("No tiene solucion");
    } else {
        for (int i = 0; i < resultados.length; i++) {
            System.out.println(resultados[i]);
        }
    }

    System.out.println("x^2 - x + 1"); // sin solucion
    resultados = ecuacion2Grado(1, 1, 1);

    if (resultados == null) {
        System.out.println("No tiene solucion");
    } else {
        for (int i = 0; i < resultados.length; i++) {
            System.out.println(resultados[i]);
        }
    }

}

Este es el resultado:

Os dejo el ejercicio completo:



public class Ecuacion_2_grado {

    public static void main(String[] args) {

        System.out.println("x^2 - 5x + 6"); // dos soluciones
        double resultados[] = ecuacion2Grado(1, -5, 6);

        if (resultados == null) {
            System.out.println("No tiene solucion");
        } else {
            for (int i = 0; i < resultados.length; i++) {
                System.out.println(resultados[i]);
            }
        }

        System.out.println("x^2 - 2x + 1"); // una solucion
        resultados = ecuacion2Grado(1, -2, 1);

        if (resultados == null) {
            System.out.println("No tiene solucion");
        } else {
            for (int i = 0; i < resultados.length; i++) {
                System.out.println(resultados[i]);
            }
        }

        System.out.println("x^2 - x + 1"); // sin solucion
        resultados = ecuacion2Grado(1, 1, 1);

        if (resultados == null) {
            System.out.println("No tiene solucion");
        } else {
            for (int i = 0; i < resultados.length; i++) { System.out.println(resultados[i]); } } } public static double[] ecuacion2Grado(int a, int b, int c) { double discriminante = (Math.pow(b, 2) - (4 * a * c)); if (discriminante >= 0) {

            double soluciones[];

            // Una solucion
            if (discriminante == 0) {

                soluciones = new double[1];

                soluciones[0] = ((-b) - (4 * a * c)) / (2 * a);

                // Dos soluciones
            } else {

                soluciones = new double[2];

                soluciones[0] = ((-b) + Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);

                soluciones[1] = ((-b) - Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);

            }

            return soluciones;
        } else {
            // Sin solucion
            return null;
        }

    }

}

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.