public class Polynomial
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
private float[] |
coeficientes
|
private float[] |
copiaSeguridad
|
Constructor and Description |
---|
Polynomial()
Constructor per defecte.
|
Polynomial(float[] coeficientes)
|
Polynomial(java.lang.String stringPolinomio)
|
Modifier and Type | Method and Description |
---|---|
Polynomial |
add(Polynomial poligono)
|
private float[] |
burbuja(float[] ar)
|
private int |
buscarMayorPotencia(java.lang.String polinomio)
|
private float[] |
calculosPrincipioYfin(float[] cofi,
float indice,
float discriminante)
|
private boolean |
comprovar(float n,
float[] divisores)
|
private float[] |
copiarArray(float[] array)
|
private void |
creacionMonomio(java.lang.String monomio)
|
Polynomial[] |
div(Polynomial p2)
|
boolean |
equals(java.lang.Object objeto)
|
private void |
invertirArray()
Esta creacionMonomio lo que hace es al llamarla, invertimos
el array de coeficientes del objeto desde el cual llamamos
a esta creacionMonomio/metodo.
|
private float[] |
invertirArray(float[] coeficientes)
|
Polynomial |
mult(Polynomial polinomio)
|
private float[] |
multiplicar(float[] coef1,
float[] coef2,
int longitud)
|
private boolean |
prueba(float[] cofi)
|
float[] |
roots()
|
private float[] |
segundoGrado(float[] cofi)
|
java.lang.String |
toString()
|
private float[] coeficientes
private float[] copiaSeguridad
public Polynomial()
public Polynomial(float[] coeficientes)
coeficientes
- Recibimos un array con todos los coeficientes, lo
que haremos primero de
todo es hacer una copa de ese array ya que asi si el original se modifica
nosotros seguiremos con el que nos hayan pasado desde el principio
Despues desde la izq iremos mirando los ceros que hay ya que los 0 a la izquierda no nos interesan y despues desde el primer numero por la izq que no sea 0 lo copiaremos a el array membre coeficientes
public Polynomial(java.lang.String stringPolinomio)
stringPolinomio
- Recibimos un polinomio en formato de String (2x^3
- 4 + 5x^2 + 32)
Esta funcion va leyendo el string monomio a monomio y lo que hace es ir pasando esos monomios a otra funcion externa la cual se encargara de mirar la potencia de ese monomio y añadirlo al array de coeficientes donde le toca
public Polynomial add(Polynomial poligono)
poligono
- recibimos dos poligonos (1 el que nos pasan y 2 el que
pasamos llamando a el metodo)
Este metodo lo que hace es recibir 2 polinomios, 1 el que le pasamos y otro el que llamamos a ese polinomio. Primero identificamos cual de los dos tiene un mayor exponente y lo asignamos a mayor, el que es menor lo añadimos a menor. Despues invertimos los dos arrays de coeficientes que tenemos (mayor y menor) y lo que hacemos es ir recorriendo el array resultado el cual sera de la misma longitud que el mayor de los dos iniciales. i mientras que i sea menos que la longitud del menor, iremos sumando las dos posiciones i de cada array si i es mayor que la longitud del menor, lo que haremos sera simplemente añadir la posicion de i de mayor en la posicion de i de resultado
public Polynomial mult(Polynomial polinomio)
polinomio
- recibimos dos polinomios (1 el que pasamos por
parametro y 2 el que pasamos llamando al metodo (this))
Esta funcion lo que hace es identificar las dos mayores potencias de cada polinomio (la longitud de cada uno - 1) lo que haremos sera dependiendo de cual sea mayor llamar a la funcion multiplicar de una o otra manera, esta funcion nos retornara el array de el resultado, con ese array llamaremos al constructor de polinomio lo retornaremos
public Polynomial[] div(Polynomial p2)
p2
- Segundo polinomioEsta funcion utiliza un bucle anidado a otro leyendo dividendo a dividendo y leyendo todos los divisores y los va asignando a la posicion que le toca en el array de resultados, cuando acaba lo que hace es retornar el array de residuo tambien.
public float[] roots()
En este metodo lo que hacemos es ir comprovando posibilidades de sacar las raices (dependiendo si son polinomios de primer grado, segundo, bicuadraticas etc) entonces si no encontramos ninguna de esas posibilidades, esta funcion hara 1 vez rufini y despues hara recursividad para volver a probar si podemos sacar las siguientes soluciones sin rufini
public boolean equals(java.lang.Object objeto)
equals
in class java.lang.Object
objeto
- donde objeto es otro polinomiopublic java.lang.String toString()
toString
in class java.lang.Object
En esta funcion lo que hacemos es leer posicion a posicion del array Coeficientes de ese polinomio, y la vamos añadiendo con sus respectivas x si le pertañen y sus respectivas potencias
Ejemplos: [3,-2,0] --> 3x² -2x [4,-1,0,11] --> 4x³ - x² + 11
private float[] multiplicar(float[] coef1, float[] coef2, int longitud)
coef1
- Coeficientes del primero polinomiocoef2
- Coeficientes del segundo polinomiolongitud
- es la longuitud que tendra que usar para crear el
array del nuevo polinomio resultante de la
multiplicación
Este metodo recibe dos arrays de dos polinomios y lo que hace es ir recorriendo uno a uno los coeficientes del primer polinomio, y los va multiplicando con todos los coeficientes del segundo polinomio
private void creacionMonomio(java.lang.String monomio)
monomio
- Recibimos una String la cual contiene un monomio
Lo que hacemos es recibir un monomio, identificar cual es su potencia (sin incognita potencia = 0, con incognita potencia = 1, con incognita y potencia potencia=potencia)
Despues de identificar la potencia, identificamos el coeficiente de ese monomio y lo añadimos al array de coeficientes en la posicion(potencia)
private int buscarMayorPotencia(java.lang.String polinomio)
polinomio
- Esta creacionMonomio recibe una String la cual contiene
un polinomio
hasta que acabe el polinomio Lo que hace esya creacionMonomio es recorrer el polinomio, y va mirando monomio a monomio cual es su potencia y esa potencia actual la compara con la mayor potencia, en el case de que la actual sea mayor a la mayor, se reestablece la mayor por la actual y vuelve a empezar
private float[] copiarArray(float[] array)
array
- array a copiarFUNCION QUE TE DEVUELVE UNA COPIA DE UN ARRAY QUE PASAMOS
private float[] invertirArray(float[] coeficientes)
coeficientes
- Recibe un array de floatsprivate void invertirArray()
No recibe ningun parametro ni devuelve ningun otro parametro
private float[] burbuja(float[] ar)
ar
- Array a ordenarEste metodo nos permite ordenar de menor a mayor. En el caso de que queramos ordenar de mayor a menor llamamos a este metodo y despues sobre el resultado que nos retorne llamamos al metodo invertir array
private boolean comprovar(float n, float[] divisores)
n
- Numerodivisores
- arrayComprovamos si el numero que nos pasa pertenece al array que nos pasan
private float[] segundoGrado(float[] cofi)
cofi
- Array de floats de los coeficientesEste metodo lo que hace es calcular la solucion de una equación de segundo grado, solo entra en esta funcion si el discriminante es positivo, vamos que como minimo tiene 1 solucion
private float[] calculosPrincipioYfin(float[] cofi, float indice, float discriminante)
cofi
- Array de floatsindice
- es el indice de la raiz que hay que calculardiscriminante
- discriminantetenemos un if con un else el cual definira si ese polinomio tiene 1 o 2 soluciones
private boolean prueba(float[] cofi)
cofi
- Array de floats
Metodo que nos sirve para comprovar si el array de coeficientes tiene todo a ceros entre la primera posicion y la untima exclusive