tnho este metodo para calcular as raizes de uma parabola e devolver-me um vector com eles la dentro organizados em ordem decrescente…
Infelizmente para certos imputs nao me retorna o valor correcto…
O tipo double é assim tao manhoso???
public double[] zeros() {
double[] xpto = new double[2];
// assert (delta >= 0);
double x1;
double x2;
double delta = b * b - 4 * a * c;
if (delta == 0) {
xpto[0] = x1 = -b / 2 * a;
xpto[1] = x2 = -b / 2 * a;
}
else if (delta > 0) {
x1 = (-b + Math.sqrt(delta)) / 2 * a;
x2 = (-b - Math.sqrt(delta)) / 2 * a;
if (x1 > x2) {
xpto[0] = x2;
xpto[1] = x1;
} else if (x1 < x2) {
xpto[1] = x2;
xpto[0] = x1;
}
}
else if (delta < 0) {
xpto = null;
}
return xpto;
}
a main dela é:
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String aux;
String[] xp;
double[] xpcabra;
double a, b, c;
while (in.hasNextLine()) {
if (!in.hasNextLine())
break;
aux = in.nextLine();
xp = aux.split(" ");
a = Double.parseDouble(xp[0]);
b = Double.parseDouble(xp[1]);
c = Double.parseDouble(xp[2]);
Parabola p = new Parabola(a, b, c);
xpcabra = p.zeros();
if (xpcabra == null) {
System.out.println("Nao tem zeros");
} else {
for (int i = 0; i < xpcabra.length; i++) {
System.out.printf("%.4f ", toZero(xpcabra[i]));
}
}
}
}
para uns valores da certo…
mas para uma parabola com os coeficientes
3 -100 423
ou
-2 100 14
prega-me partida…