Я хочу создать метод Java, который возвращает наименьший корень квадратного уравнения в интервале (0, 1)
. Если в интервале нет решений, вернуть 1
. Мне нужна помощь в создании эффективного алгоритма.
Это мой текущий метод:
public static float getLowestRoot(float A, float B, float C) {
float D = B*B - 4*A*C;
if(D < 0) return 1;
float sD = (float) Math.sqrt(D);
float x1 = (-B + sD) / (2*A);
float x2 = (-B - sD) / (2*A);
if(x2 < x1) {
float tmp = x2;
x2 = x1;
x1 = tmp;
}
if(x1 > 0 && x1 < 1) return x1;
if(x2 > 0 && x2 < 1) return x2;
return 1;
}
Этот метод работает, но мне было интересно, есть ли способ сжать алгоритм, потому что сейчас он кажется раздутым.
float
наdouble
. Вы получите более точные результаты. - person Konstantin Yovkov   schedule 15.10.2013