1.10泰勒公式
如果一个复杂函数在某点处存在各阶导数,在这点附近,就可以用一个多项式函数,近似地替代这个复杂函数。这种化繁为简的功能就是泰勒公式的本质和意义所在。
如何用多项式函数近似表示这个复杂函数呢?根据微分的定义,如果函数f(x)在点a处可得,可用一次函数近似代替函数f(x),误差是x-a的高阶无穷小。
由此,我们可以推广到更高次阶的情况。假设函数f(x)n阶可导,函数f(x)可表示为:
这就是泰勒多项式,其中称为皮亚诺余项。
如果令,式(5.5)可写成:
函数在x=0点处的泰勒公式称为麦克劳林公式,具体形式为:
把余项记为,式(5.6)可写为:
基本函数的麦克劳林公式:
用泰勒公式近似sinx函数,分别取k=3,5的情况
从上图可以看出,泰勒公式精度随着k增大而精度越高。
实现上图的python代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# 导入matplotlib模块 import numpy as np import matplotlib.pyplot as plt # matplotlib 绘图库正常使用中文黑体 plt.rcParams['font.family'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False %matplotlib inline x=np.arange(-2*np.pi,2*np.pi,0.1*np.pi) y=np.sin(x) y1=x-x**3/(2*3) y2=x-x**3/(2*3)+x**5/(2*3*4*5) # 设置画布 plt.figure(figsize=(6, 4), dpi=100) # 获取坐标轴对象 ax = plt.gca() # 去掉右边框和上边框颜色 ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') # 设置坐标轴范围 ax.set_xlim(-2*np.pi,2*np.pi) ax.set_ylim(-1, 1) # 移动左边框和下边框到中间(set_position的参数是元组) ax.spines['left'].set_position(('data', 0)) ax.spines['bottom'].set_position(('data', 0)) # 绘制折线图 plt.plot(x,y,color='c',label='y=sinx 曲线') # 绘制折线图 plt.plot(x,y1,color='b',label='k=3的泰勒公式') # 绘制折线图 plt.plot(x,y2,color='r',label='k=5的泰勒公式') # 1 添加网格 #plt.grid(True,linestyle='--',alpha=0.5) # 2 显示图例 plt.legend(loc='lower left') # 4 指定位置添加文本 plt.text(2*np.pi, 0.1, 'X轴',fontsize=12) plt.text(0.1, 1, 'Y轴',fontsize=12) # 5 图像显示 plt.show() |
利用泰勒公式可以将非线性问题化为线性问题,且具有很高的精确度,因此其在微积分的各个方面都有重要的应用,如用于梯度下降法、牛顿法、拟牛顿法等的推导。