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

【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 メソッドを呼び出します。最終的な計算結果はコンソールに出力されます。

  1. 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) の値に近い高精度な近似が得られます。このような級数の問題を解くには、まず角度を入力として受け取り、それをラジアンに変換します。その後、級数のすべての項を順番に処理し、

  2. 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 に