Operaciones con Polinomios en Java: Suma, Multiplicación y Evaluación
Operaciones con polinomios en Java
A continuación se presentan los métodos para sumar, multiplicar, evaluar y mostrar polinomios almacenados en un ArrayList.
Método sumar
public PolinomioForma1 sumar(int polA, int polB) throws Exception {
PolinomioForma1 polinomioA = arregloPolinomioArraylist.get(polA);
PolinomioForma1 polinomioB = arregloPolinomioArraylist.get(polB);
PolinomioForma1 polinomioC;
if (polinomioB == null) {
throw new Exception("El polinomio B es null");
}
// Bloque para validar si los arreglos son nulos o no
int[] arregloB = polinomioB.getArreglo();
if (arregloB == null) {
if (arregloA == null) {
polinomioC = new PolinomioForma1();
} else {
int[] arregloNuevo = new int[arregloA.length];
System.arraycopy(arregloA, 0, arregloNuevo, 0, arregloA.length);
polinomioC = new PolinomioForma1(arregloNuevo);
return polinomioC;
}
} else {
if (arregloA == null) {
int[] arregloNuevo = new int[arregloB.length];
System.arraycopy(arregloB, 0, arregloNuevo, 0, arregloB.length);
polinomioC = new PolinomioForma1(arregloNuevo);
return polinomioC;
}
}
// Este es el caso en que ambos arreglos no son nulos
int gradoA = polinomioA.getGrado();
int gradoB = polinomioB.getGrado();
int nGrado = (gradoA > gradoB) ? gradoA : gradoB;
polinomioC = new PolinomioForma1(nGrado);
int e = 0;
while (e <= gradoA && e <= gradoB) {
int nC = polinomioA.getCoeficiente(e) + polinomioB.getCoeficiente(e);
polinomioC.setCoeficiente(nC, e);
e++;
}
while (e <= gradoA) {
polinomioC.setCoeficiente(polinomioA.getCoeficiente(e), e);
e++;
}
while (e <= gradoB) {
polinomioC.setCoeficiente(polinomioB.getCoeficiente(e), e);
e++;
}
polinomioC.normalizar();
return polinomioC;
}Método multiplicar2
public PolinomioForma1 multiplicar2(int polA, int polB) throws Exception {
PolinomioForma1 polinomioA = arregloPolinomioArraylist.get(polA);
PolinomioForma1 polinomioB = arregloPolinomioArraylist.get(polB);
int grado = polinomioA.getGrado() + polinomioB.getGrado(); // 3 + 2 = 5
PolinomioForma1 polC = new PolinomioForma1(grado);
int coef;
int exp;
for (int i = 1; i < (polinomioA.getGrado() + 2); i++) {
for (int j = 1; j < (polinomioB.getGrado() + 2); j++) {
exp = polinomioA.getExponente(i);
coef = polinomioA.getCoeficiente(exp);
exp += polinomioB.getExponente(j);
coef *= polinomioB.getCoeficiente(polinomioB.getGrado() - j + 1);
polC.setCoeficiente(polC.getCoeficiente(exp) + coef, exp);
}
}
polC.normalizar();
return polC;
}Método EvaluarDeArregloPoli
public int EvaluarDeArregloPoli(int polinomio, int valor) throws Exception {
PolinomioForma1 polA = arregloPolinomioArraylist.get(polinomio);
int result = 0;
int exp;
for (int i = 1; i < polA.getGrado() + 2; i++) {
exp = polA.getExponente(i);
result += polA.getCoeficiente(exp) * Math.pow(valor, exp);
}
return result;
}Métodos para mostrar polinomios
public void mostrarTodosPoli() throws Exception {
if (arregloPolinomioArraylist.isEmpty()) { // Comprueba si el ArrayList está vacío
System.out.println("No hay polinomios para mostrar");
} else {
for (int i = 0; i < arregloPolinomioArraylist.size(); i++) {
System.out.println("Polinomio " + (i + 1) + " : " + arregloPolinomioArraylist.get(i));
}
}
}
public void mostrarUnPoli() throws Exception {
if (arregloPolinomioArraylist.isEmpty()) { // Comprueba si el ArrayList está vacío
System.out.println("No hay polinomios para mostrar");
} else {
System.out.println("Hay un total de " + arregloPolinomioArraylist.size() + " polinomios.\n¿Qué polinomio desea ver?");
int num = leer.nextInt() - 1;
System.out.println(arregloPolinomioArraylist.get(num));
}
}