圓州率
🌐

Feature Image

k 次方求和問題

數學, 數論, 演算法, 作品集, Python
解 k 次方求和問題。
   最後更新:

呈現部分成果

result

連結是計算至 $\sum_{i = 1}^{n} i^{100}$ 的結果

介紹

任給一數 $k \in \mathbb{N}$,試將 $\sum_{i = 1}^{n} i^k$ 轉換成多項式結果,例如 $k = 2$ 時

$$ \begin{align*} \sum_{i = 1}^{n} i^2 = \frac{1}{3} n^3 + \frac{1}{2} n^2 + \frac{1}{6} n^1 \end{align*} $$

關鍵步驟在於

$$ \begin{align*} n^k = \sum_{i = 1}^n i^k - \sum_{i = 1}^n (i - 1)^k \end{align*} $$

範例

從 $k = 0$ 開始

$$ \sum_{i = 1}^{n} i^0 = \sum_{i = 1}^{n} 1 = n $$

對 $k = 1$ 時

$$ \begin{align*} n^2 & = \sum_{i = 1}^{n} i^2 - \sum_{i = 1}^{n} (i - 1)^2 \newline & = \sum_{i = 1}^{n} \left[ i^2 - (i - 1)^2 \right] \newline & = \sum_{i = 1}^{n} (2i - 1) \newline & = 2 \sum_{i = 1}^{n} i - \sum_{i = 1}^{n} 1 \end{align*} $$

將 $\sum_{i = 1}^{n} i$ 移項

$$ \begin{align*} \sum_{i = 1}^{n} i & = \frac{1}{2} \left( n^2 + \sum_{i = 1}^{n} 1 \right) \\ & = \frac{1}{2} n^2 + \frac{1}{2} n \end{align*} $$

同理,當 $k = 2$ 時

$$ \begin{align*} n^3 & = \sum_{i = 1}^{n} i^3 - \sum_{i = 1}^{n} (i - 1)^3 \\ & = \sum_{i = 1}^{n} \left[ i^3 - (i - 1)^3 \right] \\ & = \sum_{i = 1}^{n} (3i^2 - 3i + 1) \\ & = 3 \sum_{i = 1}^{n} i^2 - 3 \sum_{i = 1}^{n} i + \sum_{i = 1}^{n} 1 \end{align*} $$

將 $\sum_{i = 1}^{n} i^2$ 移項

$$ \begin{align*} \sum_{i = 1}^{n} i^2 & = \frac{1}{3} \left( n^3 + 3 \sum_{i = 1}^{n} i - \sum_{i = 1}^{n} 1 \right) \\ & = \frac{1}{3} \left( n^3 + 3 \left[ \frac{1}{2} n^2 + \frac{1}{2} n \right] - n \right) \\ & = \frac{1}{3} n^3 + \frac{1}{2} n^2 + \frac{1}{6} n \end{align*} $$

運用相同方式,對任意 $k \in \mathbb N$

$$ \begin{align*} n^{k + 1} & = \sum_{i = 1}^{n} i^{k + 1} - \sum_{i = 1}^{n} (i - 1)^{k + 1} \\ & = \sum_{i = 1}^{n} \left[ i^{k + 1} - (i - 1)^{k + 1} \right] \\ & = \sum_{i = 1}^{n} \left[ i^{k + 1} - \sum_{j = 0}^{k + 1} \binom{k + 1}{j} i^{j} (-1)^{k + 1 - j} \right] \\ & = \sum_{i = 1}^{n} \left[ i^{k + 1} - \left( i^{k + 1} - (k + 1) i^{k} + \sum_{j = 0}^{k - 1} \binom{k + 1}{j} i^{j} (-1)^{k + 1 - j} \right) \right] \\ & = \sum_{i = 1}^{n} \left[ (k + 1) i^{k} + \sum_{j = 0}^{k - 1} \binom{k + 1}{j} i^{j} (-1)^{k + 1 - j} \right] \\ & = (k + 1) \sum_{i = 1}^{n} i^k + \sum_{i = 1}^{n} \sum_{j = 0}^{k - 1} \binom{k + 1}{j} i^{j} (-1)^{k + 1 - j} \end{align*} $$

因此

$$ \begin{align*} \sum_{i = 1}^{n} i^k & = \frac{1}{k + 1} \left[ n^{k + 1} + \sum_{i = 1}^{n} \sum_{j = 0}^{k - 1} \binom{k + 1}{j} i^{j} (-1)^{k + 1 - j} \right] \\ & = \frac{1}{k + 1} \left[ n^{k + 1} + \sum_{j = 0}^{k - 1} \left[ \binom{k + 1}{j} (-1)^{k + 1 - j} \sum_{i = 1}^{n} i^j \right] \right] \end{align*} $$

令 $\sum_{i = 1}^{n} i^k = S_k$,獲得以下公式

$$ \begin{align*} S_k = \frac{1}{k + 1} \left[ n^{k + 1} + \sum_{j = 1}^{k} \binom{k + 1}{j} (-1)^{k - j} S_j \right] \end{align*} $$

另解

找到其他人的解法,過程真的很精妙!分享給大家

other

Python 實作

from fractions import Fraction
from math import comb
import numpy as np

k = int(input())
p = k + 1

A = np.zeros((p, p)) + Fraction()
for i in range(p):
    for j in range(p):
        if i >= j:
            A[i][j] = Fraction(comb(i + 1, j)) if (i + j) % 2 == 0 else Fraction(-comb(i + 1, j))
        else:
            A[i][j] = Fraction(0)

B = np.zeros(p) + Fraction()
B[0] = 1 / A[k][k]
A[k] = A[k] / A[k][k]
for i in range(1, p):
    B[i] = - A[k][k - i] / A[k - i][k - i]
    A[k] = A[k] - (A[k][k - i] / A[k - i][k - i]) * A[k - i]

print(f"\\frac{{1}}{{{p}}} n^{{{p}}}", end = ' ')
for i in range(1, p):
    if B[i].numerator != 0:
        print("+" if B[i].numerator > 0 else "-", end = ' ')
        if abs(B[i].numerator) == 1 and B[i].denominator == 1:
            print(f"n^{{{p - i}}}", end = ' ')
        elif B[i].denominator == 1:
            print(f"{abs(B[i].numerator)} n^{{{p - i}}}", end = ' ')
        else:
            print(f"\\frac{{{abs(B[i].numerator)}}}{{{B[i].denominator}}} n^{{{p - i}}}", end = ' ')