関数型言語F#をやっているときに学んだ数学

関数型プログラミングのF#を学んでいくときに、少しずつラムダ計算と集合・写像・関係などを調べていろんなことが分かってきました。数学の教科書で問題を解こうとすると苦痛で続かないので、mathjaxを書いたり、プログラミングで解いたりして、すこしづつ数学もやっていこうと思います。

集合(set、セット)

集合は、ド・モルガンの法則やベン図で覚えている人も多いはずです。何かしらの集まりを表します。英字で表す場合は、集合を大文字で表し、要素(element、エレメント)は小文字で表します。

数学の記号は、そのままGoogle検索で、「数学 記号 読み方」で見つかります。

集合Aに要素xは属する(belong to)

$$ x \in A $$

集合Bに要素1,2,3,4,5は属する

$$ B = \{1,2,3,4,5\} $$

表記はいろいろあって以下のように条件を書く場合もあります。

$$ C =\{ n | n = 2k, k=1,2,…,10\}$$

$$ C =\{ 2,4,6,8,10,12,14,16,18,20\}$$

上記2つは同じ意味です。

部分集合

集合Aの要素が、集合Aの要素でもある場合、AはBの部分集合である。

記号で書くと、

$$ A \subseteq B $$

べき集合(Power Set)

集合Aのすべての部分集合からなる集合をAのべき集合といい、以下のような表し方をします。

$$ 2^A $$

A={a,b}なら、P(A) = { Φ, {a},{b},{a,b}}

直積集合(direct product)

$$ A \times B = \{ (a,b) \mid a \subseteq A \land b \subseteq B \}$$

Wikipediaの図が分かりやすい。直積は、direct product、デカルト積(Cartesian product)ともいう。

集合X = 1,2,3で集合Y = 5,6,7だったら、総当たりで以下のようになります。

X x Y = {(1,5),(1,6),(1,7), (2,5),(2,6),(2,7), (3,5),(3,6),(3,7)}

プログラミングだと2重のforループです。また(x,y)のような書き方を対(つい)、タプル、ペアと呼びます。

内包表記(comprehension)

数学の集合では、条件を書く方法がいろいろあります。プログラミング言語のリスト内包表記はここからきているのだと思います。

$$ A = \{x^2 | x \in  \{1..5\}\} $$

$$ A = \{1,4,9,16,25\} $$

F#ではリスト内包表記があります。

 

関係(relation)

高知工科大学の高校生向けの資料(関係を図で表現する道具(坂本 明雄))がすごくわかりやすいです。

2つの集合A、Bの直積集合A×Bの部分集合Rを関係と呼びます。それは、XY座標でも表示できるし、関係グラフ、有向グラフ、関係行列でも表示できます。

https://ja.wikipedia.org/wiki/直積集合

 

プログラミングで理解する反射律・対称律・推移律・反対称律

集合Aの直積集合A^2の部分集合をA上の関係と呼びます。A={1,2,3}だった時AxA={(1,1),(1,2),(1,3), (2,1),(2,2),(2,3), (3,1),(3,2),(3,3)}が直積集合となります。部分集合R={(1,2),(2,1),(3,3)}としたら、このRをA上の関係と呼びます。

写像(map)

先ほどのおさらい、2つの集合A、Bの集合AxBの部分集合Rを関係と呼びます。さらに、

集合Aの各要素に、それぞれBの要素がただ1つ対応している関係をAからBへの写像(map)といい微分積分の分野では、関数と呼びます。

 

非交和

https://ja.wikipedia.org/wiki/非交和

 

二項関係

論理(Logic)

論理(Logic)も同様ですが、数学のタイトルや項目を見るとちゃんと、集合と集合演算として分かれています。論理でも論理と論理演算となっていて、あらためて昔はテストの勉強のために問題を解いていただけなんだと思いました。

論理演算の英語はLogic Operation

命題関数

 

代数系

大人になってからの再学習 の★群・環・体 – 大人になってからの再学習 が分かりやすいです。数学の教科書を開く前にこの表をみてみるのが良いですね。

http://hooktail.sub.jp/algebra/FundamentalTheorem/

http://sun.ac.jp/prof/hnagano/houkoku/h26informationmath-13.html#1101

http://qiita.com/taketo1024/contributions

資料

Mathjaxの記号の書き方

http://www.mathsisfun.com/sets/index.html

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA