数とは何か
数学とは数についての学問です.今まで特別気にせずに使ってきた数.数学を始めるにはまず数から.数を0から作ってみよう
前回,自然数の作り方について紹介しました.純粋数学寄りでプログラマーには関係ないと思うかもしれません.しかし,数学はプログラムの基礎です.そして,自然数は数学のもっとも基礎的な話です.勉強してすぐに使うことのできる話ではありません.しかし,すべての話は数学の延長上にあるのです!数学をもっと楽しみましょう!
整数について
人類はなぜ整数を必要としたのか??(必要なかったらわざわざ考えませんよね)それは次のような方程式を解きたかったからです.
$$\forall x \in \mathbb{N},\ \ a \ is \ const;\ \ x+a=0$$
この方程式が”解なし”になることが分かるでしょうか.$a$は自然数なので$x$は必ず負の数になってしまいます.負の数は自然数でないのでこの方程式は解がないということになります.
実は自然数以上の数はある方程式を解くために考えられたのです.
次は有理数の話をしますが有理数は$ax+b=0$という形の方程式を解くために拡張された数で,実数は$ax^2+bx+c=0$という二次方程式を解くために考えられたのです.
背景の話はここまでにしておいて,早速整数を作ってみましょう.
整数の定義は以下の通りです.
- ふたつの自然数の組$(a,b)$を考え便宜上これは$a-b$を表しているものとする.$$\tag{z-1}$$
- 次の全順序集合を$\mathbb{Z}$に定義できる.
$$(a,b) \leq (c,d)となるのはa+b \leq b+cとなる場合.かつ,この時に限る$$$\tag{z-2}$
まず,(z-1)では,整数とは二つの自然数の組ですということを主張しています.確かに,自然数1つだけでは負の数を表現できないのでふたつ使えばいいような気がしますね.
これは,暗に$(a,b)\in \mathbb{Z}$ということです.まだ,負の数を作ってないのでマイナスの記号を使うことはできませんが後々$(a,b)=a-b\in \mathbb{Z}$と表すことができることが分かってきます.ただし,これだけでは,整数を作ったとはまだいえません.
耳慣れない単語が出てきました.全順序集合という単語です.
全順序集合のイメージだけ話すと要素同士の大きさを比較することができ,小さい順に並べると一列になるということです.
たとえば,自然数は全順序集合だといえます.自然数同士では大きさを比較できるし,数直線のように一列に並べることができるからです.
逆に全順序集合でない例として次のようなものあげられます.
48の約数の集合について約数について比較する集合.
48の約数は${1,2,3,4,6,8,12,16,24,48}$
この中でたとえば12,6について比較すると$6 \leq 12$ですよね.12は6を約数に持つからです.逆に12,8について見てみると
$8 \nleq 12$です.また,$12 \nleq 8$です.12は8を約数に持ちませんし,8も12を約数に持たないからです.なのでこの集合は全順序集合であはりません.補足すると,同じような演算で49なら全順序集合になります.
(z-2)から整数はすべての数が比較できて一列になれべらることができるんだなーということが分かりました!
しかし,整数も作れていないので整数同士の比較を定義できるわけもありません.整数は二つの自然数の組み合わせでしたので自然数で比較します.
$$a+d \leq b+c$$
$$a-b \leq c-d$$
$$(a,b) \leq (c,d)$$
よって,整数の比較ができました.これらの式はすべて同値です.わかりにくい人のために例を挙げましょう.
$$(1,3)=1-3=-2$$
$$(3,2)=3-2=1$$
$$(1,3) \leq (3,2)$$
$$a+d \leq b+c$$より,
$$1+2 \leq 3+3 \Leftrightarrow 3 \leq 6$$
ちゃんと,定義にあってますね.すべての組について上記のようなことが成り立ちます.
これは,整数上で四則演算を矛盾なく定義するために必要な定義です.数が分かっても計算できなかったら意味ないですもんね
有理数について
有理数も実は整数と同じ作り方ができます.整数のときと同様に有理数もある方程式を解きたいがために考えられました.前述したように$ax+b=0$です.
この解は(当たり前ですが)$x=-\frac{b}{a}$と表すことができます.
まさに有理数です.分数とも言いますね.このように,整数(分子)と整数(分母)の組み合わせで作ることができます.
ただ厳密には間違いです.正しくは「整数」と「整数から0を除いたもの」の組み合わせです.分母が0なら有理数でないことは小学校で習いました.
ここでよく,分母が0なら無限大ジャン!と思いがちですがこれは間違いです.分数以前に方程式があったのを思い出して下さい!
$ax+b=0$で分母にあたるのは$a$ですが$a=0$を考えてみると方程式は$0x+b=0$
となります.ここで$b$が0以外なら矛盾で解なし.$b$が0なら方程式の形は
$0*x+0=0$となり,$x$にどんな数を入れても方程式が成り立ってしまいます.まるでどんなカードにもなれるジョーカーのようですね.
数は常に一意でなければなりません(これを数の定義の一つと呼んでもいいかもしれません).C言語でも変数を,defineやconstで定義してるのにいろいろな値に変わったら不都合ですよね.よって,分母が0にならないと最初から決めてしまうわけです.
ところで,整数の話で疑問を持った人がいるかもわかりません.$(2,3)=-1$だけど,$(1,2),(10,11)$なんかも-1じゃないか!と.
集合の話なので組み合わせは無数にありますが被りは一つのものとして扱います.例として,$\{ 1,1,2 \}= \{1,2 \}$等です.全射ではあるけど単射ではないということですね.有理数でも同じことが起きます.$(a,b)$を有理数だと思ってしまえば$(1,2)=(2,4)$です.すなわち,約分して,分子あるいは分母が最小のものをとってくることなんですね.
wikipediaの有理数の項目にいい画像があったので貼っておきます.
この画像では縦軸を分子,横軸を分母としてとり,1つ一つの格子点が有理数を表しています.
緑色の部分が正の有理数,青色の部分が負の有理数になっているんですね.負÷負=負なので第三象限では必ず正の数になっています.また一つの直線上の点はすべて同じ有理数になっています.なので,1つの直線が1つの有理数を表しているという言い方もできますね.
また,分母が0ではありえませんので横軸のには有理数が存在しませんね.
わかりやすい画像を作りました.
格子点がそれぞれ有理数を表しています.
$1/1=2/2$のように同じ角度を持つ者同士は同じ有理数になります.これが約分です.
有理数には稠密という整数とは違う性質を持っていたり,実数とは違う濃度であったりと面白い性質をたくさん持っています.いずれ「より良い分数近似の話をしてみたいなぁと思っています.
どうぞよろしくお願いします.