#include <stdio.h>
#include <math.h>
#define EPS 1e-5
double f(double x) {
}
double bisection(double xl, double xr) {
double xi;
int i = 0;
printf("i\t xl\t\t xi\t\t xr\t\t f(xl)\t\t f(xi)\t\t f(xr)\n");
while (1) {
i++;
xi = (xl + xr) / 2.0;
printf("%d\t %.6f %.6f %.6f %.6f %.6f %.6f\n", i, xl, xi, xr, f(xl), f(xi), f(xr));
printf("→ Root ≈ %.6f\n", xi
); return xi;
}
if (f(xl) * f(xi) < 0)
xr = xi;
else
xl = xi;
}
}
double false_position(double xl, double xr) {
double xi;
int i = 0;
printf("i\t xl\t\t xi\t\t xr\t\t f(xl)\t\t f(xi)\t\t f(xr)\n");
while (1) {
i++;
xi = (xl * f(xr) - xr * f(xl)) / (f(xr) - f(xl));
printf("%d\t %.6f %.6f %.6f %.6f %.6f %.6f\n", i, xl, xi, xr, f(xl), f(xi), f(xr));
printf("→ Root ≈ %.6f\n", xi
); return xi;
}
if (f(xl) * f(xi) < 0)
xr = xi;
else
xl = xi;
}
}
int main() {
printf("f(x) = x^2 - 1 - sin(x) = 0\n");
bisection(-1.0, 0.0);
bisection(1.0, 2.0);
false_position(-1.0, 0.0);
false_position(1.0, 2.0);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgojZGVmaW5lIEVQUyAxZS01Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHgqeCAtIDEgLSBzaW4oeCk7Cn0KCmRvdWJsZSBiaXNlY3Rpb24oZG91YmxlIHhsLCBkb3VibGUgeHIpIHsKICAgIGRvdWJsZSB4aTsKICAgIGludCBpID0gMDsKCiAgICBwcmludGYoIlxuPT09IOS6jOWIhuazlSA9PT1cbiIpOwogICAgcHJpbnRmKCJpXHQgeGxcdFx0IHhpXHRcdCB4clx0XHQgZih4bClcdFx0IGYoeGkpXHRcdCBmKHhyKVxuIik7CgogICAgd2hpbGUgKDEpIHsKICAgICAgICBpKys7CiAgICAgICAgeGkgPSAoeGwgKyB4cikgLyAyLjA7CgogICAgICAgIHByaW50ZigiJWRcdCAlLjZmICUuNmYgJS42ZiAlLjZmICUuNmYgJS42ZlxuIiwKICAgICAgICAgICAgICAgaSwgeGwsIHhpLCB4ciwgZih4bCksIGYoeGkpLCBmKHhyKSk7CgogICAgICAgIGlmIChmYWJzKGYoeGkpKSA8IEVQUykgewogICAgICAgICAgICBwcmludGYoIuKGkiBSb290IOKJiCAlLjZmXG4iLCB4aSk7CiAgICAgICAgICAgIHJldHVybiB4aTsKICAgICAgICB9CgogICAgICAgIGlmIChmKHhsKSAqIGYoeGkpIDwgMCkKICAgICAgICAgICAgeHIgPSB4aTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHhsID0geGk7CiAgICB9Cn0KCgpkb3VibGUgZmFsc2VfcG9zaXRpb24oZG91YmxlIHhsLCBkb3VibGUgeHIpIHsKICAgIGRvdWJsZSB4aTsKICAgIGludCBpID0gMDsKCiAgICBwcmludGYoIlxuPT09IOOBr+OBleOBv+OBhuOBoeazlSAgPT09XG4iKTsKICAgIHByaW50ZigiaVx0IHhsXHRcdCB4aVx0XHQgeHJcdFx0IGYoeGwpXHRcdCBmKHhpKVx0XHQgZih4cilcbiIpOwoKICAgIHdoaWxlICgxKSB7CiAgICAgICAgaSsrOwoKICAgICAgICB4aSA9ICh4bCAqIGYoeHIpIC0geHIgKiBmKHhsKSkgLyAoZih4cikgLSBmKHhsKSk7CgogICAgICAgIHByaW50ZigiJWRcdCAlLjZmICUuNmYgJS42ZiAlLjZmICUuNmYgJS42ZlxuIiwKICAgICAgICAgICAgICAgaSwgeGwsIHhpLCB4ciwgZih4bCksIGYoeGkpLCBmKHhyKSk7CgogICAgICAgIGlmIChmYWJzKGYoeGkpKSA8IEVQUykgewogICAgICAgICAgICBwcmludGYoIuKGkiBSb290IOKJiCAlLjZmXG4iLCB4aSk7CiAgICAgICAgICAgIHJldHVybiB4aTsKICAgICAgICB9CgogICAgICAgIGlmIChmKHhsKSAqIGYoeGkpIDwgMCkKICAgICAgICAgICAgeHIgPSB4aTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHhsID0geGk7CiAgICB9Cn0KCmludCBtYWluKCkgewoKICAgIHByaW50ZigiZih4KSA9IHheMiAtIDEgLSBzaW4oeCkgPSAwXG4iKTsKCiAgICBiaXNlY3Rpb24oLTEuMCwgMC4wKTsKICAgIGJpc2VjdGlvbigxLjAsIDIuMCk7CgogICAgZmFsc2VfcG9zaXRpb24oLTEuMCwgMC4wKTsKICAgIGZhbHNlX3Bvc2l0aW9uKDEuMCwgMi4wKTsKCiAgICByZXR1cm4gMDsKfQo=