Rで二項定理のシミュレーション

Rを利用して二項定理をシミュレーションします。

始めに定理の証明から。

二項定理とは、非負の整数 \(n\) と任意の実数(または複素数)\(a\),\(b\) に対して、以下の等式が成り立つという定理です。

\[(a+b)^ n =\displaystyle\sum_{k=0}^n \dbinom{n}{k}a^{n−k} b^ k\]

ここで、\(\dbinom{n}{k}\) は二項係数、定義は、

\[\dbinom{n}{k}=\dfrac{n!}{k!(n−k)!}\]

数学的帰納法により証明します。

まず、\(n=0\) の場合について考えます。

  • 左辺: \((a+b)^0 =1\)
  • 右辺: \(\displaystyle\sum_{k=0}^0\dbinom{0}{k}a^{0-k}b^k=\dbinom{0}{0}a^{0-0}b^0=\dfrac{0!}{0!(0-0)!}a^0b^0=\dfrac{1}{1\cdot1}\cdot1\cdot1 =1\)

従って、\(n=0\) の場合、二項定理は成り立ちます。

次に、\(n=1\) の場合について考えます。

  • 左辺: \((a+b)^1 =a+b\)
  • 右辺: \(\begin{eqnarray}\displaystyle\sum_{k=0}^1\dbinom{1}{k}a^{1-k}b^k&=&\dbinom{1}{0}a^{1-0}b^0+\dbinom{1}{1}a^{1-1}b^1=\dfrac{1!}{0!(1-0)!}a^1b^0+\dfrac{1!}{1!(1-1)!}a^0b^1\\&=&\dfrac{1}{1\cdot1}a+\dfrac{1}{1\cdot1}b =a+b\end{eqnarray}\)

従って、\(n=1\) の場合も二項定理は成り立ちます。

続いて、ある非負の整数 \(m\) において、二項定理が成り立つと仮定します。つまり、

\[(a+b)^ m = \displaystyle\sum_{k=0}^m\dbinom{m}{k} a^{m−k} b^k\]

が成り立つと仮定します。

この仮定のもとでは、\(n=m+1\) の場合にも二項定理が成り立つことを示します。

\[(a+b)^{ m+1} =(a+b)(a+b)^m\]

前述の仮定を用いると、

\[(a+b)^{m+1} =(a+b)(a+b)^{m}=(a+b)\left(\displaystyle\sum_{k=0}^m\dbinom{m}{k}a^{ m−k} b^k \right)\]

分配法則により、

\[(a+b)^{m+1} =a\left(\displaystyle\sum_{k=0}^m​\dbinom{m}{k} a^{ m−k} b^k \right)+b\left(\displaystyle\sum_{k=0}^m​\dbinom{m}{k} a^{m−k} b^k \right)\]

右辺を展開します。

  • 右辺第1項: \(a\left(\displaystyle\sum_{ k=0}^m \dbinom{m}{k}a^{m−k} b^k \right)=\displaystyle\sum_{k=0}^m\dbinom{m}{k}a\cdot​a^{ m−k} b^k=\displaystyle\sum_{k=0}^m\dbinom{m}{k}​a^{ m−k+1} b^k =\displaystyle\sum_{ k=0}^m​\dbinom{m}{k} a^{ (m+1)−k} b^k\)
  • 右辺第2項: \(b\left(\displaystyle\sum_{ k=0}^m \dbinom{m}{k}a^{m−k} b^k \right)=\displaystyle\sum_{k=0}^m\dbinom{m}{k}​a^{ m−k}b\cdot b^{k}=\displaystyle\sum_{k=0}^m\dbinom{m}{k}​a^{ m−k} b^{k+1}\)

ここで、右辺第2項の総和(\(\sum\))のインデックスを \(j=k+1\) と置換すると、\(k=j−1\) となり、\(k\)\(0\) から \(m\) までの総和とするとき、\(j\)\(1\) から \(m+1\) まで総和となります。

\[\displaystyle\sum_{k=0}^m​\dbinom{m}{k}a^{m−k} b^{ k+1} =\displaystyle\sum_{j=1}^{m+1}\dbinom{m}{j-1}a^{ m−(j−1)} b^{(j-1)+1} =\displaystyle\sum_{j=1}^{m+1}\dbinom{m}{j-1}​a^{ (m+1)−j} b^j\]

よって右辺第2項は、

\[\displaystyle\sum_{k=0}^m​\dbinom{m}{k}a^{m−k} b^{ k+1} =\displaystyle\sum_{k=1}^{m+1}\dbinom{m}{k-1}a^{ (m+1)−k} b^k\] と変換できます。

従って、

\[(a+b)^{m+1} =\displaystyle\sum_{k=0}^m​\dbinom{m}{k}a^{ (m+1)−k} b^k +\displaystyle\sum_{k=1}^{m+1}\dbinom{m}{k-1}a^{ (m+1)−k} b^ k\]

右辺第1項を \(k=0\)\(k=1,\cdots,m\) に分けますと

