Category: Python

数列の和の公式とその証明

SymPy で数列の和 $\displaystyle \sum_{k=1}^n k^m \quad (m = 1, 2, 3, \dots)$ の公式がわかるよ,と説明したら,その証明を求められそうなのでメモ。

この公式と証明は高校の数学あたりでやっているんだろうけど,(なんせ昭和の昔の出来事なので)私にはとんと記憶がないなぁ。

In [1]:
from sympy.abc import *
from sympy import *

$\displaystyle\sum_{k=1}^n k$ = summation(k, (k, 1, n))

In [2]:
summation(k, (k, 1, n)).factor()
Out[2]:
$\displaystyle \frac{n \left(n + 1\right)}{2}$

証明

\begin{eqnarray}
\sum_{k=1}^n k &=& \frac{1}{2} \biggl\{\ 1 + 2 + \cdots + (n-1) + n \\
&& \quad  \  + n + (n-1) + \cdots + 2 + 1 \biggr\} \\
&=& \frac{1}{2} \sum_{k=1}^n \left(n+1\right)\\
&=& \frac{1}{2} n (n+1)
\end{eqnarray}

でもこれだと,次の $\displaystyle \sum_{k=1}^n k^2$ や $\displaystyle \sum_{k=1}^n k^3$ のときには応用できないので,別解:

\begin{align}
& &(k+1)^2 -k^2 &= 2 k + 1\\ \ \\
&k=1: & 2^2 -1^2 &= 2\cdot 1 + 1 \\
&k=2: & 3^2 -2^2 &= 2\cdot 2 + 1 \\
&\quad \vdots & &\ \ \vdots\\
&k=n-1: & n^2 -(n-1)^2 &= 2\cdot(n-1) + 1\\
&k=n: &(n+1)^2 -n^2 &= 2\cdot n + 1
\end{align}
$k=1$ から $k=n$ までの式の両辺を足し合わせると,左辺は最後の $(n+1)^2$ と最初の $-1^2$ の項以外は全てキャンセルされるから…
\begin{align}
(n+1)^2 -1 &= 2 \sum_{k=1}^n k + n \\
\therefore \ \ n^2 + 2 n &= 2 \sum_{k=1}^n k + n \\
\therefore\ \ \sum_{k=1}^n k &= \frac{n(n+1)}{2}
\end{align}

$\displaystyle\sum_{k=1}^n k^2$ = summation(k**2, (k, 1, n))

In [3]:
summation(k**2, (k, 1, n)).factor()
Out[3]:
$\displaystyle \frac{n \left(n + 1\right) \left(2 n + 1\right)}{6}$

証明

\begin{align}
& &(k+1)^3 -k^3 &= 3 k^2 + 3 k + 1\\ \ \\
&k=1: & 2^3 -1^3 &= 3\cdot 1^2 + 3\cdot 1 + 1 \\
&k=2: & 3^3 -2^3 &= 3\cdot 2^2 + 3\cdot 2 + 1 \\
&\quad\vdots & &\ \ \vdots\\
&k=n-1: & n^3 -(n-1)^3 &= 3\cdot(n-1)^2 + 3\cdot (n-1) + 1\\
&k=n: &(n+1)^3 -n^3 &= 3\cdot n^2 + 3\cdot n + 1
\end{align}
$k=1$ から $k=n$ までの式の両辺を足し合わせると,左辺は最後の $(n+1)^3$ と最初の $-1^3$ の項以外は全てキャンセルされるから…
\begin{align}
(n+1)^3 -1 &= 3 \sum_{k=1}^n k^2 + 3 \sum_{k=1}^n k + n \\
\therefore \ \ n^3 + 3 n^2 + 3 n &= 3 \sum_{k=1}^n k^2 + 3\cdot\frac{n(n+1)}{2} + n \\
\therefore\ \ \sum_{k=1}^n k^2 &= \frac{1}{3}\left\{n^3 + 3 n^2 + 3 n -3\frac{n(n+1)}{2} -n\right\}\\
&= \frac{n(n+1)(2 n+1)}{6}
\end{align}

$\displaystyle\sum_{k=1}^n k^3$ = summation(k**3, (k, 1, n))

