【Java】1/1! + 2/2! + 3/3! + … + n/n! の級数の和を求めるプログラム
本記事では、次の級数の合計を求めるJavaプログラムを紹介します。
1/1! + 2/2! + 3/3! + 4/4! +…….+ n/n!
階乗(!)とは
「!」は階乗を表す記号です。nの階乗(n!)は、1からnまでのすべての整数を掛け合わせた値になります。例えば、3! = 3 × 2 × 1 = 6、4! = 4 × 3 × 2 × 1 = 24 です。したがって、この級数の第3項は 3/6 = 0.5、第4項は 4/24 ≒ 0.1667 となります。
サンプルコード
import java.io.*;
import java.lang.*;
public class Demo{
public static double pattern_sum(double val){
double residual = 0, factorial_val = 1;
for (int i = 1; i <= val; i++){
factorial_val = factorial_val * i;
residual = residual + (i / factorial_val);
}
return (residual);
}
public static void main(String[] args){
double val = 6;
System.out.println("The sum of the series is : " + pattern_sum(val));
}
}
実行結果
The sum of the series is : 2.7166666666666663
プログラムの解説
Demo という名前のクラスの中に、pattern_sum というメソッドを定義しています。このメソッドは double 型の数値を引数として受け取り、1からその値までループ処理を行いながら、各項「i / i!」を順番に加算していきます。
ポイントは、階乗を毎回ゼロから計算し直していない点です。変数 factorial_val に前回の階乗の値を保持しておき、ループごとに i を掛けることで階乗を効率的に更新しています。これにより、無駄な計算を省き、処理速度を向上させることができます。
main メソッドでは、級数の項数として val = 6 を設定し、その値を引数として pattern_sum メソッドを呼び出します。最終的な計算結果はコンソールに出力されます。
-
Pythonで正弦級数(sin x)の合計を求めるプログラム
正弦級数とはある値 x が与えられたとき、sin(x) の級数の合計を計算することを考えてみましょう。正弦(サイン)級数は、次のように複数の項から構成される無限級数です。sine(x) = x − x^3/fact(3) + x^5/fact(5) − x^7/fact(7) …これは sin(x) のテイラー展開(マクローリン展開)に基づいた式で、fact(n) は n の階乗を表します。項数を増やすほど、実際の sin(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 に