C++で調和級数 1 + 1/2 + 1/3 + 1/4 + … + 1/n の合計を求めるプログラム
この問題では、数値 n が与えられます。私たちのタスクは、C++で級数 1 + 1/2 + 1/3 + 1/4 + … + 1/n の合計を求めるプログラムを作成することです。
コードの説明
ここでは、級数 1 + 1/2 + 1/3 + 1/4 + … + 1/n の第 n 項までの合計を求めます。この級数は「調和級数」と呼ばれるものです。
調和数列(Harmonic Progression)とは、各項の逆数を並べると等差数列になる性質を持つ数列のことです。つまり、調和数列 A1, A2, A3, …, An に対して、その逆数である 1/A1, 1/A2, 1/A3, … が等差数列を構成します。
まず、具体例を見ながら問題を理解しましょう。
入力
n = 7
出力
2.59286
説明
合計 = 1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7 = 2.59286
解決アプローチ
調和数列の合計を直接求める公式は存在しないため、この問題は単純にループ処理を使って解決します。各項を順番に足し合わせていくことで、第 n 項までの合計を求められます。
アルゴリズム
初期化: sumVal = 0;
- ステップ1: i を 1 から n までループさせる。
- ステップ1.1: sumVal を更新する → sumVal += 1/i
- ステップ2: sumVal を出力する。
ソリューションの動作を示すサンプルプログラム
例
#include <iostream>
using namespace std;
float calcSeriesSum(int n){
float sumVar = 0.00;
for(float i = 1; i <= n; i++){
sumVar += (1/i);
}
return sumVar;
}
int main(){
int n = 7;
cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n);
return 0;
}出力
The sum of series till 7 is 2.59286
計算量について
このプログラムの時間計算量は O(n)(第 n 項まで一度ずつ処理するため)、空間計算量は合計値を保持する変数のみで済むため O(1) となります。非常に効率的な方法です。
-
定積分を求めるシンプソンの1/3則とは?公式・アルゴリズム・C++実装例を解説
シンプソンの1/3則とは シンプソンの1/3則(Simpsons 1/3 Rule)は、台形則と同様に、区間 [a, b] における定積分の値を数値的に近似する手法です。台形則との主な違いは、台形則では区間全体を複数の台形に分割するのに対し、シンプソンの1/3則ではさらに各部分を2つに細分化し、放物線で関数を近似する点にあります。このため、台形則よりも高い精度で積分値を求められるのが特徴です。 シンプソンの1/3則の公式 この手法では、次の公式を使用します。 ここで、h は各区間の幅、n は区間の分割数を表します。h は以下の式から求めることができます。 入力と出力 入力: 関数 f(x)
-
1/1! + 2/2! + 3/3! + …… + n/n! の級数の合計を求めるPythonプログラム
この記事では、与えられた問題を解くための解法とアプローチについて詳しく解説します。 問題文 整数 n が入力として与えられたとき、次の級数の合計を求めます。 1/1! + 2/2! + 3/3! + 4/4! + …… + n/n! ここでは for ループを使用して実装するため、時間計算量は O(n) となります。また、処理効率を高めるポイントとして、階乗の計算を同じループ内で同時に行っている点が挙げられます。 アルゴリズム 以下の手順で級数の合計を求めます。 合計値 res を 0、階乗値 fact を 1 で初期化します。 i を 1 から n まで順に処理し、fact *= i に