scipy.interpolate.

approximate_taylor_polynomial#

scipy.interpolate.approximate_taylor_polynomial(f, x, degree, scale, order=None)[source]#

通过多项式拟合估计 x 处 f 的 Taylor 多项式。

参数:
f可调用对象

寻求其 Taylor 多项式的函数。应接受 x 值的向量。

x标量

要评估多项式的点。

degree整数

Taylor 多项式的次数

scale标量

用于评估 Taylor 多项式的间隔宽度。为了拟合多项式,将使用该宽度范围内的数据点值。必须谨慎选择。

order整数或无,可选

用于拟合的多项式的次数;f 将被评估 order+1 次。如果为无,请使用 degree

返回:
ppoly1d 实例

(平移到原点的)泰勒多项式,即例如 p(0)=f(x)。

注释

适当选择“scale”是一种折衷;过大则函数与其泰勒多项式相差太大,无法获得一个好答案,过小则舍入误差会淹没高阶项。即使在理想条件下,所使用的算法也会在 30 阶左右变得数值不稳定。

选择比阶次略大的阶次可以提高高阶项。

示例

我们可以计算不同阶次的正弦函数的泰勒近似多项式

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.interpolate import approximate_taylor_polynomial
>>> x = np.linspace(-10.0, 10.0, num=100)
>>> plt.plot(x, np.sin(x), label="sin curve")
>>> for degree in np.arange(1, 15, step=2):
...     sin_taylor = approximate_taylor_polynomial(np.sin, 0, degree, 1,
...                                                order=degree + 2)
...     plt.plot(x, sin_taylor(x), label=f"degree={degree}")
>>> plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left',
...            borderaxespad=0.0, shadow=True)
>>> plt.tight_layout()
>>> plt.axis([-10, 10, -10, 10])
>>> plt.show()
../../_images/scipy-interpolate-approximate_taylor_polynomial-1.png