を最初の 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% |