HTM講座第14回「集合の操作と構成:数学的関係&関数を作ってみる」

G=World公式サイト

2025/05/21 06:25

フォロー

前回ZFCの公理の一部を使って、順序対などの基本的な操作を体験していただきました。

そこからさらに進めて、数学的な「関係」や「関数」をつくるという段階に入ります。

 

一般に、複数の物事が互いに関わり合っている状態を関係(relation)と呼びますが、
これを数学的にどのように定式化できるでしょうか。

 

◆数学における「関係(relation)」とは:
集合の要素間の相互作用や関連性を表すもので、特に2項関係(binary relation)が重要な概念です。

◆2項関係(binary relation):

Xを集合として、その任意の2つの要素a, b∈Xに対して、aからbへの対応が真偽の定まった命題であるとき、aとbの間の関係を「2項関係」と呼びます。

例:
人と誕生日のペア、学生と点数のペア、商品と価格のペア…

 

数学における「関係」は、要素間の相互作用を理解するための基本的な概念で、関係を通じて、数学的な構造や性質を探求することが可能になります。

 

◆デカルト積(cartesian product):

集合 A,B に対して、順序対の集合R⊆A×Bを作ることで、AとBの間に「関係」ができます。

※このとき、任意の2つの集合の順序対の集合を、「デカルト積」 といいます。

 cartesian product: A×B={(a,b)∣a∈A,b∈B} 

 

つまり、集合の操作だけで順序という性質を持ったペア(順序対)を作ることができ、

さらにそれを集めることで“ペアの集合”を作れる。

そしてそこに「関係」というものが生まれてくる、というわけです。

 

◆デカルト積のコード化

集合を操作して数学的な関係を生成する手順は、そのままプログラミングに応用できます。

Pythonで集合 A = {1, 2}, B = {'x', 'y'} のデカルト積を作るコードを組んでみましょう。

 

import itertools

A = {1, 2}
B = {'x', 'y'}

# デカルト積 A × B
cartesian_product = list(itertools.product(A, B))

print("A × B =", cartesian_product)


※実行結果は次のようになります:
A × B = [(1, 'x'), (1, 'y'), (2, 'x'), (2, 'y')]

 

練習のため簡単なサンプルで試してみましたが、これでデカルト積という数学的な「関係」を実装することができました。

 

次に、「関数」です。

◆関数(function)とは:
ある集合 A の各要素に、集合 B の要素を“ただ一つずつ”対応させる関係のこと。

つまり、 f⊆A×B という関係であって、
任意の a∈A に対して、ただ1つの b∈B が存在して (a,b)∈f

を満たすものが「関数」です。

 

別の表現をすると、関係の中でも「毎回ひとつだけ答えが返ってくるような特別な“機能”」を持つものを、特に「関数」と呼びます(A を入力すると B を出力してくれるような存在です)。

 

関数そのものが集合だから、関数の“集合”もまた定義できます。
この仕組みが、線形代数・解析・位相空間論など、さまざまな数学の分野につながっていきます。

 

◆関数のコード化

同様に関数の構造をPythonで実装してみましょう。

関数 f: A → B を、A の各要素に B の要素を1つずつ対応させる形で定義するコードを組みます。

 

# A = {1, 2}, B = {'x', 'y'}
# 関数 f: A → B を {(1, 'x'), (2, 'y')} とする

f = {
    1: 'x',
    2: 'y'
}

# 出力確認
for a in f:
    print(f"f({a}) = {f[a]}")


※実行結果は次のようになります:

f(1) = x
f(2) = y

 

以上、今回は「集合の操作・構成」の応用というかたちで、数学的な「関係」と「関数」を作り出す、という体験をしていただきました。

 

次回は「数」そのものを作ってみましょう。

数って作れるものなの?最初からあるんじゃないの?と感じた方もいらっしゃるかもしれませんが、市販のルーでなく自分でルーから作ってカレーを調理するような感じです。

自分で数学を手作りする楽しさを味わってみてください。

 

ページを報告する

コピーしました

コピーしました