Slide 1

Slide 1 text

数表現の万能ブロック 第30回日曜数学会 2024-06-29 岩淵夕希物智 (@butchi_y)

Slide 2

Slide 2 text

自己紹介 ● 言語・記数法の研究者 ● 物智数の考案者 ● Wolfram言語 (数式処理言語) のエヴァンジェリスト https://blog.yu.butchi.jp/

Slide 3

Slide 3 text

計算機で厳密値を表現するには? Wolfram言語の場合 1 + Sqrt[2] // FullForm ⇒ Times[Rational[1, 2], Plus[1, Power[2, Rational[1, 2]]]] (これが 1 + √2 の厳密値表現)

Slide 4

Slide 4 text

関数をひとつに Plus, Times, Powerなど関数をいくつか用意しなければならない → ひとつの関数(ブロック)でなんとかならないか??

Slide 5

Slide 5 text

ブロックの定義 f(a, b, c, d) = d + c ba = d + c * b ^ a a, b, c, dには整数(※)か入れ子でブロックが入る (※必ずしもすべての整数でなくてもよい) ブロックといっても実態はただの4変数関数 d c b a

Slide 6

Slide 6 text

整数: 2をつくる 2 = 1 + 1 ⇒ 1 + 1 * 1 ^ 1

Slide 7

Slide 7 text

有理数: 1/2をつくる 1/2 = 2 ^ -1 ⇒ 0 + 1 * 2 ^ -1

Slide 8

Slide 8 text

代数的数: √2 をつくる √2 = 2 ^ (1/2) ⇒ 0 + 1 * 2 ^ (0 + 1 * 2 ^ -1)

Slide 9

Slide 9 text

代数的数: 黄金比をつくる Φ = (1 + √5) / 2 = (1 + 5^(1/2)) * 2^(-1) ⇒ 0 + ((0 + 1 * 5 ^ (0 + 1 * 2 ^ -1)) + 1 * 1 ^ 1) * (0 + 1 * 2 ^ -1) ^ 1 複雑!!!

Slide 10

Slide 10 text

頑張って読んでみる Φ = (1 + √5) / 2 = (1 + 5 ^ (2 ^ -1)) * 2 ^ -1 読める!読めるぞ! ...? 0 a b 1 0 1 a b a b 1 1 = a×b = ab = a+b

Slide 11

Slide 11 text

原始的な関数 plus(x, y) = x + y * 1 ^ 1 or x + 1 * y ^ 1 times(x, y) = 0 + x * y ^ 1 power(x, y) = 0 + 1 * x ^ y これらを使って四則演算はなんでもできる

Slide 12

Slide 12 text

iが使えれば -1をでき、原子となる数は0, 1, iだけで済ますこともできる 例) 1 / 2 = 0 + 1 * (1 + 1 * 1 ^ 1) ^ (0 + i * i ^ 1)

Slide 13

Slide 13 text

eも使えれば 三角関数を定義できる(ついでにπも使えるとなおよし) cos(x) = (e^(- i x) + e^(i x)) / 2

Slide 14

Slide 14 text

なんでも入れられるわけじゃない 0 + 0 * 0 ^ 0 ⇒ 0^0を含んでいるので不定値 0 + 0 * 0 ^ i (虚数乗) ⇒ 0^iを含んでいるので不定値 0 + 0 * 0 ^ -1 (負数乗) ⇒ 0除算

Slide 15

Slide 15 text

課題 数の別表現が排除できない(一意性がない) もっと幅広く「関数」あるいは「特殊関数」を表せられるか(logとか) 頻出の数をより小さい組み合わせで作れるもっといいブロックを定義できるか

Slide 16

Slide 16 text

まとめ 万能ブロックによって代数的数相当の任意の数を表現可能に 定義した万能ブロックで4変数関数を2x2配列で可視化 複雑な式はブロックも複雑になってしまうが、慣れれば読めそう

Slide 17

Slide 17 text

ご静聴ありがとう ございました