2025年3月8日 星期六

用泰勒展開式逼近一個 sin 函數

用 python3 的 autograd 模組來驗證:

from autograd import elementwise_grad as grad
import autograd.numpy as audo_np
import matplotlib.pyplot as plt

_n = lambda n   : n * _n(n - 1) if n > 0 else 1  # n! 階層 n
_x = lambda a, n: a * _x(a, n - 1) if n > 0 else 1 # aⁿ, a 指數 n
d_ = lambda n, f: d_(n - 1, grad(f)) if n > 1 else grad(f) # dⁿf(x)/dx, n 階微分函數
f_ = lambda g, a, n: d_(n, g)(0.0) * _x(a, n) / _n(n) + f_(g, a, n - 1) if n > 0 else g(0.0) # f(x) = n 項泰勒展開式: Σ fⁿ(0) * xⁿ / n! 逼近 g(x)
x = audo_np.linspace(-10, 10, 500)
y = f_(audo_np.sin, x, 20)
plt.plot(x , y, x, audo_np.sin(x))  
plt.show()


沒有留言:

張貼留言

用泰勒展開式逼近一個 sin 函數

用 python3 的 autograd 模組來驗證: from autograd import elementwise_grad as grad import autograd.numpy as audo_np import matplotlib.pyplot as plt _...