このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

「円周率は3」についてキッチリ考えてみる -- EPペアの例として

EPペア(embedding-projection pair)って概念があります。これは役に立ちます。が、あまり知られてないようです。円周率を素材に具体例を1つ紹介しましょう。小数(小数部を持つ数)の切り捨ての話です。

内容:

「円周率は3」はひどい

小学校で習う円周率が3からまた3.14に戻されるようです。あー、よかった。円周率=3 はいくらなんでもひどいよね。円周率は整数、ピッタリ3なんだと思い込んだ子もいるんじゃないでしょうか。3.14にしたところで、ピッタリ3.14と思い込む子はいるでしょうが、「整数じゃない」という認識が生まれるだけマシ。

よくわからない桁を疑問符「?」で書いて、「円周率=3.???...」とか「円周率=3.14???...」とでもするのがより正確です。とにかくピッタリだと思われちゃ困る。

このエントリーでこれから、ピッタリ3なのか、3.???... と小数部が不明な状態なのか、これをキッチリと区別する話をします。最後に、EPペアの一般的な話を少しします。

正確な整数と不正確な小数

正確な整数とは、普通の数学的な整数のことです。正確な整数の全体を習慣に従いZと書きます。Z = {..., -1, 0, 1, 2, ...}。

整数部と小数点、それと小数部から構成される数を単に小数と呼びます。小数点と小数部を必須とします。ただし、普通の小数と少し違って、記号⊥(ボトム)が入ります。3.⊥, 3.1⊥, 3.14⊥ とか。もう少し正確に言うと、小数部の桁には記号⊥を使ってもかまいません。ただし、一回⊥が出現すると、その後はすべて⊥なのだと解釈します。3.1⊥ は、実際には 3.1⊥⊥⊥... と無限に⊥が並ぶのです。3.⊥4⊥⊥... とかはダメです、⊥の後にもはや普通の数字('0'から'9')は出現できません*1

いま定義した⊥を含む小数を不正確な小数と呼びましょう。⊥は「よくわからない」という意味です。3.⊥ は、3までは分かっているが、小数点以下は不明ということです。不正確な小数の全体をDとします。Dにおける加減乗除は、普通の実数(正確な実数)とは違い興味深いですが、今は加減乗除の話はしません。

不正確な小数の情報順序

Dのなかに情報順序を導入しましょう。これは数の大小順序とは全然違いますし、大小とは何の関係もありません。xとyを不正確な小数だとして、x⊆y は、「xよりyのほうが正確」と読みます。具体例は、3.⊥⊆3.1⊥、3.1⊥⊆3.14⊥ など。xで最初に⊥が現れた位置(小数第何位か)をn、yで最初に⊥が現れた位置をmとして、x⊆yの意味を記述すると次のようになります。

  1. n≦m つまり、yのほうが小数部の有効な桁が多い。
  2. 小数第n位以下を切り落としたとき、xとyを切り落とした2つの有限小数は等しい。

要するに、yのほうが先のほうまで普通の数が並んでいるってことです。不正確な小数を実数の近似値と考えれば「xよりyのほうが正確」の意味は直感的に理解できるでしょう。

次のことは、定義に照らして考えてみればほぼ明らかです(確認してください)。

  1. x⊆x
  2. x⊆y かつ y⊆z ならば x⊆z
  3. x⊆y かつ y⊆x ならば x = y

つまり、不正確な小数の全体Dは、情報順序⊆に関して順序集合です。

不正確化と切り捨て

正確な整数3(Zの元である3)は、ピッタリ3のことだと解釈します。それに対して不正確な小数3.⊥は、整数部分が3であることは保証するが、小数点以下はなんだかわかんない数を表します。「円周率の3」は、正確な整数3ではなくて不正確な小数3.⊥ですね。3 → 3.⊥ のような対応を不正確化(inaccurize)と呼びましょう。不正確化は ZD という写像で、単射になっています。

さて、不正確化の逆を考えましょう。正確化? うーん、それは微妙に意味が違う気がするので、切り捨て(truncation)とします。切り捨ては、不正確な小数の整数部分だけを取り出す写像です。例えば、3.⊥を切り捨てると3(正確な3)です。3.1⊥でも3.14⊥でも、切り捨てればすべて3です。どんな正確な整数も、なんらかの不正確な小数の切り捨てとして得られるので、切り捨て DZ全射です。

埋め込みと引き込み(レトラクション)

正確な整数nの不正確化を e(n) 、不正確な小数xの切り捨てを r(x) とします。なぜ文字eとrを使ったか? って。それは、embeddingとretractionからです。embeddingを埋め込み、retractionを引き込みと呼ぶことにします(以前のエントリーでは「レトラクション」とカタカナで書いていました)。

eとrに次の関係があるとき、一般的に「埋め込みと引き込み」と呼ぶのです。

  • r(e(n)) = n

つまり、埋め込んで引き込むと元に戻るのです。今の例では、不正確化して切り捨てたらもとに戻ります。さらに、次の性質もあります。

  • e(r(x))⊆x

引き込んで埋め込むと、順序⊆に関してもとより減少するのです。ここの「減少」は大小関係ではなくて情報順序、つまり正確さが減少します。今の例では、小数部をいったん切り捨てているので、情報が失われるのです。しかし大事なことは、e(r(x)) と x が無関係ではなくて、e(r(x)) が x の劣化になっていることです。

ちなみに、埋め込みと引き込みという概念はもともと図形的なものだったようです。図形的なイメージは「レトラクションの起源(かな?)」に書いてあります。

EPペア

引き込み(レトラクション)は、射影(プロジェクション)とも呼ばれます。僕は、「射影」を別な意味で使うので「引き込み」のほうがいいと思うのですが、射影のほうが多数派です(たぶん)。それで、embedding and retraction の代わりに、embedding and projection ともいい、埋め込み・引き込みのペアをEPペアと呼びます。レトラクション・ペアと呼ぶこともあります。

EPペアは、計算科学では「自然な型変換(格上げ)」と「無理矢理な型変換(格下げ)」のペアのような形でよく登場します。再帰や極限を扱うときにEPペアは便利です。不正確化と切り捨てはEPペアの一例になっていたわけですね。

意外な文脈でEPペアに出会って驚くことがあります。最近、線形代数にEPペアを使ったら、奇妙なくらいうまくいきました。実はその話を書きたかったのですが、EPペアの具体例が1つくらいないとイメージ湧かないだろうな、と、このエントリーで実例を提供したのです。

関連エントリー

*1:雑音で途中の桁が壊れてしまった状態などを表すには、3.⊥4⊥のような値も使います。