はてなキーワード: 単位元とは
1+1が2にも3にも4にもなるって脳筋の陽キャがよく言うけど、
ここで謎の演算子「+」を持つモノイドを考えてみたい。
まず、前提として、1,2,3,...はモノイドの元 α1,α2,α3,...の簡易記法とする。
モノイドの単位元はα0とする。
α_n+1 = SUCC(α_n)と表すことができることとする。
つまり
α2 = SUCC(α1) α3 = SUCC(α2) = SUCC(SUCC(α1)) ...
である。
α0 = α0 + α0 α1 = α1 + α0 α2 = α2 + α0 ...
である。
α1 + α1 = α2 = SUCC(α1) = α3 = SUCC(SUCC(α1)) = α4 = SUCC(SUCC(SUCC(α1))) ...
となる。
これを満たすことができる関数SUCCは幾つか考えられるが
その1:
defun SUCC(x) = α0
その2:
defun SUCC(x) = if (x equals to α0) then α0 else x
等とすることができる。
その1は 1bit の排他的論理和
α0 + α0 = α0 α0 + α1 = α1 α1 + α0 = α1 α1 + α1 = α2 = SUCC(α1) = α0
その2は 1bit の論理和
α0 + α0 = α0 α0 + α1 = α1 α1 + α0 = α1 α1 + α1 = α2 = SUCC(α1) = α1
である。
脳筋って頭いいんだね
趣旨には賛成だが細部にこだわってみるぞ
■1+1
どういう構造の上で議論してるかによるんじゃない? モノイド({0,1,∞}, +) で0が単位元、1+1=1+∞=∞+1=∞+∞=∞、という構造とか。
むしろ理系的というか工学的感覚では∞になる→発散する→手に負えない、ってニュアンスを感じるのだけど、そっちの方がずれてるかもしれない。
■それ以上でもそれ以下でもない
それは空集合です
定義域は全順序集合ではない、と言っているのかもしれないぞ。
例えばIEEE754の数値演算では任意のAに対して (not (X >= A)) and (not (A >= X)) を満たす値Xが存在する。それはNaNだ。
そもそも空間に内積が入ってるというのは、内積から自然に誘導されるノルムや距離や位相がある空間だということだ。
ノルム、距離、位相だけでは記述できない、内積によって規定される構造というのは、角度であり特に重要なのは直交という概念だね。
直交性というのは、その(線形)空間の中である意味「お互いに独立」な要素を決める。
n次元ユークリッド空間なら、n本の直交なベクトルを定義することができて、空間中の点はそれぞれのベクトルの方向に、「他のベクトルの方向には影響を与えず」独立に動かすことができる。
逆に、平行なベクトル同士では、互いに完全に影響を与え合う形でしか動かすことができない。平行性も内積によって定義される性質であり、これを従属と言う。
n本以下の平行でない適当なベクトルの組を持ってきたときに、内積を使って直交したベクトルの組を得ることもできる。グラムシュミットの直交化とかで。
空間中の直交なベクトルの組を見出すということは、空間の性質をかなり詳しく知るということになっていて、そのための演算として空間に定義された内積は超重要。
ベクトルに関する操作は、和、スカラー倍、ノルム、そして内積くらいしか高校では使っていない。内積という操作を禁止すると何ができなくなるかを考えてみるといい。
ちなみに内積は標準内積と呼ばれる高校で習う定義に限るものではなくて、内積の公理を満たす演算ならなんでもいい。
これは逆に空間にどういう構造を入れるか?というユーザの意思や物理的要請から決まるもの。内積の定義が各点で変わるような空間もあって、これは空間が曲がっているということに対応する。
ユークリッド空間みたいに平坦で内積が一様な空間というのは特別な空間ということだな。
また、線形空間という概念は実はユークリッド空間に限ったものでもなくて、空間の元に対して和やスカラー倍、単位元や逆元が定義されていて、いくつかの性質を満たせばよい。
これは例えば関数をたくさん集めてきた関数空間についても成り立つことがあって、そこに内積を定義することでユークリッド空間のベクトルの議論と完全に同じ話をすることができる。
「お手並み拝見」とかキモいこと言われた増田だけど、さすがに「虚数は便宜上開発された」というのはやや言い過ぎな気がする。
数学で重要なのは構造やルールそのものであって、「二乗して-1になる数」とかいう具体的な実像はそれらから必要不可欠的に導かれたものに過ぎない。
「二乗して-1になる数を考えてみよう!」なんて全く数学的にロジカルな思考とは言えないと思うね。
関数には定義域や値域というものがあって、それは集合である。sqrtという関数を考えると、普通の初等関数と同じように定義域と値域をRとするとどうもうまくいかなさそうである。
定義域をRとするとR-のときに少なくともR上には値を持たないようだからだ(全射とか単射とかの概念もやっとくといいかもな)。
でも多くの関数と同じように、sqrtもR上で定義できる方法はないのか?
このくらいまでは持っていってようやく考えさせるフェーズに入るべきだろう。
もちろん答えは「値域をRからCに拡張する」であるわけだが、ではCという構造をwell-definedに決めるためにはどういうものが必要か?という話に当然なるわけで、それを表記的にきれいに表現できるのが虚数単位iという数(Cの元)の導入なわけだ。
i自体はC上の普通の演算に対してゼロ元や単位元になっているわけでもなく、別に何ら特別な性質を持った値ではない。いきなり「二乗して-1になる数を考えよう!」とか言い出すことのセンスのなさはここにある。
もちろん、「値域を拡張する」というアイデアについて考える段階では、「虚数単位という1パラメータを考えればいい」かどうかも明らかでないわけで、その過程でクォータニオンや外積代数みたいな構造にまで思い至る奴もいるかもしれない。
それがロジカルってことだろ。「二乗して-1になる数があるぞー!それになんの意味があるのかとか考えるな!とにかくそれを探し出せ!」とかいうのは全然ロジカルじゃない。ただのクイズ。
f(x) = xという関数にx = 1を与えてもそれはx = 1 - δ, 1 + δ(δは無限小)に対してδの定義から当たり前ながら連続だと言える。
しかしf(x) = x^∞ならどうだろうか。x = 1の場合、1は乗法の単位元であり何乗しても1なのだからf(1) = 1。
x = 1 - δは1未満の値であるから、無限回その数を掛け合わせると0になる。よってf(1 - δ) = 0。
対してx = 1 + δの場合、これは1を超える値であるから無限回その数を掛け合わせると∞に発散する。よってf(1 + δ) = ∞。
有限のべき乗では引数の1近傍は関数の値も連続であったが、一度無限という超越性を許容すると引数が連続であっても関数の示す値は連続でなくなる。
今回の問題は無限の性質を少しでも知っていれば小学生でも分かる程度のものだったが、考える機会がなければ中々気付かないものだ。他にもこの様なシンプルで非直感的な例は幾らでもある。
他愛も無い、下らない事だと切り捨てないで、合理性に基づいて徹底的に追求してみるのも悪くない。こういう事を考える余裕は万人が享受されるべきものだと感じる。