■シグマの表記方法
自然数の累乗の和の公式を使用する際、Σ(シグマ)を使用してまとめることができる。
例えば、1から10までの和(=1+2+3+4+・・・+9+10)をΣ(シグマ)を使用して表す場合は、以下の通りとなる。
これは、kに1から10までの自然数をすべて加算するという表記となる。
また、このシグマの式は、初項1、公差1の等差数列を第10項まで加算するという意味にもなる。
▼等差数列についての参照先
■自然数の累乗の和の公式
前項のΣ(シグマ)を使用した累乗の和について、以下の公式が成り立つ。
①自然数の累乗の和の公式
②自然数の累乗の和の公式(2乗)
③自然数の累乗の和の公式(3乗)
■例題
以下の4問について、自然数の累乗の和の公式を使用して問題を解く。
問題1
問題2
問題3
問題4
■サンプルコード
# -*- Coding:UTF-8 -*-
# 自然数の累乗の和の公式
# 引数:n項
# 戻り値:自然数の累乗の和
def func_ruijo(n:int):
# Σ K(n, k=1) = 1/2n(n+1)
ans = (1 / 2) * n * (n + 1)
# 計算結果を戻り値として返す。
return ans
# 自然数の累乗の和の公式(2乗)
# 引数:n項
# 戻り値:自然数の累乗の和(2乗)
def func_ruijo_2(n:int):
# Σ K**2(n, k=1) = 1/6n(n+1)(2n+1)
ans = (1 / 6) * n * (n + 1) * (2 * n + 1)
# 計算結果を戻り値として返す。
return ans
# 自然数の累乗の和の公式(3乗)
# 引数:n項
# 戻り値:自然数の累乗の和(3乗)
def func_ruijo_3(n:int):
# Σ K**3(n, k=1)
ans = ((1 / 2) * n * (n + 1)) ** 2
# 計算結果を戻り値として返す。
return ans
# メイン処理
if __name__ == '__main__':
# 問題1:Σ 2K(n=6, k=1)
ans1 = 2 * (func_ruijo(6))
print('問題1:', ans1)
#問題2:Σ K**2(n=10, k=1)
ans2 = func_ruijo_2(10)
print('問題2:', ans2)
#問題2:Σ K**3(n=7, k=1)
ans3 = func_ruijo_3(7)
print('問題3:', ans3)
# 問題4:Σ (2K-1)**2(n=5, k=1) = Σ (4k**2 - 4K + 1)(n=5, k=1)
ans4 = (4 * func_ruijo_2(5)) - (4 * func_ruijo(5)) + 5
print('問題4:', ans4)
問題1について
以下の通り、kを2倍する場合は、それぞれの値を2倍しながら足していくのも、全てを足してから(kの値を算出してから)2倍しても答えは同じになるため、後者の全てを足してから(kの値を算出してから)2倍する方針とする。
▼イメージ
問題4について
(2k-1)2を展開し、(4k2 – 4K + 1)の状態とする。
その後に、(4k2 – 4K + 1)について、それぞれ計算を行なっていく。
▼イメージ
▼問題4の補足
以下のkを含まない式は、1を5回足す(=5)となる。
■実行結果
問題1: 42.0
問題2: 385.0
問題3: 784.0
問題4: 165.0
コメント