泰勒级数的理解
- 1. 泰勒级数
- 2. 近似
- 2.1. 举例
- 2.2. 解读
- 2.2.1 一阶
- 2.2.2 二阶
- 2.2.3 三阶
- 2.3 拓展
- 2.4 泰勒多项式
- 3. 几何看法
- 4. 自然常数
1. 泰勒级数
泰勒级数应该是大学微积分的时候接触
但它在数学中重要的函数近似工具
多项式函数好计算,又好求导,还好积分
用我们村的话讲就叫 very good!
数学里把无限多项的和就叫做级数
2. 近似
2.1. 举例
举个例子
import matplotlib.pyplot as plt
import numpy as np
# 设置函数
x = np.arange(-10, 10, 0.1)
y1 = np.cos(x)
y2 = 1 - 1 / 2 * x ** 2
# 设置标题和图表
plt.title("$y = cos(x) ≈ 1 - 1/2*x^2$")
plt.plot(x, y1)
plt.plot(x, y2)
# 设置坐标轴上刻度
plt.xticks([])
plt.yticks([])
# 设置matplotlib支持汉语和正常显示字符
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 截取x,y的某一部分
plt.xlim((-6.283185, 6.283185))
plt.ylim((-1.5, 1.5))
# 获取当前坐标的位置
ax = plt.gca()
# 去掉坐标图的上和右 spine翻译成脊梁
ax.spines['right'].set_color('None')
ax.spines['top'].set_color('None')
# 指定坐标的位置
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
# 显示图表
plt.show()
在0附近,(x) 和 1-
那么这个 -
2.2. 解读
在某个点附近用多项式函数去近似其他函数
首先在x=0处,设置二次多项式来近似
即近似函数的形式为
若要在上式在 处最近似 ,那么应该在0附近的图案应该比较相似
首先在 处 等于 1
那么 ,得出
无论 和 怎么选,
2.2.1 一阶
在 时,如果近似函数的 切线斜率 也能和 的相等的话,那就美滋滋了
不然,近似函数的值在离
的导函数是 ,在 处为0,表示它的切线是水平的
此时 近似函数的导数 应该为 0
则可以得到
2.2.2 二阶
现在在 处的函数值和斜率都确定相等了,就差 了
在 时,导函数是 ,那么二阶导函数就是
在 时,它的二阶导数
那么让近似函数与原先的函数的二阶导数相一致,就可以保证在此时拥有相同的弯曲程度(函数斜率的变化程度相同)
此时 近似函数的二阶导数 应该为 -1
则可以得到
最终得到近似函数
验证一下
import numpy as np
a = np.cos(0.1)
b = 1 - 1/2 * 0.1 ** 2
print(a, b)
# 0.9950041652780258 0.995
其实是非常接近的了
2.2.3 三阶
在上近似函数中,有3个常量来控制近似程度
负责让多项式在 的值和 相似
负责让多项式和 的导数相似
负责让多项式和
可以再往上增加几个高次幂的项来近似更高阶的导数
比如在加个 多一个系数 ,
取三阶导数,二次项以及以下都为0,只剩下
而 的三阶导数为 , 在 时等于0,因此
无妨,再加个四次项 ,
取四阶导数,三次项以及以下都为0,只剩下
而 的四阶导数为本身, 在 时等于1,因此
则四次近似函数
import matplotlib.pyplot as plt
import numpy as np
# 设置函数
x = np.arange(-10, 10, 0.1)
y1 = np.cos(x)
y2 = 1 - 1 / 2 * x ** 2
y3 = 1 - 1 / 2 * x ** 2 + 1 / 24 * x ** 4
# 设置标题和图表
plt.title("$y = cos(x) ≈ 1 - 1/2*x^2 ≈ 1 - 1/2*x^2 + 1/24*x^4$")
plt.plot(x, y1, label='$cos(x)$')
plt.plot(x, y2, label='$1 - 1/2*x^2$')
plt.plot(x, y3, label='$1 - 1/2*x^2 + 1/24*x^4$')
# 设置坐标轴上刻度
plt.xticks([])
plt.yticks([])
# 设置matplotlib支持汉语和正常显示字符
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 截取x,y的某一部分
plt.xlim((-6.283185, 6.283185))
plt.ylim((-1.5, 1.5))
# 获取当前坐标的位置
ax = plt.gca()
# 去掉坐标图的上和右 spine翻译成脊梁
ax.spines['right'].set_color('None')
ax.spines['top'].set_color('None')
# 指定坐标的位置
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
#显示图示
plt.legend()
# 显示图表
plt.show()
确实 四次近似函数 比 二次近似函数 更加接近 原函数
可以发现以上过程,阶乘的形式出现,对多次项 连续多次求导,则一层一层嵌套,如七阶项 和 七阶导数
那么 想要的导数值 ,高次的求导不影响低次项
2.3 拓展
如果想要用多项式估计一个非0点附近的结果,比如
那么设定为关于而不是的多项式就可以得到相同结果
近似函数
虽然复杂了,其实也就是让点和之前的0点一样
2.4 泰勒多项式
对于 在0处的各阶导数会按 ,1 0 -1 0 的形式循环
近似函数
也就是泰勒多项式(泰勒公式),近似函数累加了有限的多项
而 想要的导数值
3. 几何看法
求近似面积,多次项的二次项就呼之欲出了
学过微积分可以知道,图像所表示的函数本身就是面积函数的导数
若函数往右增长,那么多出来的面积就近似与乘以函数此时的高度,若越小,精度越高
import matplotlib.pyplot as plt
import numpy as np
# 设置函数
x = np.arange(0, 1, 0.00001)
y1 = x**2
# 设置标题和图表
plt.plot(x, y1)
# 设置坐标轴上刻度
plt.xticks([0,1, 1])
plt.yticks([0,1])
# 设置matplotlib支持汉语和正常显示字符
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 截取x,y的某一部分
plt.xlim((0, 1))
plt.ylim((0, 1))
# 获取当前坐标的位置
ax = plt.gca()
# 去掉坐标图的上和右 spine翻译成脊梁
ax.spines['right'].set_color('None')
ax.spines['top'].set_color('None')
# 指定坐标的位置
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
# 画阴影区域
a, b = 0, 0.5
xf = x[np.where((x >= a) & (x <= b))]
plt.fill_between(xf, xf**2, xf*0, color='blue', alpha=0.25)
a, b = 0.5, 0.55
xf = x[np.where((x >= a) & (x <= b))]
plt.fill_between(xf, xf**2, xf*0, color='red', alpha=0.25)
# 显示图示
plt.legend()
# 显示图表
plt.show()
假设原始起始点为A
剩余的部分就可以近似为一个三角形
三角形的面积 = 底 高(图像斜率 )
由于曲线图像代表了面积函数的导数
所以在A点的图像斜率就是面积函数在A点的二阶导数
就等于
那么其实就是和泰勒多项式一样
面积函数 = 原面积(紫色区域 / / )+ 增加的长方形区域(粉红色下部分 / ) + 增加的三角形区域(粉红色上部分 / )
4. 自然常数
特殊的例子, 处的 函数,因为导数就是本身,且
那么近似函数
到四次的时候很明显比较接近了。
而
加上越来越多的多项式,总和就越来越接近e
那么可以说这个无穷级数收敛到e,也就是说这个级数就等于e
即便从定义上讲,泰勒多项式只考虑0点周围的各种导数性质
但在的例子中,无论x取任何值
谢谢