\[\displaystyle\sum_{k=0}^m​\dbinom{m}{k}a^{ (m+1)−k} b^k= \dbinom{m}{0}a^{m+1} b^ 0 +\displaystyle\sum_{k=1}^m \dbinom{m}{k}a^{ (m+1)−k} b^k \] 右辺第2項を \(k=1,\cdots,m\)\(k=m+1\) に分けますと

\[\displaystyle\sum_{k=1}^{m+1}\dbinom{m}{k-1}a^{ (m+1)−k} b^ k=\displaystyle\sum_{ k=1}^m​\dbinom{m}{k-1} a^{ (m+1)−k} b^ k +\dbinom{m}{m}a^ 0 b^{ m+1}\]

まとめますと、

\[ \begin{eqnarray} (a+b)^{m+1} &=&\dbinom{m}{0}a^{m+1} b^ 0 +\displaystyle\sum_{k=1}^m \dbinom{m}{k}a^{ (m+1)−k} b^k +\displaystyle\sum_{ k=1}^m​\dbinom{m}{k-1} a^{ (m+1)−k} b^ k +\dbinom{m}{m}a^ 0 b^{ m+1}\\ &=&\dbinom{m}{0}a^{m+1} +\displaystyle\sum_{k=1}^m​ \left(\dbinom{m}{k}+\dbinom{m}{k-1}\right)a ^{(m+1)−k} b^k +\dbinom{m}{m}b^{m+1} \end{eqnarray} \]

ここで、 \[\dbinom{m+1}{k}=\dbinom{m}{k}+\dbinom{m}{k-1}\]

であるため、

Tip

\(\dbinom{m+1}{k}\) は、\(m+1\) 個の要素から \(k\) 個の要素を選ぶ組み合わせの総数を表します。

ここで、\(m+1\) 個の要素のうちの特定の1つの要素(例えば、要素\(X\))に注目します。\(m+1\) 個の要素から \(k\) 個を選ぶ組み合わせは、以下の2つの排反な場合に分けられます。

要素\(X\)を選ばない場合: この場合、残りの \(m\) 個の要素から \(k\) 個を選ぶことになり、その組み合わせの数は \(\dbinom{m}{k}\) 通りです。

要素\(X\)を選ぶ場合: この場合、すでに1つの要素(要素\(X\))を選んでいるので、残りの \(m\) 個の要素から \(k−1\) 個を選ぶことになり、その組み合わせの数は \(\dbinom{m}{k-1}\) 通りです。

したがって、\(m+1\) 個の要素から \(k\) 個を選ぶ組み合わせの総数は、これらの2つの場合の数の和に等しくなります。

\[\dbinom{m+1}{k}=\dbinom{m}{k}+\dbinom{m}{k-1}\]

また、

\[\dbinom{m}{0} =1=\dbinom{m+1}{0}\]

および

\[\dbinom{m}{m} =1=\dbinom{m+1}{m+1}\]

であることから、

\[ \begin{eqnarray} (a+b)^{ m+1}& =& \dbinom{m+1}{0} a^{m+1} + \displaystyle\sum_{k=1}^m​\dbinom{m+1}{k} a^{ (m+1)−k} b^ k + \dbinom{m+1}{m+1}b^{m+1}\\ &=& \dbinom{m+1}{0}a^{(m+1)-0}b^0+ \displaystyle\sum_{k=1}^m​\dbinom{m+1}{k} a^{ (m+1)−k} b^ k + \dbinom{m+1}{m+1}a^{m+1-(m+1)}b^{m+1}\\ &=&\displaystyle\sum_{k=0}^{m+1}\dbinom{m+1}{k} a^{ (m+1)−k} b^ k \end{eqnarray} \]

となり、\(n=m+1\) の場合にも二項定理が成り立つことが示されました。

\(n=1\) の場合は証明済みですので、すべての非負の整数 \(n\) に対して二項定理

\[(a+b)^ n =\displaystyle\sum_{k=0}^n\dbinom{n}{k}a^{n−k} b^ k\]

が成り立つことが証明されます。

続いてシミュレーションです。

# 二項定理のシミュレーション

# パラメータ設定
a <- 2 # aの値
b <- 3 # bの値
n <- 10 # nの値

# 左辺の計算: (a + b)^n
lhs <- (a + b)^n

# 右辺の計算: Σ (k=0 to n) [nCk * a^(n-k) * b^k]
rhs <- 0
for (k in 0:n) {
  # 二項係数 nCk を計算
  nCk <- choose(n, k)

  # 各項を計算して合計に加える
  term <- nCk * (a^(n - k)) * (b^k)
  rhs <- rhs + term
}

cat("左辺 (a + b)^n:", lhs, "\n")
cat("右辺 Σ (k=0 to n) [nCk * a^(n-k) * b^k]:", rhs, "\n")
左辺 (a + b)^n: 9765625 
右辺 Σ (k=0 to n) [nCk * a^(n-k) * b^k]: 9765625 

以上です。