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.

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *