#include <stdio.h>
#include <math.h>
#define EPS 1e-5
double f(double x) {
}
// 二分法
double bisection(double a, double b) {
double mid;
while (1) {
mid = (a + b) / 2.0;
if (fabs(f
(mid
)) < EPS
) return mid
;
if (f(a) * f(mid) < 0)
b = mid;
else
a = mid;
}
}
// はさみうち法(False Position)
double false_position(double a, double b) {
double x;
while (1) {
x = (a * f(b) - b * f(a)) / (f(b) - f(a));
if (fabs(f
(x
)) < EPS
) return x
;
if (f(a) * f(x) < 0)
b = x;
else
a = x;
}
}
int main() {
double r1, r2;
printf("=== Bisection Method ===\n"); r1 = bisection(-1.0, 0.0);
r2 = bisection(1.0, 2.0);
printf("Roots: %.6f, %.6f\n", r1
, r2
);
printf("\n=== False Position Method ===\n"); r1 = false_position(-1.0, 0.0);
r2 = false_position(1.0, 2.0);
printf("Roots: %.6f, %.6f\n", r1
, r2
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgojZGVmaW5lIEVQUyAxZS01Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHgqeCAtIDEgLSBzaW4oeCk7Cn0KCi8vIOS6jOWIhuazlQpkb3VibGUgYmlzZWN0aW9uKGRvdWJsZSBhLCBkb3VibGUgYikgewogICAgZG91YmxlIG1pZDsKCiAgICB3aGlsZSAoMSkgewogICAgICAgIG1pZCA9IChhICsgYikgLyAyLjA7CgogICAgICAgIGlmIChmYWJzKGYobWlkKSkgPCBFUFMpIHJldHVybiBtaWQ7CgogICAgICAgIGlmIChmKGEpICogZihtaWQpIDwgMCkKICAgICAgICAgICAgYiA9IG1pZDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGEgPSBtaWQ7CiAgICB9Cn0KCi8vIOOBr+OBleOBv+OBhuOBoeazle+8iEZhbHNlIFBvc2l0aW9u77yJCmRvdWJsZSBmYWxzZV9wb3NpdGlvbihkb3VibGUgYSwgZG91YmxlIGIpIHsKICAgIGRvdWJsZSB4OwoKICAgIHdoaWxlICgxKSB7CiAgICAgICAgeCA9IChhICogZihiKSAtIGIgKiBmKGEpKSAvIChmKGIpIC0gZihhKSk7CgogICAgICAgIGlmIChmYWJzKGYoeCkpIDwgRVBTKSByZXR1cm4geDsKCiAgICAgICAgaWYgKGYoYSkgKiBmKHgpIDwgMCkKICAgICAgICAgICAgYiA9IHg7CiAgICAgICAgZWxzZQogICAgICAgICAgICBhID0geDsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBkb3VibGUgcjEsIHIyOwoKICAgIHByaW50ZigiPT09IEJpc2VjdGlvbiBNZXRob2QgPT09XG4iKTsKICAgIHIxID0gYmlzZWN0aW9uKC0xLjAsIDAuMCk7CiAgICByMiA9IGJpc2VjdGlvbigxLjAsIDIuMCk7CiAgICBwcmludGYoIlJvb3RzOiAlLjZmLCAlLjZmXG4iLCByMSwgcjIpOwoKICAgIHByaW50ZigiXG49PT0gRmFsc2UgUG9zaXRpb24gTWV0aG9kID09PVxuIik7CiAgICByMSA9IGZhbHNlX3Bvc2l0aW9uKC0xLjAsIDAuMCk7CiAgICByMiA9IGZhbHNlX3Bvc2l0aW9uKDEuMCwgMi4wKTsKICAgIHByaW50ZigiUm9vdHM6ICUuNmYsICUuNmZcbiIsIHIxLCByMik7CgogICAgcmV0dXJuIDA7Cn0K