•
対数の発見
• つまり を底とする
✓
1
1
107
◆107
• 指数部 は少数になる
x
107
✓
1
1
107
◆107
!
x
107
0 1 2 3 4
0 0.0000001 0.0000002 0.0000003 0.0000004
0 … … … …
x
x
107
✓
1
1
107
◆107
!
x
107
Slide 27
Slide 27 text
の発見
e
Slide 28
Slide 28 text
対数関数と指数関数
• レオンハルト・オイラー
• ネイピアの時代から約2世紀後
• 指数関数とその逆関数である対数関数を定義
•
y = ax ()
x = loga y
Slide 29
Slide 29 text
対数関数と指数関数
• レオンハルト・オイラー
logを微分したる
Slide 30
Slide 30 text
• 微分の定義
対数関数と指数関数
lim
h!0
f
(
x
+
h
)
f
(
x
)
h
x
+
h
x
f
(
x
)
f
(
x
+
h
)
h
f
(
x
+
h
)
f
(
x
)
Slide 31
Slide 31 text
• logの微分
対数関数と指数関数
lim
h!0
loga(x + h) loga(x)
h
= lim
h!0
1
h
loga
✓
x + h
x
◆
= lim
h!0
1
h
loga
✓
1 +
h
x
◆
Slide 32
Slide 32 text
対数関数と指数関数
lim
h!0
loga(x + h) loga(x)
h
• logの微分
= lim
h!0
1
h
loga
✓
x + h
x
◆
= lim
h!0
1
h
loga
✓
1 +
h
x
◆
= lim
n!1
n
x
loga
✓
1 +
1
n
◆
h
x
=
1
n
と置く
Slide 33
Slide 33 text
対数関数と指数関数
lim
h!0
loga(x + h) loga(x)
h
• logの微分
= lim
h!0
1
h
loga
✓
x + h
x
◆
= lim
h!0
1
h
loga
✓
1 +
h
x
◆
= lim
n!1
n
x
loga
✓
1 +
1
n
◆
h
x
=
1
n
と置く
=
1
x
lim
n!1 loga
✓
1 +
1
n
◆n
=
1
x
loga lim
n!1
✓
1 +
1
n
◆n
Slide 34
Slide 34 text
対数関数と指数関数
lim
h!0
loga(x + h) loga(x)
h
• logの微分
= lim
n!1
n
x
loga
✓
1 +
1
n
◆
h
x
=
1
n
と置く
=
1
x
lim
n!1 loga
✓
1 +
1
n
◆n
=
1
x
loga lim
n!1
✓
1 +
1
n
◆n
= lim
h!0
1
h
loga
✓
1 +
h
x
◆
= lim
h!0
1
h
loga
✓
x + h
x
◆
e
Slide 35
Slide 35 text
•
対数関数と指数関数
lim
n
!1
⇣
1 + x
n
⌘
n =
ex
✓
1
1
107
◆107
⇡ e 1
lim
n!1
✓
1 +
1
n
◆n
= e
•
• ← ネイピアが使った底
Slide 36
Slide 36 text
数学関数の実装
Slide 37
Slide 37 text
指数関数の実装
• を展開してみる
ex
ex = lim
n
!1
⇣
1 + x
n
⌘
n
= lim
n!1
⇣
1 + x
n
⌘ ⇣
1 + x
n
⌘ ⇣
1 + x
n
⌘
· · ·
= lim
n!1
1n + nC11n 1
⇣
x
n
⌘1
+ nC21n 2
⇣
x
n
⌘2
· · ·
= lim
n!1
1 + nC1
1
n
x
+ nC2
1
n
2 x
2 · · ·
Slide 38
Slide 38 text
• を展開してみる
ex
ex = lim
n
!1
⇣
1 + x
n
⌘
n
= lim
n!1
⇣
1 + x
n
⌘ ⇣
1 + x
n
⌘ ⇣
1 + x
n
⌘
· · ·
= lim
n!1
1n + nC11n 1
⇣
x
n
⌘1
+ nC21n 2
⇣
x
n
⌘2
· · ·
= lim
n!1
1 + nC1
1
n
x
+ nC2
1
n
2 x
2 · · ·
= 1 + x
1!
+ x
2
2!
· · ·
✓
lim
n!1
nCk
1
nk
=
1
k!
◆
指数関数の実装
Slide 39
Slide 39 text
•
• の周りでテイラー展開した結果と同じ
• テイラー展開
x
= 0
ex = 1 + x
1!
+ x
2
2!
+ · · ·
f
(
x
) =
f
(
a
) + f
0(
a
)
1!
(
x a
) + f
00(
a
)
2!
(
x a
)2 + · · ·
指数関数の実装
• この形であれば実装できそう
• もちろん無限回計算は不可能。途中で打ち切る
Slide 40
Slide 40 text
• ただし の範囲でしか成り立たない
• 使えない・・・?
• もテイラー展開すれば実装できそう
• ただし 周りではテイラー展開できない
• 代わりに を 周りで展開する
対数関数の実装
x
= 0
log x
log(x + 1) x
= 0
log(x + 1) = x
x
2
2
+
x
3
3
x
4
4
+
· · ·
1
< x <
1
Slide 41
Slide 41 text
• は浮動小数点数の表現
• 任意の実数 における と を求めるのは簡単
• 例えば なら
• という風に分解する
• と分解できる
対数関数の実装
log x = log(c
·
2
n
) = log c + n log 2
x
=
c
· 2n (0
< c <
2)
予め計算して定数として保持しておける
log 2 = 0
.
6931
· · ·
なのでテイラー展開可能
0 < c < 2
c · 2n
x
c n
x
= 10 c = 1.25, n = 3
Slide 42
Slide 42 text
べき乗関数の実装
• もテイラー展開?
• 実は と表せるので
• 既に と は実装済みなので計算可能
ab
ex
log x
ab = eb
log
a
Slide 43
Slide 43 text
• log(x) と置いて
数学関数まとめ
• exp(x)
ex = 1 + x
1!
+ x
2
2!
+ · · ·
log(x + 1) = x
x
2
2
+
x
3
3
x
4
4
+
· · ·
x
=
c
· 2n
を使う
を使う
• pow(a, b) ab = eb
log
a を使う
log 2 = 0
.
6931
· · · と