python使用级数pi的近似值_用Python学微积分(4)---泰勒级数

泰勒级数(Taylor Sries)

现在是时候说明指数函数和三角函数那些奇妙的多项式形式了。

这些多项式实际为这些函数在x=0处展开的泰勒级数。

下面我先不加预告地列出函数f(x)在x=0处展开地泰勒级数的定义:

我们的高中数学知识告诉我们对指数函数无论求多次导,还是其本身:

因而依据上面的定义展开有:

多项式近似(Polynomial Approximantion)

多项式近似的本质就是:将非常复杂的函数转变成无限项的和的形式。通常,我们可以只计算泰勒级数的前几项之和的极限,便可获得原函数的局部近似了。

在这,请原谅我把“极限”这个名词抖出来了,实际上,我们从极限的观点,学了导数的几何意义后,我们便能更好地用高阶导数来理解:多项式近似了。

我们先来取前20项试试看,

import sympy

from sympy import *

# 指定x为符号

x = sympy.Symbol('x')

# exp为公式

exp = e**x

# 下面开始求和,就求前21项的和吧

sums = 0

for i in range(20):

# 求i次导函数

numerator = exp.diff(x,i)

# 计算导函数在x=0处的值

numerator = numerator.evalf(subs={x:0})

denominator = np.math.factorial(i)

sums += numerator/denominator*x**i

# 下面检验一下原始的exp函数和其在x=0处展开的泰勒级数前20项之和的差距

print (exp.evalf(subs={x:0})-sums.evalf(subs={x:0}))

# result is 0

xvals = np.linspace(0,20,100)

for xval in xvals:

plt.plot(xval,exp.evalf(subs={x:xval}),'bo',\

xval,sums.evalf(subs={x:xval}),'ro')

如果笔者曾手动验证过三角函数的多项式展开式,现在我们来看看图像吧!

并且看下,在展开点x=0处,用越多项数获得的近似结果越接近真实值。

from matplotlib import pyplot as plt

import numpy as np

from mpl_toolkits.mplot3d import Axes3D

from sympy import * #用于求导积分等科学计算

from sympy.plotting import plot3d

from sympy.functions import exp

x = Symbol('x')#x 变量

print(help(plot))#对x = 0点泰勒展开 至x20次方无穷小

p0 = plot(sin(x),(x,-2*pi,2*pi),line_color='b',ylim=(-1.5,1.5),title='funion',show=False)

#画出sin(x),范围-2*pi,2*pi,蓝色线,y刻度范围-1.5,1.5,暂不显示

exper1 = series(sin(x),x,n=4)#泰勒展开至第O(x**4)

p1 = plot(exper1.subs(O(x**4),0),(x,-2*pi,2*pi),line_color='br',title='O(x**4)',show=False)

#第O(x**4)项用0替代 颜色为蓝红色

exper2 = series(sin(x),x,n=6)#泰勒展开至第O(x**6)

p2 = plot(exper2.subs(O(x**6),0),(x,-2*pi,2*pi),line_color='g',title='O(x**6)',show=False)

#第O(x**6)项用0替代 颜色为绿

exper3 = series(sin(x),x,n=8)#泰勒展开至第O(x**8)

p3 = plot(exper3.subs(O(x**8),0),(x,-2*pi,2*pi),line_color='r',title='O(x**8)',show=False)

#第O(x**8)项用0替代 颜色为红

exper4 = series(sin(x),x,n=10)#泰勒展开至第O(x**10)

p4 = plot(exper4.subs(O(x**10),0),(x,-2*pi,2*pi),line_color='y',title='O(x**10)',show=False)

#第O(x**10)项用0替代 颜色为黄

#如果不是我对颜色不敏感,可能我就在展开点,展开至100项了,

p0.extend(p1)

p0.extend(p2)

p0.extend(p3)

p0.extend(p4)

p0.show()#显示图像

展开点(Expansion point)

上面,我们获得的泰勒级数都是围绕x=0处获得的,但我们是不是可在不同的展开点(例如x=a)获得泰勒级数呢?显然是可以的。Python真香:欧拉公式​zhuanlan.zhihu.comPython真香:用Python学微积分(2)---复合函数​zhuanlan.zhihu.comPython真香:用Python学微积分---函数​zhuanlan.zhihu.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值