C言語で事前定義関数(pow)を使って級数の和を計算するプログラム
問題概要
この記事では、以下の級数の和を計算するCプログラムを紹介します。
Sum = 1 - n^2/2! + n^4/4! - n^6/6! + n^8/8! - n^10/10!
ユーザーは実行時に n の値を入力し、math.h ライブラリに含まれる事前定義関数 pow() を使用して、この級数の和を求めます。
解決方法
事前定義関数を使って級数の和を計算する手順について、順を追って説明します。階乗の計算はループ内で累積的に求め、偶数次の項に対しては符号を交互に切り替えることで、正負が交互に現れる級数を実現します。
アルゴリズム
事前定義関数を使用して級数の和を計算するためのアルゴリズムは以下の通りです。
ステップ1 − 数値 num を読み込む
ステップ2 − fact = 1、sum = 1、n = 5 を初期化する
ステップ3 − i = 1 から n まで繰り返す
a. fact = fact * i を計算
b. i % 2 == 0 の場合
c. さらに i == 2 または i == 6 または i == 10 の場合
d. sum += -pow(num, i) / fact
e. それ以外の場合 sum += pow(num, i) / fact
f. 最後に sum を出力
サンプルコード
以下は、事前定義関数 pow() を使って級数の和を計算する C プログラムです。
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main(){
int i, n=5, num;
long int fact=1;
float sum=1;
printf("Enter the n value:");
scanf("%d", &num);
for(i=1;i<=n;i++){
fact=fact*i;
if(i%2==0){
if(i==2|i==10|i==6)
sum+= -pow(num,i)/fact;
else
sum+=pow(num,i)/fact;
}
}
printf("sum is %f", sum);
}
プログラムのポイント
- 変数 fact は階乗値を格納し、ループの各回で i を掛けることで累積的に計算されます。
- 偶数項(i が 2、6、10)では負号を付けて加算し、それ以外の偶数項は正の値として加算します。
- 冪乗の計算には math.h ヘッダーで提供される pow() 関数を使用しています。
- 奇数番目の項は級数に含まれないため、i が奇数の場合は何も行いません。
実行結果
上記のプログラムを実行すると、次のような出力が得られます。
Enter the n value:10 sum is 367.666656
このように、math.h ライブラリの pow() 関数を活用することで、冪乗の計算を自前で実装することなく、簡潔に級数の和を求めることができます。
-
【C言語】再帰関数を使って2つの整数の最大公約数(GCD)を求める方法
問題 C言語において再帰関数を使用し、与えられた2つの整数の最大公約数(GCD:Greatest Common Divisor)を求めます。 解決策 再帰関数を用いて2つの整数の最大公約数を求めるには、「ユークリッドの互除法」が利用できます。これは「2つの数のGCDは、大きい方の数を小さい方の数で割った余りと、小さい方の数とのGCDに等しい」という性質を応用した手法です。この計算を余りが0になるまで再帰的に繰り返すことで、GCDを効率よく求めることができます。 アルゴリズム 再帰関数を使って2つの整数のGCDを求めるためのアルゴリズムは、以下の手順に従います。 ステップ1 − 再帰関数を
-
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{(