
import sympy
import numpy as np
import matplotlib.pyplot as plt#数据可视化工具
#用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
#将x当作函数自变量
x=sympy.Symbol('x')
#exp为原函数公式
exp=np.e**x
#泰勒级数展开,对前N项进行求和
sums=0
N=30
for i in range(N):
#求i次导函数
numerator=exp.diff(x,i)
#计算导函数在x=0处的值
numerator=numerator.evalf(subs={x:0})
denominator=np.math.factorial(i)
sums+=numerator/denominator*x**i
#检验原函数与其在x=0处展开的泰勒级数前20项之和的差距
print(exp.evalf(subs={x:0})-sums.evalf(subs={x:0}))
xvals=np.linspace(0,30,100)
exp_points=np.array([])
sum_points=np.array([])
for xval in xvals:
#原函数数据点
exp_points=np.append(exp_points,exp.evalf(subs={x:xval}))
#泰勒展开式数据点
sum_points=np.append(sum_points,sums.evalf(subs={x:xval}))
#可视化结果
plt.plot(xvals,exp_points,'bo',label='原函数')
plt.plot(xvals,sum_points,'ro',label='泰勒展开式')
plt.legend()
plt.show()
算法:泰勒级数展开是多项式曲线来近似表示复杂曲线,应用在梯度下降、牛顿法、共轭梯度法等领域。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!