next up previous contents
Next: 2.3.2 Taylor 級数の計算 Up: 2.3 級数の和 Previous: 2.3 級数の和

2.3.1 簡単な例

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;
}

このプログラムで $ \displaystyle\sum_{k=1}^{100}k$ を計算してみる。

実行結果

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;
}


next up previous contents
Next: 2.3.2 Taylor 級数の計算 Up: 2.3 級数の和 Previous: 2.3 級数の和
Masashi Katsurada
平成18年4月28日