正弦関数のマクローリン展開の計算

概要

解析学の級数の理解のために、正弦関数のマクローリン展開の数値例を使おうと考えた。

計算

正弦関数(sin関数)の高階微分とテイラー展開(マクローリン展開)| 関数の微分 | 微分積分 | 数学 | ワイズ を参考に以下のようにコードにした。

import math
import numpy as np

def calc_sin_Maclaurin(x, n):
    ans = []
    for k in range(n):
        term = (-1)**k * x**(2*k+1) / math.factorial(2*k+1)
        ans.append(term)
    return sum(ans), ans
np.sin(np.sqrt(2)), calc_sin_Maclaurin(np.sqrt(2), 10)[0]

確認のためにプロットしてみる。

import matplotlib.pyplot as plt
import numpy as np

vfunc = np.vectorize(lambda x: calc_sin_Maclaurin(x, 10)[0])

fig, ax = plt.subplots(1, 1)
x = np.linspace(0, 10, 1000)
ax.plot(x, vfunc(x), label="Maclaurin(x, 10)")
ax.plot(x, np.sin(x), label="sin(x)")
ax.set_ylim(-2, 2)
plt.legend()
fig.savefig(outfile)
outfile
6NWdAb_jDAk_M.png

これで以下の級数を利用しよう。

calc_sin_Maclaurin(np.sqrt(2), 5)[1]
1.4142135623730951 -0.4714045207910318 0.04714045207910319 -0.0022447834323382474 6.23550953427291e-05

参考文献