を最初の 10 項まで
(
の項まで) 打ち切った級数で
を計算する。
| example7.c |
/* example7.c -- Taylor 展開による sin x の計算 */
#include <stdio.h>
#include <math.h>
int main()
{
int k, n;
double x,Sk,Ak;
printf("sin x を原点での Taylor 展開を用いて計算します。\n");
printf("項数を入力して下さい ");
scanf("%d", &n);
printf("x = ");
scanf("%lf", &x);
/* k = 1 の場合 */
Ak = x;
Sk = Ak;
for (k = 2; k <= n; k++) {
Ak = - Ak * (x * x) / ((2 * k - 1) * (2 * k - 2));
Sk = Sk + Ak;
printf("k=%3d, Ak= %15e, Sk= %20.15e\n", k, Ak, Sk);
}
printf("C の組み込み関数によると sin(%g) = %20.15e\n", x, sin(x));
return 0;
}
|
| 実行結果 |
oyabun% ./example7 sin x を原点での Taylor 展開を用いて計算します。 項数を入力して下さい 10 x = 1 k= 2, Ak= -1.666667e-01, Sk= 8.333333333333334e-01 k= 3, Ak= 8.333333e-03, Sk= 8.416666666666667e-01 k= 4, Ak= -1.984127e-04, Sk= 8.414682539682540e-01 k= 5, Ak= 2.755732e-06, Sk= 8.414710097001764e-01 k= 6, Ak= -2.505211e-08, Sk= 8.414709846480680e-01 k= 7, Ak= 1.605904e-10, Sk= 8.414709848086585e-01 k= 8, Ak= -7.647164e-13, Sk= 8.414709848078937e-01 k= 9, Ak= 2.811457e-15, Sk= 8.414709848078965e-01 k= 10, Ak= -8.220635e-18, Sk= 8.414709848078965e-01 C の組み込み関数によると sin(1) = 8.414709848078965e-01 oyabun% |