fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. // 方程式 f(x) を定義
  5. double f(double x) {
  6. return pow(x, 3) - 7.0; // f(x) = x^3 - 7
  7. }
  8.  
  9. // 二分法の実装
  10. double nibun(double a, double b, double gosa) {
  11. double m;
  12. while (fabs(b - a) > gosa) {
  13. m = (a + b) / 2.0;
  14. if (fabs(f(m)) < gosa) { // f(m) == 0 ではなく、誤差を考慮
  15. break;
  16. } else if (f(a) * f(m) < 0.0) {
  17. b = m;
  18. } else {
  19. a = m;
  20. }
  21. }
  22. return m;
  23. }
  24.  
  25. int main() {
  26. double a = 1.9, b = 2.0, gosa = 1e-8; // 初期区間と許容誤差
  27.  
  28. // 二分法で解を計算
  29. double root = nibun(a, b, gosa);
  30.  
  31. // 結果を表示
  32. printf("7^(1/3) の近似解: %.8lf\n", root);
  33.  
  34. return 0;
  35. }
  36.  
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
7^(1/3) の近似解: 1.91293119