Следующая функция возвращает ноль в интервале (a, b) функции: f (x) = 5 * sin (x) * log (x) с точностью eps.
Я не понимаю другую часть, где у нас есть условие, если (f (a) * f (x) <0.
Я понимаю, что если у нас есть интервал (a, b) и f (a) * f (b) <0, это означает, что в этом интервале находится ноль математической функции, но я не понимаю, почему с помощью бинарного поиска мы сократили правая сторона для этого условия. </p>
float zero(float a, float b, float eps){
float x = a + (b-a)/2;
float val = 5*sin(x)*log(x);
if(fabs(val) < eps){
return x;
}else{
float left = 5*sin(a)*log(a);
if(left*val < 0)
return zero(a, x, eps);
else
return zero(x, b, eps);
}
}
для ввода: 0.9 2 0.01
выход: 0.998828