指数関数と対数関数#

指数関数#

(定義)指数関数

aをある定数として、

y=ax

を、a とする 指数関数(exponential function)という。

ネイピア数#

以下で定義される定数eをネイピア数という

limn(1+1n)n=e=2.7182818

(定義)自然指数関数

eを底とする指数関数

y=ex

指数関数(the exponential function)あるいは明示的に 自然指数関数という。

(英語だとtheがつくかどうかで底の違いを表現する。日本語だとややこしいが、標準的な指数関数はeを底とする指数関数である)

Hide code cell source
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-2, 2, 100)
y = np.array([np.exp(xi) for xi in x])

fig, ax = plt.subplots(figsize=[4, 2])
ax.plot(x, y, label=r"$\exp(x)$")
ax.set(xlabel="x", ylabel="y")
ax.axhline(color="gray")
ax.axvline(color="gray")
ax.legend()
fig.show()
../../../_images/ae8d2af7418c80a5127b4d203935a81734ef908379718d40cb6a1fac2edffdf3.png

x=0のとき、e0=1

x=1のとき、e1=e

x=1のとき、e1=1e=0.3678

(定義)自然指数関数

指数関数にはいくつかの定義があり、オイラーによって最初に定義されたものは以下のものになる

exp(x)=limn(1+xn)n

マクローリン級数によって冪級数の形にした

exp(x)=n=0xnn!=1+x+x22!+x33!+x44!+

の定義もある

(1+xn)nを有限の範囲でいくつか試すと以下のようになる

x = 1
for n in range(1, 6):
    e = (1 + (x / n))**n
    print(f"{n=}, {e=:.3f}")
n=1, e=2.000
n=2, e=2.250
n=3, e=2.370
n=4, e=2.441
n=5, e=2.488
Hide code cell source
import numpy as np
import matplotlib.pyplot as plt

N = np.linspace(1, 100, 101)
E = [(1 + (x / n))**n for n in N]

fig, ax = plt.subplots(figsize=[4, 2])
ax.plot(N, E)
ax.set(
    xlabel="n",
    ylabel=r"$(1 + \frac{x}{n})^n$",
    title=r"$(1 + \frac{x}{n})^n, x=1$",
    yticks=[2, np.exp(1),3],
)
ax.axhline(np.exp(1), color="gray")
ax.axvline(color="gray")
fig.show()
../../../_images/0a0dd6aea1b712599ee80f30eb02bd899f95858ca390c590102ef88f76f635f1.png

指数(関数)の基本的性質(指数法則)#

指数法則

axay=ax+y(ax)y=axyaxay=axy(ab)x=axbx
例:x1 は?

x1xを乗じればx1×x1=x1+1=x0=1となる。

なのでx1=1xとなる。一般にxnも同様。

例:x12 は?

x12x12を乗じればx12×x12=x12+12=xとなる。

なのでx12=x

対数関数#

指数関数の逆関数を 対数関数 (logarithmic function)という。

ay=xのとき、「ya とする x の対数」といい

y=logax

と表す。

(定義)対数

a>0,a1,M>0について

am=Mm=logaM
Hide code cell source
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0.1, 5, 100)
y = np.array([np.log(xi) for xi in x])

fig, ax = plt.subplots(figsize=[4, 2])
ax.axhline(color="gray")
ax.axvline(color="gray")
ax.plot(x, y, label=r"$\log(x)$")
ax.set(xlabel="x", ylabel="y")
ax.legend()
fig.show()
../../../_images/00b745a71cd0921c1dbfd0a9f483800e9da62b78669f36a08a440c8a32dd9bf8.png

対数関数の性質#

a>0,a1,b>0,M>0,N>0に対して

loga1=0logaa=1logaxy=logaxlogaylogaxy=logax+logaylogaxy=ylogaxlogbx=logaxlogab
例:ax

底がaの対数を取る場合

loga(ax)=x

自然対数を使う場合

ln(ax)=xln(a)(logxy=ylogx)

例:元本が2倍になる年数は?

年率5%の利益が複利で運用できるとして、元本が2倍になるには何年かかる?

利率rn年間複利運用したときの利益率π

(1+r)n=π

r=0.05とすると、π=2になるのは

(1.05)n=2

両辺の対数をとると

log10(1.05)n=log102nlog101.05=log102n=log102log101.0514.2

なので約14年かかることになる。

import numpy as np
np.log10(2) / np.log10(1.05)
14.206699082890461