/* error_zeta2.c 積み残し現象 1/(1^2) + 1/(2^2) + 1/(3^2) + ... の理論値は (pi^2)/6 だが ... */ #include #include #define pi 3.14159265358979324 int main() { int i, j, n; float x; printf("理論値は %f だが\n\n", pi * pi / 6); printf("昇順に加えると\n"); for(j = 2; j <= 7; j++){ n = (int)pow(10, j); x = 0.0; for(i = 1; i <= n; i++) x += 1.0 / i / i; printf("%8d項目までの和 = %f\n", n, x); } printf("\n"); printf("降順に加えるとましで\n"); for(j = 2; j <= 7; j++){ n = (int)pow(10, j); x = 0.0; for(i = n; i >= 1; i--) x += 1. / i / i; printf("%8d項目までの和 = %f\n", n, x); } } /* 理論値は 1.644934 だが 昇順に加えると 100項目までの和 = 1.634984 1000項目までの和 = 1.643935 10000項目までの和 = 1.644725 100000項目までの和 = 1.644725 1000000項目までの和 = 1.644725 10000000項目までの和 = 1.644725 降順に加えるとましで 100項目までの和 = 1.634984 1000項目までの和 = 1.643934 10000項目までの和 = 1.644834 100000項目までの和 = 1.644924 1000000項目までの和 = 1.644933 10000000項目までの和 = 1.644934 */