指数関数と対数関数#
指数関数#
(定義)指数関数
\(a\)をある定数として、
\[
y = a^x
\]
を、\(a\)を 底 とする 指数関数(exponential function)という。
ネイピア数#
以下で定義される定数\(e\)をネイピア数という
\[
\lim _{n \rightarrow \infty}\left(1+\frac{1}{n}\right)^n=e=2.7182818 \cdots
\]
(定義)自然指数関数
\(e\)を底とする指数関数
\[
y = e^x
\]
を 指数関数(the exponential function)あるいは明示的に 自然指数関数という。
(英語だとtheがつくかどうかで底の違いを表現する。日本語だとややこしいが、標準的な指数関数は\(e\)を底とする指数関数である)
(定義)自然指数関数
指数関数にはいくつかの定義があり、オイラーによって最初に定義されたものは以下のものになる
\[
\exp (x)=\lim _{n \rightarrow \infty}\left(1+\frac{x}{n}\right)^n
\]
マクローリン級数によって冪級数の形にした
\[
\exp (x)=\sum_{n=0}^{\infty} \frac{x^n}{n !}=1+x+\frac{x^2}{2 !}+\frac{x^3}{3 !}+\frac{x^4}{4 !}+\cdots
\]
の定義もある
Show code cell source
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-1, 2.5, 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()
\(\left(1+\frac{x}{n}\right)^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
Show 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$")
ax.axhline(np.exp(1), color="gray")
ax.axvline(color="gray")
fig.show()
指数関数の基本的性質(指数法則)#
\[\begin{split}
\begin{align}
a^x a^y &= a^{x+y}
\\
\left(a^x\right)^y &= a^{x y}
\\
\frac{a^x}{a^y} &= a^{x-y}
\\
\left(\frac{a}{b}\right)^x &= \frac{a^x}{b^x}
\end{align}
\end{split}\]
対数関数#
指数関数の逆関数を 対数関数 (logarithmic function)という。
\(a^y = x\)のとき、「\(y\)は\(a\)を 底 とする \(x\) の対数」といい
\[
y = \log_{a} x
\]
と表す。
(定義)対数
\(a > 0, a \neq 1, M > 0\)について
\[
a^m = M
\Longleftrightarrow
m = \log_a M
\]
Show 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()
対数関数の性質#
\(a > 0, a \neq 1, b > 0, M > 0, N > 0\)に対して
\[\begin{split}
\begin{align}
\log_a 1 &= 0\\
\log_a a &= 1\\
\log_a \frac{x}{y} &= \log_a x - \log_a y\\
\log_a xy &= \log_a x + \log_a y\\
\log_a x^y &= y \log_a x\\
\log_b x &= \frac{\log_a x}{\log_a b}\\
\end{align}
\end{split}\]
例:\(a^x\)
底が\(a\)の対数を取る場合
\[
\log_a (a^x) = x
\]
自然対数を使う場合
\[
\ln (a^x) =
x \ln(a) \quad (\because \log x^y = y \log x の性質より)
\]
例:元本が2倍になる年数は?
年率5%の利益が複利で運用できるとして、元本が2倍になるには何年かかる?
利率\(r\)で\(n\)年間複利運用したときの利益率\(\pi\)は
\[
(1 + r)^n = \pi
\]
\(r=0.05\)とすると、\(\pi=2\)になるのは
\[
(1.05)^n = 2
\]
両辺の対数をとると
\[\begin{split}
\log_{10} (1.05)^n = \log_{10} 2
\\
\to n \log_{10} 1.05 = \log_{10} 2
\\
\to n = \frac{ \log_{10} 2 }{ \log_{10} 1.05 } \approx 14.2
\end{split}\]
なので約14年かかることになる。
import numpy as np
np.log10(2) / np.log10(1.05)
14.206699082890461