Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でcos(x)級数の合計を計算するプログラム

本記事では、角度 x と項数 n が与えられたときに、cos(x)級数の合計を求めるC言語プログラムを解説します。ここで、x は余弦(コサイン)を求める角度、n は cos(x) 級数に含める項の数を表します。

cos(x)とは

cos(x) は三角関数の一つで、角度 x に対する余弦の値を計算するために使用される関数です。単位円上では、角度 x における点の x座標が cos(x) の値に対応します。

数式

cos(x) は以下のように無限級数(マクローリン展開)で表すことができます。

$$\cos (x) = \displaystyle\sum\limits_{k=0}^\infty \frac{(-1)^{k}}{(2k!)}x^{2k}$$

cos(x)級数の展開

この級数を展開すると、次のような形になります。

cos(x) = 1 − (x² / 2!) + (x⁴ / 4!) − (x⁶ / 6!) + (x⁸ / 8!)……

各項の符号が交互に入れ替わり、偶数次の冪乗と階乗を使って表現されている点が特徴です。項数 n を増やすほど、実際の cos(x) の値に近づいていきます。

実行例

入力:x = 10, n = 3
出力:0.984804

入力:x = 8, n = 2
出力:0.990266

プログラムのアプローチ

  • x と n の値を入力として受け取る
  • cos(x)級数を計算するための公式を適用する
  • 級数全体の合計として結果を出力する

アルゴリズム

開始
ステップ1:const double PI = 3.142 を宣言・初期化する
ステップ2:関数 double series_sum(double x, int n) 内で
    x = x * (PI / 180.0) を設定(角度を度からラジアンへ変換)
    result = 1 を設定
    s = 1, fact = 1, pow = 1 を設定
    i = 1 から i < 5 の間、i++ しながらループ処理:
        s = s * -1 を設定
        fact = fact * (2 * i - 1) * (2 * i) を設定
        pow = pow * x * x を設定
        result = result + s * pow / fact を設定
    ループ終了
    result を返す
ステップ3:関数 int main() 内で
    x = 10 を宣言・設定
    n = 3 を宣言・設定
    series_sum(x, n) の結果を出力
終了

C言語サンプルコード

#include <stdio.h>
const double PI = 3.142;
// cos(x)の合計を返す関数
double series_sum(double x, int n) {
    x = x * (PI / 180.0);
    double result = 1;
    double s = 1, fact = 1, pow = 1;
    for (int i = 1; i < 5; i++) {
        s = s * -1;
        fact = fact * (2 * i - 1) * (2 * i);
        pow = pow * x * x;
        result = result + s * pow / fact;
    }
    return result;
}
// main関数
int main() {
    float x = 10;
    int n = 3;
    printf("%lf\n", series_sum(x, n));  
    return 0;
}

出力結果

X=10; n=3 → 0.984804
X=13; n=8 → 0.974363
X=8; n=2 → 0.990266

コードのポイント

このプログラムでは、まず入力された角度を x * (PI / 180.0) によって度からラジアンに変換しています。これは、C言語の数学関数や級数計算ではラジアンが標準的な単位であるためです。

ループ内では、変数 s が各項の符号(正負)を管理し、fact が階乗の値を累積的に計算し、pow が x の偶数次冪を順次更新します。これにより、前の項の計算結果を再利用できるため、効率的な実装になっています。

  1. 【初心者向け】平行四辺形の外周(周長)を計算するC言語プログラム

    本記事では、2つの辺の長さが与えられた平行四辺形の外周(周囲の長さ)を計算し、その結果を表示するC言語プログラムを紹介します。数式の考え方からアルゴリズム、実際のコードまで順を追って解説していきます。 平行四辺形とは? 平行四辺形とは、次のような性質を持つ四角形の一種です。 向かい合う2組の辺がそれぞれ平行である 向かい合う角の大きさが互いに等しい 2本の対角線が互いの中点で交わる 下の図では、「a」と「b」が平行四辺形の隣り合う2つの辺の長さを表しています。 平行四辺形の外周の求め方 平行四辺形の外周(周長)は、次の式で定義されます。 外周 = 2 × (a + b)   = 2 ×

  2. C言語で最初のn個の自然数の立方和を求めるプログラム

    この記事では、最初のn個の自然数(1からnまで)の立方和を求める方法について解説します。基本的なアプローチとしては、1からnまで繰り返すforループを1つ使い、各ステップでその項の立方を計算して合計に加算していきます。この方法の計算量はO(n)です。しかし、O(1)つまり定数時間でこの問題を解きたい場合は、以下の級数の公式を利用できます。1³ + 2³ + 3³ + … + n³ = {n(n+1)/2}²アルゴリズムcubeNNatural(n)begin sum := 0 for i in range 1 to n, do sum := sum + i^3