見出し画像

[ 数学 ] パスカルの三角形を Python で書いてみる

[サイトマップを見る ]

パスカルの三角形

パスカルの三角形は、数字のピラミッドのようなものです(図1)。一番上の段には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)

関連する記事

うわー。以前にもパスカルの三角形の記事を書いていたんだー。忘れていた!

[ サイトマップを見る ]




この記事が気に入ったらサポートをしてみませんか?