圓州率
🌐

Feature Image

k 次方求和問題

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

呈現部分成果

result

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

介紹

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

i=1ni2=13n3+12n2+16n1 \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*}

關鍵步驟在於

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

範例

k=0k = 0 開始

i=1ni0=i=1n1=n \sum_{i = 1}^{n} i^0 = \sum_{i = 1}^{n} 1 = n

k=1k = 1

n2=i=1ni2i=1n(i1)2=i=1n[i2(i1)2]=i=1n(2i1)=2i=1nii=1n1 \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*}

i=1ni\sum_{i = 1}^{n} i 移項

i=1ni=12(n2+i=1n1)=12n2+12n \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=2k = 2

n3=i=1ni3i=1n(i1)3=i=1n[i3(i1)3]=i=1n(3i23i+1)=3i=1ni23i=1ni+i=1n1 \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*}

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

i=1ni2=13(n3+3i=1nii=1n1)=13(n3+3[12n2+12n]n)=13n3+12n2+16n \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*}

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

nk+1=i=1nik+1i=1n(i1)k+1=i=1n[ik+1(i1)k+1]=i=1n[ik+1j=0k+1(k+1j)ij(1)k+1j]=i=1n[ik+1(ik+1(k+1)ik+j=0k1(k+1j)ij(1)k+1j)]=i=1n[(k+1)ik+j=0k1(k+1j)ij(1)k+1j]=(k+1)i=1nik+i=1nj=0k1(k+1j)ij(1)k+1j \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*}

因此

i=1nik=1k+1[nk+1+i=1nj=0k1(k+1j)ij(1)k+1j]=1k+1[nk+1+j=0k1[(k+1j)(1)k+1ji=1nij]] \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*}

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

Sk=1k+1[nk+1+j=1k(k+1j)(1)kjSj] \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 = ' ')
python