fork download
  1. #include <stdio.h>
  2. #include <math.h> // sqrt関数を使用するために必要
  3.  
  4. // 関数 f(x) = sqrt(x) を定義
  5. double f(double x) {
  6. return sqrt(x);
  7. }
  8.  
  9. int main() {
  10. const int N = 20; // 最大分割数
  11. double d, s, tru, e; // 各種変数
  12. int m, n; // 分割数
  13. tru = 9.0; // 真値(問題に基づく)
  14.  
  15. printf("分割数\t誤差\n");
  16.  
  17. for (m = 2; m <= N; m++) { // 分割数を増加
  18. n = m;
  19. d = 1.0 / n; // 区間幅
  20. s = 0.0; // 初期化
  21.  
  22. // 面積の計算
  23. for (int a = 0; a < n; a++) {
  24. s += f((d * a) + (d / 2.0)); // 各区間の中心を基準に計算
  25. }
  26.  
  27.  
  28. // 誤差を計算
  29. e = fabs(s - tru); // 真値との差を計算
  30.  
  31. // 結果を出力
  32. printf("%d\t%.6f\n", m,s,e);
  33. }
  34.  
  35. return 0;
  36. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
分割数	誤差
2	1.366025
3	2.028226
4	2.691910
5	3.356400
6	4.021387
7	4.686705
8	5.352257
9	6.017982
10	6.683838
11	7.349798
12	8.015841
13	8.681952
14	9.348119
15	10.014333
16	10.680587
17	11.346876
18	12.013194
19	12.679539
20	13.345907