超実数(Hyperreal Number)について調べていると、超フィルターの説明があってそこに入り込んだまま抜け出せず、結局超実数がなんなのかわかったようなわからない状態になります。
そこで、超実数についての概略を超簡単に説明します。
概略というのは、子細な部分には深入りせず、肝の部分だけを抜き出ししているという意味です。
より詳しく数学的に超実数の事を知りたければ、下記サイトにある資料の説明が超わかりやすいです。
超準解析入門 -超実数と無限大の数学- 磯野優介∗ 数学入門公開講座
平成 29 年 7 月 31 日~8 月 3 日
私も、この資料で学習しました。
https://www.kurims.kyoto-u.ac.jp/~kenkyubu/kokai-koza/H29-isono.pdf
This work was supported by the Research Institute for Mathematical Sciences, an International Joint Usage/Research Center located in Kyoto University.
超実数の例
まず、超実数をどのように表現するかです。
ここがわかれば、かなりイメージが付いてきます。
超実数は、ズバリ実数の数列(略して実数列)で表現されます。
ここでは数列を上記のテキストに習って、小括弧でくくる表現を採用します。
例えば一般項が、\(a_n=n^2\)で表される数列は
\((a_n)_n\)と書きます。
※数列は、よく中括弧でくくる表現\(\{a_n\}\)を使う事が多いのですが、ここではテキストに従って\((a_n)_n\)を使います。括弧の外側に\(n\)が付きます。
この数列は、\(a_1=1,a_2=4,a_3=9,\cdots\)ですが、これを
\((1,4,9,16,\cdots)\)とも書きます。
α、βを超実数とすると、具体的には、
\(α=(1,2,3,\cdots)\)
\(β=(0,1,0,1,\cdots)\)
こんな感じで表す事になります。
超実数の演算
超実数は四則演算ができます。
どんなふうに計算するのかというと、数列の各項の四則演算で計算します。
\(α=(a_n),β=(b_n)\)とすると、
\(α+β=(a_n+b_n)_n\)
\(α-β=(a_n-b_n)_n\)
\(α\cdot β=(a_n \cdot b_n)_n\)
\(α/β=(a_n/b_n)_n\)
普通ですね。
ただし、ここで問題が発生します。
数列の各項を四則演算するだけでは、数として使いにくもののとなります。
例えば、その代表例ですが、
\((1,0,1,0,\cdots)\)と\((0,1,0,1,\cdots)\)を掛けると\((0,0,0,0,\cdots)\)になります。
0でない(と思われる)ものを掛けて0になるのは、普通の数では起こりえませんね。
ほかにも数としていろいろな問題が発生します。
「どのような問題が発生するのか?」、それを考えることは超実数の理解を深めるためにものすごく役に立ちます。
これらの問題を超実数がどのようにして解決(回避)しているのか、よりよくわかるようになるからです。
超実数では、それらを超フィルターという道具を使って解決します。
超フィルターの役割
超フィルターの役割は、異なる数列であっても同じとみなす(同値類を作る)ときの条件として使います。
例えば、\((c_n)_n=(1,1,1,1,1,\cdots)\)という数列と\((d_n)_n=(1,0,1,1,1,\cdots)\)は、第2項を除けば同じ数列です。このような二つの数列は数列を超実数としてみるときには、同一視します。
異なる項が有限個の場合は、同じとみなすのですが、異なる項が無限個ある場合があります。
先に出した\(β=(0,1,0,1,\cdots)\)と\((c_n)_n\)のような場合です。
このような場合には、超フィルターの出番です。超フィルターの元を使って同かどうかを判定します。
具体的には、同じ項の項番からなる集合を作り、その集合が超フィルターの元であるかどうかで判定します。
βと\((c_n)_n\)の場合ですと、同じ項の集合は、\(\{2,4,6,8,\cdots\}\)となりますから、もしこの集合が超フィルターの元であれば、βと\((c_n)_n\)は同じとみなします。
超フィルターとは、自然数全体の集合Nの「部分集合」からなる集合(集合の集合)です。
超フィルターの元は何個もあり、\(\{2,4,6,8,\cdots\}\)を含む超フィルターもあれば、\(\{2,4,6,8,\cdots\}\)を含まない超フィルターも存在します。
ですから、超実数を考えるときには、暗に超フィルターが一つ定まっていなければなりません。
超フィルターによって、二つの数列が同じであったり(同じ同値類に属す)、異なるもの(別の同値類に属す)であったりと判定が分かれます。
ただ、超フィルターがどんな集合を含んでいるのかどうかは、知らなくても超実数の計算はできます。
適当に選んだ数列を超実数とみたてて超実数の演算を行っても間違いはありません。
βのような変な数列からなる超実数(0なのか1なのかはっきりしない超実数)を持ち出さなければよいわけです。
無限大に発散する数列で表される超実数\(ω=(1,2,3,4,\cdots)\)と0に収束する数列で表される超実数\(ε=(1,1/2,1/3,1/4,\cdots)\)を掛けると、超実数\((1,1,1,1,\cdots)\)になると計算できるのです。
このように計算しても超実数の演算として問題がないことが示されているからです。
ぶっちゃけていうと、超実数は実数列です。
実数列を超実数とみなして、各項毎に計算してよいのです。
ちなみに、\((0,0,0,\cdots)\)と先ほどの超実数\(ε=(1,1/2,1/3,1/4,\cdots)\)はすべての項が異なる数列ですから超フィルターがどうであっても同じとはみなされません。すなわち\(ε\)は0と等しくなる事はありません。実はこの超実数\(ε\)こそが無限小の代表格です。
また、超実数\(ω\)は、無限大の代表格となっています。
フィルターの定義と例
話が前後しますが、フィルターの定義について書いておきます。
フィルター
フィルターは、自然数Nの「部分集合の集まり」です。
Fがフィルターであるとは。
- Fは空集合ではない。
- A,B∊FならA∩B∊Fである。
- A∊FかつA⊂B⊂Nならば、B∊Fである。
- Fは空集合を含まない。
フィルターの例として次の二つの例は具体的です。
一つ目は、単項フィルターと呼ばれます(超実数では使いません)。
ある自然数nを含むNの部分集合をすべて集めた集合になります。
すなわち集合の記号でかくと
\(\{A|AはNの部分集合、n∊A\}\)
もう一つは、フレシェフィルターと呼ばれるものです(超実数で使います)。
集合の記号でかくと
\(\{A|AはNの部分集合、Aの補集合は有限集合\}\)
となります。
超フィルター
フィルターは集合ですから、フィルターとフィルターには包含関係があります。
次の条件を満たすフィルターFは超フィルターと呼びます。
他のフィルターF’がFを含んでいるとしたら、F=F’である。
つまりFより大きなフィルターが存在しないとき、そのフィルターFを超フィルターと呼びます。
超実数で使用する超フィルターは、フレシェフィルターを含む超フィルターを使います。
フレシェフィルターを含む超フィルターは何個もありますが、そのなかの一つの超フィルターを選ぶことで超実数が定義されます。
超フィルターの存在とか、超実数の演算がWell-defineなのかということを気にせず超実数の計算して超実数に慣れましょう。
分数計算ドリルと同じで、繰り返しドリル計算しているうちに、分数とはなにかだんだんわかってきたように、超実数の計算を繰り返すことで超実数のことがだんだんわかってきます。
フィルターの元(集合)が大きい、小さい
Fを超フィルターとします。
超フィルターの元は(部分)集合なので、「集合」という用語が乱用されてしまいます。ここは注意してください。
Nの部分集合AがFの元の場合、「Aが大きい」といいます。Aの補集合がFに入っている場合は、「Aが小さい」と言います。Fは集合の集合なので「元(要素)である」、「元(要素)でない」、「含む」、「含まない」、「入る」、「入らない」等と用語の混乱がありますが、こういった言い回しを使うとわかりやすいかもしれません。
なお、Fが超フィルターの場合は、AがFに入らないのとAの補集合がFに入るのは同じ意味になるので、Nの部分集合はFによって「大きい」か「小さい」かのどちらか一方になります。
例えば、「『自然数からなる有限集合』は、小さい」という言い方をします。