[ 数学 ] パスカルの三角形を Python で書いてみる
[サイトマップを見る ]
パスカルの三角形
パスカルの三角形は、数字のピラミッドのようなものです(図1)。一番上の段には1が一つだけあり、下の段の数は、上の段の左と右の数の和になります。
数学の言葉を使って説明すると、パスカルの三角形とは,二項展開の係数を三角形の形に並べたものです。二項展開とは,次のような二項式の n 乗を展開して,各項の係数と次数を求めることをいいます。
$$
(a + b)^n
$$
項というのは,上の式でいうと a や b といった部分のことです。二つあるので二項式といいます。展開するというのは次のような操作のことをいいます。
$$
(a + b)^2\\
\\
a^2 + 2ab + b^2
$$
係数というのは,文字に掛けられている数字のことです。ab には 2 が掛けられています。ですから,ab の係数は2 です。$${a^2}$$ には何も数字がくっついていませんが,1 を掛けているとみましょう。そうみると,$${b^2}$$ にも1 が掛けられています。この式でいうと,係数は右から 1, 2, 1 となります。
二項係数と二項展開
二項展開の各項の係数は、二項係数で表すことができます。二項係数とは、n個のものからr個を選ぶ組み合わせの数を表します。例えば、3つのボールから2つのボールを選ぶ組み合わせは、$${{}_3 C_2}$$ で表されます。
例えば、$${(a+b)^3}$$ を展開してみます。
$$
(a+b)^3 = {}_3 C_0 a^3 + {}_3 C_1 a^2b + {}_3 C_2 ab^2 + {}_3 C_3 b^3
$$
パスカルの三角形と二項係数
パスカルの三角形は、二項係数を三角形の形に並べたものです。パスカルの三角形の各行は、ある二項式の展開における係数に対応しています。
パスカルの三角形の作り方
パスカルの三角形は次のように作ります。
最上段と両端には常に1を置く。
それ以外の数は、上の段の左と右の数の和となる。
Python で書いてみる
Python でパスカルの三角形のコードは以下のように書くことができます。
import numpy as np
import sys
rows = int(sys.argv[1])
def pascal_triangle(rows):
triangle = np.zeros((rows, rows), dtype=int)
triangle[0][0] = 1
for i in range(1, rows):
for j in range(i+1):
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
return triangle
def print_triangle(triangle):
# 中央付近の最大値を調べる
max_digits = len(str(max(triangle[rows-1])))
i = 1
for row in triangle:
print(' '*int((max_digits*(rows-i)+(rows-i))/2), end="")
for num in row:
if num != 0:
print(f"{num:>{max_digits}}", end="")
print(' ', end="")
print("")
i = i+1
pascal = pascal_triangle(rows)
# 三角形を表示
print_triangle(pascal)
関連する記事
うわー。以前にもパスカルの三角形の記事を書いていたんだー。忘れていた!
[ サイトマップを見る ]
この記事が気に入ったらサポートをしてみませんか?