区分求積法 問題(1)

次の級数の極限値を定積分に書き換え、値を求めよ。

\[ \lim_{n \to \infty} \sum_{i = 1}^{n} \frac{i^4}{n^5} \]

この問題では、次の関係を使います。

\[ \int_a^b f(x) dx = \lim_{n \to \infty} \sum_{i=1}^n f(x_i) \Delta x \]

ここで \(\Delta x = \cfrac{b-a}{n}\)、\(x_i = a + i\Delta x\) です。

この式の意味については「区分求積法」をみてください。

閉区間 \([0,1]\) での定積分とすると、\(\Delta x = \cfrac{1}{n}\)、\(x_i = \cfrac{i}{n}\) となる。

\[ \begin{aligned} \lim_{n \to \infty} \sum_{i = 1}^{n} \frac{i^4}{n^5} &= \lim_{n \to \infty} \sum_{i = 1}^n \Big(\frac{i}{n}\Big)^4 \cdot \frac{1}{n} \\ &= \lim_{n \to \infty} \sum_{i = 1}^n (x_i)^4 \Delta x\\ &= \int_0^1 x^4 dx \end{aligned} \]

これで定積分に書き換えられた。

これを計算すると次のように値が求められる。

\[ \begin{aligned} \lim_{n \to \infty} \sum_{i = 1}^{n} \frac{i^4}{n^5} &= \int_0^1 x^4 dx \\ &= \Big[\frac{x^5}{5}\Big]_0^1 \\ &= \frac{1}{5} \\ &= 0.2 \end{aligned} \]

これで数列の和が定積分を使って、計算できました。

計算プログラムで計算結果の確認

でも、これは本当に合っているのでしょうか?

念のため、実際に和の計算をしてみましょう。

級数を計算するにはたくさんの計算が必要です。手で計算するのは大変なので、Python と Java という二つのプログラミング言語を使って、 問題の級数を計算するプログラムを作って計算してみます。

利用者が多いと思われる人気のプログラミング言語として、Python と Java を選びました。どれかひとつでもプログラミングができると、何かと便利ですよ。

プログラミング言語 Python による計算

分割数 \(n\) を \(10\) から \(100\) まで、 \(10\) 分割ずつ増やして計算するプログラムを作ります。計算結果は本当に 0.2 に近い数字になるのでしょうか。

プログラミング言語 Python (パイソン) については、ウェブサイト「Python 入門」をみてください。

calc() という名前の関数を作り、指定の分割数で級数の計算をします。

プログラムは次のようになります。

def calc(n):
    sum = 0;
    for i in range(1, n + 1):
        sum += pow(i, 4) / pow(n, 5)
    return sum


if __name__ == "__main__":
    for n in range(10, 100 + 1, 10):
        ans = calc(n)
        print("n=%3d: %.5f" % (n, ans))

このプログラムを実行すると、次のように出力されます。

n= 10: 0.25333
n= 20: 0.22583
n= 30: 0.21704
n= 40: 0.21271
n= 50: 0.21013
n= 60: 0.20843
n= 70: 0.20721
n= 80: 0.20630
n= 90: 0.20560
n=100: 0.20503

\(n=10\) のときに \(0.25333\) だったのが、\(n=100\) のときには \(0.20503\) になっています。

この結果、分割数 \(n\) が増えていくと確かに \(0.2\) に近づいていっていることがわかりますね。

プログラミング言語 Java での計算

この問題の級数の計算を Java でプログラムすると次のようになります。

プログラミング言語 Java については「Java 入門」などを参考にしてください。

public class Main {
    public static void main(String[] args) {
        for (int n = 10; n <= 100; n += 10) {
            double ans = calc((double) n);
            System.out.format("n=%3d: %.5f\n", n, ans);
        }
    }

    public static double calc(double n) {
        double sum = 0.0;
        int N = (int) n;
        for (int i = 1; i <= N; i++) {
            sum += Math.pow((double) i, 4) / Math.pow(n, 5);
        }
        return sum;
    }
}

これの実行結果は Python のときと全く同一です。

以上、級数を定積分に直して値を計算して、実際に計算して正しいことを確認しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 基礎からの数学入門