 
 
 
 
 
 
 
  
| example5.c | 
| /* example5.c -- 級数の和 */
#include <stdio.h>
int main()
{
    int k,n;
    double Sk,Ak;
    printf("数列の和を計算します。\n");
    printf("何項までの和を計算しますか ?\n");
    scanf("%d", &n);
    Sk = 0.0;
    for (k = 1; k <= n; k++) {
        Ak = k;
        Sk = Sk + Ak;
        printf("k=%3d, Ak=%e, Sk=%e\n", k, Ak, Sk);
    }
    return 0;
}
 | 
このプログラムで 
 を計算してみる。
 を計算してみる。
| 実行結果 | 
| oyabun% ./example5 数列の和を計算します。 何項までの和を計算しますか ? 100 k= 1, Ak=1.000000e+00, Sk=1.000000e+00 k= 2, Ak=2.000000e+00, Sk=3.000000e+00 k= 3, Ak=3.000000e+00, Sk=6.000000e+00 k= 4, Ak=4.000000e+00, Sk=1.000000e+01 k= 5, Ak=5.000000e+00, Sk=1.500000e+01 k= 6, Ak=6.000000e+00, Sk=2.100000e+01 k= 7, Ak=7.000000e+00, Sk=2.800000e+01 k= 8, Ak=8.000000e+00, Sk=3.600000e+01 k= 9, Ak=9.000000e+00, Sk=4.500000e+01 k= 10, Ak=1.000000e+01, Sk=5.500000e+01 中略 k= 99, Ak=9.900000e+01, Sk=4.950000e+03 k=100, Ak=1.000000e+02, Sk=5.050000e+03 oyabun% | 
参考までに配列を使った (同じ計算をする) プログラムを掲げておく (こちら の方がもとの数式の表現に近いが、メモリーを余分に消費することになる)。
| example5a.c | 
| /* example5a.c -- 級数の和(配列の利用) */
#include <stdio.h>
#define MAXN 2000
int main()
{
    int k, n;
    double S[MAXN+1], A[MAXN+1];
    printf("数列の和を計算します。\n");
    printf("何項まで計算しますか ? ");
    scanf("%d", &n);
    if (n > MAXN) exit(0);
    for (k = 1; k <= n; k++)
        A[k] = k;
    S[1] = A[1];
    for (k = 2; k <= n; k++)
        S[k] = S[k - 1] + A[k];
    for (k = 1; k <= n; k++)
        printf("k=%3d, Ak=%e, Sk=%e\n", k, A[k], S[k]);
    return 0;
}
 | 
 
 
 
 
 
 
