📈
[大学数学] マクローリン展開の可視化
概要
無限微分可能な関数
ただし,
以前下記の記事を書いていた時に, よく使う式だがどれぐらい近似できているか考えたことがないなと思い立ったのでPythonを用いて描画し, 検証することにした.
[統計学] ポアソン分布の期待値, 分散, 積率母関数, 最尤推定, 可視化
よく用いられる関数のマクローリン展開
せっかくなのでマクローリン展開を用いて関数を導出するところから始める.
指数関数
三角関数
三角関数のsin, cosはsin(0)が0になることを用いて導出をすることが出来る.
実装
Python言語を用いてマクローリン展開を図示してみる. 初めに必要なライブラリをimportする.
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
import seaborn as sns
指数分布
指数分布のマクローリン展開は以下のようにPythonの関数にすることが出来る.
# toは何階まで微分するかを制御する
def f(x,to):
ans = 0
for k in range(to):
ans = ans + x**k/np.math.factorial(k)
return ans
試しにこの関数に適当な数を入れてみる. 指数関数は
f(1,100)
# 2.7182818284590455
実際に99階微分まで計算したところ,
sns.set()
sns.set_style("whitegrid", {'grid.linestyle': '--'})
sns.set_context("talk", 1, {"lines.linewidth": 4})
sns.set_palette("cool", 7, 0.8)
x = np.arange(-1, 3, 0.001)
fig=plt.figure(figsize=(16,9))
ax = fig.add_subplot(1, 1, 1)
ax.set_title('Exponential approximation')
ax.set_ylabel('f(x)')
ax.plot(x, np.exp(x))
ax.plot(x, f(x,6))
ax.plot(x, f(x,5))
ax.plot(x, f(x,4))
ax.plot(x, f(x,3))
ax.plot(x, f(x,2))
ax.legend(['true','to=6','to=5','to=4','to=3','to=2'])
plt.show()
三角関数
三角関数についても描画のコードはおおよそ同じなので, マクローリン展開をした近似式をPythonの関数に起こした部分のみを掲載する
正弦関数
def f(x,to):
ans = 0
for k in range(to):
ans = ans +((-1)**k) * (x**(2*k+1)/np.math.factorial(2*k+1))
return ans
余弦関数
def f(x,to):
ans = 0
for k in range(to):
ans = ans +((-1)**k) * (x**(2*k)/np.math.factorial(2*k))
return ans
どの関数においても微分の回数を増やしていくごとに近似対象の関数の形に近づく様子が観察できた.
Discussion