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

Pythonでオイラー数eを計算する方法|e = 1 + 1/1! + 1/2! + … + 1/n! を使った実装

オイラー数(ネイピア数)eは、数学において最も重要な定数の一つです。本記事では、次の級数の式を用いてオイラー数の値を計算するPythonプログラムの実装方法を解説します。

e = 1 + 1/1! + 1/2! + 1/3! + …… + 1/n!

この計算を実現するためには、まず与えられた数の階乗を求める関数を定義し、続いてそれらの階乗の逆数の総和を計算する関数を定義します。以下に具体的な実装例を示します。

サンプルコード

def factorial_result(n):
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

def sum_result(n):
    s = 0.0

    for i in range(1, n + 1):
        s += 1.0 / factorial_result(i)
    print(s)

my_value = 5
print("The value is :")
print(my_value)
print("The result is :")
sum_result(my_value)

実行結果

The value is :
5
The result is :
1.7166666666666668

コードの解説

  • factorial_result関数: 整数nを引数として受け取り、forループで2からnまでの整数を順に掛け合わせることで、nの階乗を計算して返します。

  • sum_result関数: 整数nを引数として受け取り、1からnまでの各整数iに対して「1 / i!」を計算し、その合計を変数sに加算していきます。最終的な合計値を出力します。

  • 関数の外側で計算対象となる値(ここでは5)を定義し、その値を引数としてsum_result関数を呼び出します。

  • 計算された結果は、print文によってコンソールに表示されます。

補足:より正確なeの近似値を求めるには

上記のコードは1/1!から計算を開始しているため、結果は約1.7166となります。実際のオイラー数e(約2.71828)に近い値を得たい場合は、級数の最初の項である1(= 1/0!)を合計に加えてください。また、nの値を大きくするほど級数は収束し、より高精度な近似値が得られます。

  1. コンテナに金属棒を詰めるのに必要な操作回数を求めるPythonプログラム

    異なる長さを持つ複数の金属棒を輸送するタスクが与えられたとしましょう。ところが、輸送用コンテナの長さは短く、長さ1の棒しか収容できません。n 本の棒が与えられ、それぞれの長さはリスト形式で渡されます。すべての棒をコンテナに収めるには、各棒を切断して単位長さ(長さ1)に分割する必要があります。そのうえで、分割したすべての棒をコンテナへ詰め込む作業が1操作としてカウントされます。ここで求めたいのは、棒に対して実行しなければならない操作の合計回数です。 この問題の鍵となるのは素因数分解の活用です。あらかじめエラトステネスの篩(ふるい)で十分な範囲の素数を生成しておくことで、大きな値でも効率的に操作

  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 に