#include <stdio.h>
#include <math.h>
double f(double x) {
return x
* x
- 1.0 - sin(x
); }
void bisection(double xl, double xr) {
double xi;
int count = 0;
while (1) {
xi = (xl + xr) / 2.0;
count++;
if (fabs(f
(xi
)) < 1e-5) break;
if (f(xl) * f(xi) < 0) xr = xi;
else xl = xi;
}
printf("Bisection: x = %f (Iterations: %d)\n", xi
, count
); }
void falsePosition(double xl, double xr) {
double xi;
int count = 0;
while (1) {
// Linear interpolation formula
xi = (xl * f(xr) - xr * f(xl)) / (f(xr) - f(xl));
count++;
if (fabs(f
(xi
)) < 1e-5) break;
if (f(xl) * f(xi) < 0) xr = xi;
else xl = xi;
}
printf("False Position: x = %f (Iterations: %d)\n", xi
, count
); }
int main() {
// Root 1 interval approx [-1, 0]
// Root 2 interval approx [1, 2]
printf("Finding root in [1, 2]:\n"); bisection(1.0, 2.0);
falsePosition(1.0, 2.0);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHggKiB4IC0gMS4wIC0gc2luKHgpOwp9Cgp2b2lkIGJpc2VjdGlvbihkb3VibGUgeGwsIGRvdWJsZSB4cikgewogICAgZG91YmxlIHhpOwogICAgaW50IGNvdW50ID0gMDsKICAgIHdoaWxlICgxKSB7CiAgICAgICAgeGkgPSAoeGwgKyB4cikgLyAyLjA7CiAgICAgICAgY291bnQrKzsKICAgICAgICBpZiAoZmFicyhmKHhpKSkgPCAxZS01KSBicmVhazsKICAgICAgICAKICAgICAgICBpZiAoZih4bCkgKiBmKHhpKSA8IDApIHhyID0geGk7CiAgICAgICAgZWxzZSB4bCA9IHhpOwogICAgfQogICAgcHJpbnRmKCJCaXNlY3Rpb246IHggPSAlZiAoSXRlcmF0aW9uczogJWQpXG4iLCB4aSwgY291bnQpOwp9Cgp2b2lkIGZhbHNlUG9zaXRpb24oZG91YmxlIHhsLCBkb3VibGUgeHIpIHsKICAgIGRvdWJsZSB4aTsKICAgIGludCBjb3VudCA9IDA7CiAgICB3aGlsZSAoMSkgewogICAgICAgIC8vIExpbmVhciBpbnRlcnBvbGF0aW9uIGZvcm11bGEKICAgICAgICB4aSA9ICh4bCAqIGYoeHIpIC0geHIgKiBmKHhsKSkgLyAoZih4cikgLSBmKHhsKSk7CiAgICAgICAgY291bnQrKzsKICAgICAgICBpZiAoZmFicyhmKHhpKSkgPCAxZS01KSBicmVhazsKICAgICAgICAKICAgICAgICBpZiAoZih4bCkgKiBmKHhpKSA8IDApIHhyID0geGk7CiAgICAgICAgZWxzZSB4bCA9IHhpOwogICAgfQogICAgcHJpbnRmKCJGYWxzZSBQb3NpdGlvbjogeCA9ICVmIChJdGVyYXRpb25zOiAlZClcbiIsIHhpLCBjb3VudCk7Cn0KCmludCBtYWluKCkgewogICAgLy8gUm9vdCAxIGludGVydmFsIGFwcHJveCBbLTEsIDBdCiAgICAvLyBSb290IDIgaW50ZXJ2YWwgYXBwcm94IFsxLCAyXQogICAgcHJpbnRmKCJGaW5kaW5nIHJvb3QgaW4gWzEsIDJdOlxuIik7CiAgICBiaXNlY3Rpb24oMS4wLCAyLjApOwogICAgZmFsc2VQb3NpdGlvbigxLjAsIDIuMCk7CiAgICAKICAgIHJldHVybiAwOwp9Cg==