class BisectionMethod {
static double f(double x) {
return 2*x*x*x + 3*x - 1;
}
public static void main
(String[] args
) { double x1 = 0, x2 = 1, x0, E = 1e-8;
int i = 0;
if (f(x1) * f(x2) > 0) {
System.
out.
println("Invalid interval!"); return;
}
System.
out.
printf("%-5s %-12s %-12s %-12s %-12s %-12s\n",
"Step", "x1", "x2", "x0", "f(x0)", "Error");
double error
= Math.
abs((x2
- x1
) / x2
); while (error >= E) {
x0 = (x1 + x2) / 2;
i++;
double f0 = f(x0);
System.
out.
printf("%-5d %-12.8f %-12.8f %-12.8f %-12.8f %-12.8f\n",
i, x1, x2, x0, f0, error);
if (f(x1) * f0 < 0)
x2 = x0;
else
x1 = x0;
error
= Math.
abs((x2
- x1
) / x2
); }
System.
out.
println("\nApproximate root = " + (x1
+ x2
) / 2); System.
out.
println("Total steps = " + i
); }
}
Y2xhc3MgQmlzZWN0aW9uTWV0aG9kIHsKICAgIHN0YXRpYyBkb3VibGUgZihkb3VibGUgeCkgewogICAgICAgIHJldHVybiAyKngqeCp4ICsgMyp4IC0gMTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgZG91YmxlIHgxID0gMCwgeDIgPSAxLCB4MCwgRSA9IDFlLTg7CiAgICAgICAgaW50IGkgPSAwOwoKICAgICAgICBpZiAoZih4MSkgKiBmKHgyKSA+IDApIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJbnZhbGlkIGludGVydmFsISIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiJS01cyAlLTEycyAlLTEycyAlLTEycyAlLTEycyAlLTEyc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RlcCIsICJ4MSIsICJ4MiIsICJ4MCIsICJmKHgwKSIsICJFcnJvciIpOwoKICAgICAgICBkb3VibGUgZXJyb3IgPSBNYXRoLmFicygoeDIgLSB4MSkgLyB4Mik7CiAgICAgICAgd2hpbGUgKGVycm9yID49IEUpIHsKICAgICAgICAgICAgeDAgPSAoeDEgKyB4MikgLyAyOwogICAgICAgICAgICBpKys7CiAgICAgICAgICAgIGRvdWJsZSBmMCA9IGYoeDApOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiJS01ZCAlLTEyLjhmICUtMTIuOGYgJS0xMi44ZiAlLTEyLjhmICUtMTIuOGZcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIHgxLCB4MiwgeDAsIGYwLCBlcnJvcik7CgogICAgICAgICAgICBpZiAoZih4MSkgKiBmMCA8IDApCiAgICAgICAgICAgICAgICB4MiA9IHgwOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB4MSA9IHgwOwoKICAgICAgICAgICAgZXJyb3IgPSBNYXRoLmFicygoeDIgLSB4MSkgLyB4Mik7CiAgICAgICAgfQoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlxuQXBwcm94aW1hdGUgcm9vdCA9ICIgKyAoeDEgKyB4MikgLyAyKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRvdGFsIHN0ZXBzID0gIiArIGkpOwogICAgfQp9Cg==