In [4]:
summation(k**3, (k, 1, n)).factor()
Out[4]:
$\displaystyle \frac{n^{2} \left(n + 1\right)^{2}}{4}$

証明

証明は… ($(k+1)^4$ の展開は SymPy にやってもらうことにして)

In [5]:
Eq((k+1)**4 - k**4, expand((k+1)**4 - k**4))
Out[5]:
$\displaystyle -k^{4} + \left(k + 1\right)^{4} = 4 k^{3} + 6 k^{2} + 4 k + 1$

ですから,$k=1$ から $k=n$ までの
$$(k+1)^4 -k^4 = 4 k^3 + 6 k^2 + 4 k + 1$$
の両辺を足し合わせれば証明できます。

$k=1$ から $k=n$ までの式の両辺を足し合わせると,左辺は最後の $(n+1)^4$ と最初の $-1^4$ の項以外は全てキャンセルされるから…
\begin{align}
(n+1)^4 -1 &= 4 \sum_{k=1}^n k^3 + 6 \sum_{k=1}^n k^2 + 4 \sum_{k=1}^n k + n \\
\therefore \ \ n^4 + 4 n^3 + 6 n^2 + 4 n &= 4 \sum_{k=1}^n k^3 + 6\cdot\frac{n(n+1)(2 n+1)}{6} + 4\cdot\frac{n(n+1)}{2} + n \\
\therefore\ \ \sum_{k=1}^n k^3 &= \frac{1}{4}\left\{n^4 + 4 n^3 + 6 n^2 + 4 n -n(n+1)(2 n+1) -2n(n+1) -n\right\}\\
&= \frac{n^4 + 2 n^3 + n^2}{4} \\
&= \frac{n^2 (n+1)^2}{4}
\end{align}

NumPy の浮動小数点数が np.float64 と表示される問題

今年度から新しい JupyterHub を授業で使うようになって気づいたところ。 続きを読む

新しい弘大 JupyterHub の matplotlib や sympy-plotting-backends で日本語を表示させる設定

続きを読む

高さ h からの斜方投射の最大水平到達距離を解析的に求める

高さ h からの斜方投射の最大到達距離を求める準備」のページを参照。

最大水平到達距離となる打ち出し角度 $\theta$ を求めるには,平方根を含む非線形方程式を解く必要があるので,SymPy でやってみた。

続きを読む

Matplotlib で単振り子の振幅の絵を描く

続きを読む

Python のリストや配列に要素を追加したり間引いたり逆順にしたり

Python の list と numpy.ndarray にかかわる備忘録。扇形の内部を塗りつぶす時に使ってみようとして少しはまったので。ついでにグラフを描くときの点の間引き方などもついでに備忘録として。

続きを読む

gnuplot, Maxima, Python グラフ作成・比較

同等の対象を

  • gnuplot
  • Maxima (plot2d(), draw2d())
  • Python の Matplotlib の plt.***, ax.***
  • Python の SymPy Plotting Backends
    • The Graphic Module
    • Plot functions

でグラフにしてみるシリーズ。 続きを読む

Python で作成したグラフの部分だけを pdf として保存する:アップデート版

以前,「Python で作成したグラフの部分だけを pdf として保存する」のアップデート版。最近の弘大 JupyterHub の環境では,(matplotlib のバージョンアップにより)特にエラーが出ることもなく,簡単に pdf として保存できる。また,保存するファイル名の拡張子を .pdf から他の,たとえば .svg に変更すればそのまま svg として保存できる。

続きを読む

パーセクの定義とハッブル定数・ハッブル年齢

パーセクの定義に $1$ 秒角の $\tan$ (あるいは $\tan$ の逆数である $\cot$)がいらなくなって,$\displaystyle 1 \mbox{pc} = \frac{\mbox{au}}{\tan 1^{\prime\prime}} = \mbox{au}\ \cot 1^{\prime\prime}$ ではなく,新定義 (IAU 2015 Resolution B2) では
$$1 \mbox{pc} \equiv \frac{\mbox{au}}{1^{\prime\prime}} = \frac{648000}{\pi} \mbox{au}$$

となったという話。

続きを読む

Matplotlib でガウス関数の山を描く

ガウス積分の説明で使っているので。

続きを読む

Load more