учитывая x в [a, b] расширенном интервале (a <= x <= b), мы можем сказать, что приложение f: [a, b] -> R имеет корень на [a, b], т.е. x в ограниченном интервале [a, b], который удовлетворяет f (x) = o тогда и только тогда, когда f (a) * f (b) <0. </p>
Проще говоря, на интервале есть корень - знак изменения функции на этом интервале.
Чтобы найти эту точку, мы использовали бы двоичное разбиение интервала.
Я бы изменил этот код следующим образом:
private static double nullstelle(double a, double b){
double middle = (a + b)/2;
if(Math.abs(a-b) < 0.0001){
return middle;
}
if(Math.sin(a)*Math.sin(middle)<0) {
return nullstelle(a, middle);
}
if(Math.sin(middle)*Math.sin(b)<0) {
return nullstelle(middle, b);
}
}