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.
Deja una respuesta