累乗
exponentiation
指数法則: $ a^{x+y} = a^xa^y
指数法則が成り立つことを確認する
繰り返し2乗法
対数
指数関数: $ f(x) = e^x
冪関数: $ f(x) = x^n
冪: べき: power
冪
対数関数: $ f(x) = \log x
@ysmemoirs: 《問》
(0) 0⁰の値を0 と考えると都合のよい場面の例をあげよ。
(1) 0⁰の値を1と考えると都合のよい場面の例をあげよ。
(2) 0⁰の値を2 と考えると都合のよい場面の例をあげよ。
※(2)の例は私もいま反射的には思い浮かんでいません
指数関数の指数部分が有理数や無理数でも任意の精度で値を定められる
指数部分を近似すればよい
実数が有理数の多項式で近似できることを認めれば自明?あんも.icon
打ち切り表示で暗黙に認めている
知られた値の積にすれば簡単
$ 2^{0.625} = 2^\tfrac{1}{2} \times 2^\tfrac{1}{8}
$ 2^(1/2) * 2^(1/8)
1.542210825407941
$ 2^{0.8\dot{3}} = 2^{\frac{1}{12}}
$ \tfrac{1}{12} を数表を用いて2の冪の和で表現する:
大きいものから足してみて$ \tfrac{1}{12} を超えないように選ぶ
数表の値はどんどん小さくなっていくのでいい感じに選べる
$ \frac{1}{2^4} + \frac{1}{2^6} + \frac{1}{2^8} + \frac{1}{2^{10}} + \frac{1}{2^{12}} + \frac{1}{2^{14}} + \frac{1}{2^{16}} = \frac{5461}{65536}
真値との誤差:
$ 1/12 - 5461/65536
5.086263020828707e-6
$ 2^{0.8\dot{3}} \approx 2^{\left(\frac{1}{2^4} + \frac{1}{2^6} + \frac{1}{2^8} + \frac{1}{2^{10}} + \frac{1}{2^{12}} + \frac{1}{2^{14}} + \frac{1}{2^{16}}\right)}
$ [2^(1/2^n) for n in 4, 6, 8, 10, 12, 14, 16 ] |> prod
1.0594593591981512
繰り返し平方根法?あんも.icon
配列から逆向きに取り出すあんも.icon
code:jl
function power_real(n, x; depth=16)
integer_part = floor(Int, x)
fractional_part = x - integer_part
bits = digits(round(Int, fractional_part * 2^depth), base=2, pad=depth)
p = sqrt(n)
acc = one(n)
for b in reverse(bits)
if b == 1
acc *= p
end
p = sqrt(p)
end
return n^integer_part * acc
end