Operaciones con Polinomios en Java: Suma, Multiplicación y Evaluación

Informática5,12 KB

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));
}
}

Descargar

PDF Word HTML