fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. // 方程式 f(x) を定義
  5. double f(double x, int n) {
  6. return pow(x, n) - 7.0; // f(x) = x^n - 7
  7. }
  8.  
  9. // 二分法の実装
  10. double nibun(double a, double b, double gosa, int n) {
  11. double m;
  12. while (fabs(b - a) > gosa) {
  13. m = (a + b) / 2.0;
  14. if (fabs(f(m, n)) < gosa) { // f(m) が十分小さい場合
  15. break;
  16. } else if (f(a, n) * f(m, n) < 0.0) {
  17. b = m;
  18. } else {
  19. a = m;
  20. }
  21. }
  22. return m;
  23. }
  24.  
  25. int main() {
  26. int n;
  27. double a = 1.0, b = 3.0, gosa = 1e-8; // 初期区間と許容誤差
  28.  
  29. // n を入力
  30. printf("自然数 n を入力してください (7^(1/n) を計算): ");
  31. scanf("%d", &n);
  32.  
  33. // 二分法で解を計算
  34. double root = nibun(a, b, gosa, n);
  35.  
  36. // 結果を表示
  37. printf("7^(1/%d) の近似解: %.8lf\n", n, root);
  38.  
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0.01s 5272KB
stdin
4
stdout
自然数 n を入力してください (7^(1/n) を計算): 7^(1/4) の近似解: 1.62657657