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