функции:
fn bisect(mut left: f64, mut right: f64, f: fn(f64) -> f64, epsilon: f64) -> f64 {
let mut mid = (left + right) / 2.0;
while (right - left).abs() > epsilon {
if f(mid) > 0.0 {
right = mid;
} else {
left = mid;
}
mid = (left + right) / 2.0;
}
mid
}
fn main() {
println!("Bisection for x^2 - 2 = 0: {}", bisect(0.0, 2.0, |x| x * x - 2.0, 0.0001));
println!("Bisection for x^2 + 8x + 12 = 0: {}", bisect(-10.0, 10.0, |x| x * x + 8.0 * x + 12.0, 0.0001));
}
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=d64101b3e85ce84aae6a4b0d95c864ee
а где находишь такие примеры ?
В голове. Набросал за 2 минуты прост реализацию этого алгоритма https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B1%D0%B8%D1%81%D0%B5%D0%BA%D1%86%D0%B8%D0%B8
я ещё до такого уровня не дорос
Обсуждают сегодня