Не уверен, на каком языке вы хотите, по тому опишу на F#
open System
let epsilon = Double.Epsilon
let abs: float -> float = Math.Abs
let equals a b = abs (a - b) <= epsilon
let rec findRoot f segment =
let bisect f (a, b) =
let avg = (a + b) / 2.0
if ((f a) * (f b)) < 0.0 then // знак f(a) != знак f(b)
a, avg
else
avg, b
let a, b = bisect f segment
if equals a b then a else findZero f (a, b)
let segment = -10.0, 10.0 // Отрезок [-10,10]
let f x = x + 5.0 // Пусть f(x) = x + 5
let result = findRoot f segment
printfn "%f" result
Или ещё короче на Wolfram language
ResourceFunction["BisectionMethodFindRoot"][x + 5, {x, -10, 10}, 5, 100]
https://resources.wolframcloud.com/FunctionReposit...