#include <stdio.h>
#include <math.h>
#define EPS 1e-5
double f(double x) {
return x
* x
- 1.0 - sin(x
); }
// Logic for Bisection Method
void solve_bisection(double a, double b, char* label) {
double mid;
int iter = 0;
printf("\n--- Bisection Method for %s ---\n", label
); printf("Iter | a b mid f(mid)\n");
do {
iter++;
mid = (a + b) / 2.0;
printf("%4d | %10.6f %10.6f %10.6f %10.6f\n", iter
, a
, b
, mid
, f
(mid
));
if (f(a) * f(mid) < 0) b = mid;
else a = mid;
} while (fabs(f
(mid
)) >= EPS
);
printf("Final Result for %s: x = %.6f\n", label
, mid
); }
// Logic for False Position Method
void solve_false_position(double a, double b, char* label) {
double mid;
int iter = 0;
printf("\n--- False Position Method for %s ---\n", label
); printf("Iter | a b mid f(mid)\n");
do {
iter++;
// The specific formula for はさみうち法
mid = (a * f(b) - b * f(a)) / (f(b) - f(a));
printf("%4d | %10.6f %10.6f %10.6f %10.6f\n", iter
, a
, b
, mid
, f
(mid
));
if (f(a) * f(mid) < 0) b = mid;
else a = mid;
} while (fabs(f
(mid
)) >= EPS
);
printf("Final Result for %s: x = %.6f\n", label
, mid
); }
int main() {
// Solve for both roots using Bisection
solve_bisection(-1.0, 0.0, "Root 1");
solve_bisection(1.0, 2.0, "Root 2");
// Solve for both roots using False Position
solve_false_position(-1.0, 0.0, "Root 1");
solve_false_position(1.0, 2.0, "Root 2");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgojZGVmaW5lIEVQUyAxZS01Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHggKiB4IC0gMS4wIC0gc2luKHgpOwp9CgovLyBMb2dpYyBmb3IgQmlzZWN0aW9uIE1ldGhvZAp2b2lkIHNvbHZlX2Jpc2VjdGlvbihkb3VibGUgYSwgZG91YmxlIGIsIGNoYXIqIGxhYmVsKSB7CiAgICBkb3VibGUgbWlkOwogICAgaW50IGl0ZXIgPSAwOwogICAgcHJpbnRmKCJcbi0tLSBCaXNlY3Rpb24gTWV0aG9kIGZvciAlcyAtLS1cbiIsIGxhYmVsKTsKICAgIHByaW50ZigiSXRlciB8IGEgICAgICAgICAgYiAgICAgICAgICBtaWQgICAgICAgIGYobWlkKVxuIik7CgogICAgZG8gewogICAgICAgIGl0ZXIrKzsKICAgICAgICBtaWQgPSAoYSArIGIpIC8gMi4wOwogICAgICAgIHByaW50ZigiJTRkIHwgJTEwLjZmICUxMC42ZiAlMTAuNmYgJTEwLjZmXG4iLCBpdGVyLCBhLCBiLCBtaWQsIGYobWlkKSk7CgogICAgICAgIGlmIChmKGEpICogZihtaWQpIDwgMCkgYiA9IG1pZDsKICAgICAgICBlbHNlIGEgPSBtaWQ7CgogICAgfSB3aGlsZSAoZmFicyhmKG1pZCkpID49IEVQUyk7CgogICAgcHJpbnRmKCJGaW5hbCBSZXN1bHQgZm9yICVzOiB4ID0gJS42ZlxuIiwgbGFiZWwsIG1pZCk7Cn0KCi8vIExvZ2ljIGZvciBGYWxzZSBQb3NpdGlvbiBNZXRob2QKdm9pZCBzb2x2ZV9mYWxzZV9wb3NpdGlvbihkb3VibGUgYSwgZG91YmxlIGIsIGNoYXIqIGxhYmVsKSB7CiAgICBkb3VibGUgbWlkOwogICAgaW50IGl0ZXIgPSAwOwogICAgcHJpbnRmKCJcbi0tLSBGYWxzZSBQb3NpdGlvbiBNZXRob2QgZm9yICVzIC0tLVxuIiwgbGFiZWwpOwogICAgcHJpbnRmKCJJdGVyIHwgYSAgICAgICAgICBiICAgICAgICAgIG1pZCAgICAgICAgZihtaWQpXG4iKTsKCiAgICBkbyB7CiAgICAgICAgaXRlcisrOwogICAgICAgIC8vIFRoZSBzcGVjaWZpYyBmb3JtdWxhIGZvciDjga/jgZXjgb/jgYbjgaHms5UKICAgICAgICBtaWQgPSAoYSAqIGYoYikgLSBiICogZihhKSkgLyAoZihiKSAtIGYoYSkpOwogICAgICAgIHByaW50ZigiJTRkIHwgJTEwLjZmICUxMC42ZiAlMTAuNmYgJTEwLjZmXG4iLCBpdGVyLCBhLCBiLCBtaWQsIGYobWlkKSk7CgogICAgICAgIGlmIChmKGEpICogZihtaWQpIDwgMCkgYiA9IG1pZDsKICAgICAgICBlbHNlIGEgPSBtaWQ7CgogICAgfSB3aGlsZSAoZmFicyhmKG1pZCkpID49IEVQUyk7CgogICAgcHJpbnRmKCJGaW5hbCBSZXN1bHQgZm9yICVzOiB4ID0gJS42ZlxuIiwgbGFiZWwsIG1pZCk7Cn0KCmludCBtYWluKCkgewogICAgLy8gU29sdmUgZm9yIGJvdGggcm9vdHMgdXNpbmcgQmlzZWN0aW9uCiAgICBzb2x2ZV9iaXNlY3Rpb24oLTEuMCwgMC4wLCAiUm9vdCAxIik7CiAgICBzb2x2ZV9iaXNlY3Rpb24oMS4wLCAyLjAsICJSb290IDIiKTsKCiAgICAvLyBTb2x2ZSBmb3IgYm90aCByb290cyB1c2luZyBGYWxzZSBQb3NpdGlvbgogICAgc29sdmVfZmFsc2VfcG9zaXRpb24oLTEuMCwgMC4wLCAiUm9vdCAxIik7CiAgICBzb2x2ZV9mYWxzZV9wb3NpdGlvbigxLjAsIDIuMCwgIlJvb3QgMiIpOwoKICAgIHJldHVybiAwOwp9Cg==