fc2ブログ

中の人の徒然草495 零とサッカーに燃える

 FIFAワールドカップ熱いですよね。ここ最近は、サッカーに燃えています。日本が負けたのは残念ですが、積極的で熱く良いプレーをしていましたし、相手もよいチームなので、結果に納得しています。
 ところで、ブログに書くのを忘れていましたが、0に対してエラーを出さない新しい数を考えてみました。名前はまだ決めていないのですが、作用数とか、数の関数拡張と呼んでいます。この数は、数を集合としてとらえて、零を他の次元のものだと考えて生み出しました。
 基本となる考え方は、「個々の数もまた集合と写像である」というものです。この時、関数と数を別物として考えるのではなく、組で考えます。つまり、x * y = xy を2値関数の引数としてとらえるのではなく、「写像していく」として考えます。

 例 5 * 2 = 10
 +5という集合を*2という集合で写像する。その結果は+10という集合である。

 この考えを0に関する掛け算に適用すると・・・

 例 5 * 0 = *5
 +5という集合を*0という集合で写像する。これは0ではない。
何故ならば、5 * 0 の0と、4 * 0 の0は違う集合だからである。
同値とすると、対応関係がおかしくなるからである。
0を定値写像と考える方法もあるが、それではすべての要素が定値となり、使い道がない。
従って、*5などと区別するための記号を付けて、新しい集合とする必要がある。

 私はこんな具合に考えています。ところで、この新しい数は興味深い結果を生みます。それは、*5(零5?)などといった集合に対する、写像に興味深い性質が見られる点です。皆様も一緒に考えてみましょう。*5 に1を加算すれば何になるでしょうか?逆に1を減算すれば何になるでしょうか?

 *5 + 1 = *6 *5 - 1 = *4

理由:
 *5 は通常の5とは違う別の数である。
従って、通常の意味で加算と減算が成り立たないという考え方もできる。
しかしながら、そう考えると、数の抽象度が下がりが実用的なものでなくなる。
また、*5は掛け算と5の組であり、組が持つ要素を、一定のルールで操作できると考えるのが妥当である。
従って、普通に値を加算減算するのが妥当である。

 ここまでは普通の考え方ですよね?面白いのはここからです。加算と減算が許されるのであれば、その結果また0となって、他の数と掛けたらどうなるでしょうか?

 ( 5 * 0 ) - 5  ) * 5 = x 
 x = ( *5 - 5 ) * 5
  x = *0*5 

さて、xは何でしょうか?

 私はこの問題に直面したとき、基本に戻って、この数は「関数と値の組」だという点に注目しました。この考え方から言うと、組を拡張して、列と考えてもよいのではないでしょうか?つまり、( 零の数, 関数, 値 )となる数だと考えるのです。ですから、先ほどの例の答えは・・・ x = **5 だと私は考えています。記号の数を数えたら、零を掛けるというヘマをした回数がわかります。実に面白いです。ちなみに、割り算では*の数を減らします。そうすれば、*5 / 0 = 5 となり元に戻せるようになります。
 ところで、この考え方は新しい疑問を生みます。この数の幾何学的表現はどうなるのでしょうか?私は少し悩みましたが、直感で「3次元デカルト座標にしたら?」と思いました。つまり、先ほどと同様に、この数を列もしくは行列と考えて、3次元のものだと考えるのです。これにより私の中では、0は不可思議な無と無限ではなく、次元が変わるだけの存在となりました。
 少し詳しく言うと、0を掛けたときの値は「上の座標」。0を割った時の数は「下の座標」だとイメージしています。デカルト座標は普通に考えると2次元的なものですが、デカルト座標を1枚の紙として考えると、複数のページがあってもよいと思います。もしくは立方体と考えると合点がいきます。高さという概念を加えるのは、4次元(奥行き、幅、高さ、時間)に生きる私たちとしては普通の感覚なのではないでしょうか?
 通常の計算で0が出たらエラーになるのは、「次元が違う話になるから」だと考えると合点がいきます。私は思考停止が嫌いなので、「0で割ったら無限大だからエラーなんだよ」だとか「0をかけたら終わりなんだよ」という投げやりな態度ではなくではなく、「0を掛けたり割ったりしたら次元が変わるんだよ」の方が良いと思います。
 おそらく、数学者は私の考えが気に入らないでしょうが、私としては、たかが0を使っただけでエラーが出る、既存の仕様の醜さの方が気になります。0を現状のように扱うと、微分積分にも支障が生じており、科学にも影響があります。そんな負の影響を与えるぐらいならば、仕様を直したほうが断然よいです。
 きっと、私がシステム屋だからそう考えるのでしょう。お客様に対して、「0が出たら無理」などといえるはずがありません。システム屋のお仕事は、「無理を可能に」、「矛盾から答えを出す」、「不可能を可能にする」、「解決策を必ず出す」といった暗黙のルールがあります。そういったことから、駄目なものは駄目ではなく、無から有を生み出すのが私のお仕事であり、私の思想なのです。
 それにしても、零というオブジェクトは奥が深いです。今後は代数学的にも分析してみたいと思います。
スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター