/* error_accumulation2.c 累積誤差 sin(2πi / n) を i = 0, 1, ... , n - 1 について足すと 0 のはずだが ... */ #include #include int main() { int i, n = 10000; double x, sum, pi = 3.141592653589793; while(n <= 1000000000){ sum = 0.0; for(i = 0; i < n; i++) sum += sin(2 * pi * i / n); printf("n = %10d のとき 和 = %13.10lf\n", n, sum); n *= 10; } return 0; } /* n = 1000000 のとき 和 = -0.0000000000 n = 10000000 のとき 和 = 0.0000000000 n = 100000000 のとき 和 = 0.0000000024 n = 1000000000 のとき 和 = -0.0000000760 */