はじめに
$$ Eml(x, y) = exp(x) - ln(y) $$
という関数があります。これは、$exp(x)$や、$sin(x)$、$e$、そして$\pi$などいろいろな関数や定数を表すことができます。
さて、実際に関数を作ってみたいわけですが、論文にはいくつかの関数の例はあるものの、示されていない関数ももちろんあるわけです。
eml関数を色々いじって、いろいろな関数を作ってみたので、見ていきましょう。
ただ、探索して最短のものを求めたわけじゃないので、式は肥大化してしまいました。
どうやって求めたか
もとめたプログラムはここに書いています。
順番に関数をemlで定義して、実際の数値でテストしました。
求めた関数であっていたようならそれを展開した結果を求めます。
具体的な関数
e
Eml(1, 1)
exp(x)
Eml(x, 1)
ln(x)
Eml(1, Eml(Eml(1, 1), x))
zero
Eml(1, Eml(Eml(1, 1), 1))
minus(x, y) = x - y
Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(x, 1))
neg(x) = -x
Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(x, 1))
plus(x, y) = x + y
Eml(Eml(1, Eml(Eml(1, 1), x)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(y, 1)), 1))
mul(x, y) = x * y
Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), x)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), y)), 1)), 1)), 1)
inv(x) = 1/x
Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), x)), 1)), 1)
pow(x, y) = x^y
Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), y)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), x)))), 1)), 1)), 1), 1)
-1
Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1))
div(x, y) = x / y
Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), x)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), y)), 1)), 1))), 1)), 1)), 1)
sqrt(x)
Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), x)))), 1)), 1)), 1), 1)
i
Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)))))), 1)), 1)), 1), 1)
pi
Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)))))), 1)), 1)), 1), 1))), 1)), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)))))), 1)), 1)), 1)
cosh(x)
Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(x, 1))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(x, 1)), 1), 1)), 1)))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1)
sinh(x)
Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(x, 1))), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(x, 1)), 1), 1)))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1)
cos(x)
Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)))))), 1)), 1)), 1), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), x)), 1)), 1)), 1), 1))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)))))), 1)), 1)), 1), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), x)), 1)), 1)), 1), 1)), 1), 1)), 1)))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1)
sin(x)
Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)))))), 1)), 1)), 1), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), x)), 1)), 1)), 1), 1))), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)))))), 1)), 1)), 1), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), x)), 1)), 1)), 1), 1)), 1), 1)))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), 1)), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)), 1)))), 1)), 1))), 1)), 1)), 1))))), Eml(Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), Eml(Eml(1, Eml(Eml(1, 1), Eml(1, Eml(Eml(1, 1), 1)))), Eml(1, 1)))))), 1)), 1)), 1), 1))), 1)), 1))), 1)), 1)), 1)
感想
絶対もっと簡単にできるとおもいます。
色々試すことができそうなので、やってみたい。
lnやiなどをつくるのは部品化した関数を組み合わせてパズルをしているみたいで結構楽しかったです。