7、Taylor公式(泰勒公式)通俗+本质详解
参考:https://zhuanlan.zhihu.com/p/392808684
1、比较通俗地讲解一下泰勒公式是什么。
泰勒公式,也称泰勒展开式。是用一个函数在某点的信息,描述其附近取值的公式。如果函数足够平滑,在已知函数在某一点的各阶导数值的情况下,泰勒公式可以利用这些导数值来做系数,构建一个多项式近似函数,求得在这一点的邻域中的值。
所以泰勒公式是做什么用的?
简单来讲就是用一个多项式函数去逼近一个给定的函数 ( 即尽量使多项式函数图像拟合给定的函数图像 ) ,注意,逼近的时候一定是从函数图像上的某个点展开。如果一个非常复杂的函数,想求其某点的值,直接求无法实现,这时候可以使用泰勒公式去近似的求该值,这是泰勒公式的应用之一。泰勒公式在机器学习中主要应用于梯度迭代。
2、问题的提出
多项式 是最简单的一类初等函数。关于多项式,由于它本身的运算仅是有限项加减法和乘法,所以在数值计算方面,多项式是人们乐于使用的工具。因此我们经常用多项式来近似表达函数。这也是为什么泰勒公式选择多项式函数去近似表达给定的函数。
3、近似计算举例
初等数学已经了解到一些函数如: 的一些重要性质,但是初等数学不曾回答怎样来计算它们,以 的近似计算为例:
①一次(线性逼近)
利用微分近似计算公式 ,( 该式由导数/微分的极限表达公式转换得到 ),对 附近的 的线性逼近为: ,所以 在 附近的线性逼近函数 ,如下图:
线性逼近优点:形式简单,计算方便;缺点:离原点 O 越远,近似度越差。
②二次逼近
二次多项式 逼近 ,我们期望:
(即期望在处逼近函数和给定函数值相等);
(即期望在处逼近函数和给定函数的斜率相等);
,所以 (即期望在处逼近函数和给定函数的曲率相等);
所以 ,如下图
二次逼近要比线性逼近好得多,但局限于 内,该范围外,图像明显差异很大。为什么我们期望两个函数在某一点的函数值、一阶导数值、二阶导数值相等?因为这些值表达了函数(图像)最基本和最主要的性质,这些性质逼近即可使两个函数逼近(由上图函数图像可以直观地看出来)
③八次逼近
八次多项式 逼近 ,我们期望:
,求出 (即期望在处逼近函数和给定函数值相等);
,求出 (即期望在处逼近函数和给定函数的斜率相等);
,求出 (即期望在处逼近函数和给定函数的曲率相等);
所以 ,如下图:
(绿色图像)比 (蓝色图像)更大范围内更接近余弦函数(红色图像)
由上述3次不同程度的函数逼近可以看出:对于精确度要求较高且需要估计误差的时候,必须用高次多项式来近似表达函数,同时给出误差公式。
以上就是利用多项式函数去逼近给定函数的一个过程。
4、泰勒公式的推导
由此引出一个问题:给定一个函数,要找一个在指定点附近与很近似的多项式函数,记为:使得并且使得两者误差可估计。所以要找的多项式应该满足什么条件,误差是什么?
从几何上看,代表两条曲线,如下图:
使它们在 附近很靠近,很明显:
① 首先要求两曲线在点相交,即
② 如果要靠得更近,还要求两曲线在点相切,(由图像可以直观看出,相交【棕色和红色图像】和相切【绿色和红色图像】,两曲线在附近的靠近情况明显差异很大,相切更近),即
③ 如果还要靠得更近,还要求曲线在点弯曲方向相同,(如上图,弯曲方向相反【绿色和红色图像】;弯曲方向相同【蓝色和红色图像】,明显在离很远的地方,弯曲方向相同两函数的差异更小一点),即,进而可猜想,若在附近有,,......,,近似程度越来越好。
综上所述,所要找的多项式应满足下列条件:
解释一下上面的转换是如何做的,以上面第三行的二阶导数为例:
第一个箭头的转换:将 求二阶导函数后将 带入,求得
第二个箭头的转换:所以 ,所以
多项式函数 中的系数可以全部由表示,则得到:
其中误差为 。因为是用多项式函数去无限逼近给定的函数,所以两者之间肯定存在一丢丢的误差。
5、泰勒公式的定义
所以我们就得到了泰勒公式的定义:
如果函数在含的某个开区间内具有直到阶导数,则对,有
其中余项(即误差),在与之间。泰勒公式的余项表达方式有好几种,前面这种表示方法称为阶泰勒展开式的拉格朗日余项。拉格朗日余项是阶泰勒公式又多展开了一阶,变为。注意,这里的余项即为误差,因为使用多项式函数在某点展开,逼近给定函数,最后肯定会有一丢丢的误差,我们称之为余项。
6、扩展--麦克劳林公式
是泰勒公式的一种特殊情况:即当时的泰勒公式。所以将带入公式,即得:
几个常见的初等函数的带有佩亚诺余项的麦克劳林公式:
佩亚诺余项为的高阶无穷小:
原文地址:https://www.cnblogs.com/shizyxya/p/16421297.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- kafka系列之彻底弄清楚各版本差异
- 带你认识线程安全的集合操作
- 一分钟知识点:linux命令之su 和 su -
- 一分钟知识点:maven的版本管理
- Kafka中几个容易混淆的概念
- 一文读懂H5,APP,WAP,公众号支付等多种支付方式的区别
- Python开发植物大战僵尸游戏
- 《剑指 offer》 21. 调整数组顺序使奇数位于偶数前面
- Linux基础入门 | 服务器集群使用指南
- bedtools | 快速筛选重合区间
- motifStack | 绘制motif序列结构图
- 如何优雅的统计基因外显子长度
- Conda | 轻松安装生信工具
- R语言绘图 | 气泡矩阵图
- 在测试自动化中使用Java枚举