为什么会有泰勒公式
对于一些复杂的函数,为了便于研究,往往希望用一些简单的函数来近似表达。
由于用多项式表示的函数,只要对自变量,进行有限次加、减、乘三种算术运算,便能求出它的函数值来,因此我们经常用多项式来近似表达函数。
——《高等数学》同济七版
举个例子,cosx = 邻边/斜边,所以cos35°,我们很难求出它的值,最多只能判断出它介于1到(√2)/2之间。
如果我们要较为准确地求出cos35°的话,就可以使用泰勒公式(cos35° = c1 + c2x + c3x^2 + ...),即用多项式来逼近原函数。
可能你会说,cos35°有什么难求的,计算器一键搞定(其实计算器在计算cos35°的时候,也是用了泰勒公式)。
泰勒公式和麦克劳林
泰勒(Taylor)中值定理1:如果函数f(x)在x0处具有n阶导数,那么存在x0的一个邻域,对于该邻域内的任一x,有f(x) = f(x0) + f'(x0)*(x-x0) + f''(x0)/2!*(x-x0)^2 + ... +f(n)(x0)/n!*(x-x0)^n + Rn(x),其中Rn(x) = o((x*x0)^n)。
泰勒(Taylor)中值定理2:如果函数f(x)在x0的某个邻域U(x0)内具有n+1阶可导,那么对于任一x∈U(x0),有f(x) = f(x0) + f'(x0)*(x-x0) + f''(x0)/2!*(x-x0)^2 + ... +f(n)(x0)/n!*(x-x0)^n + Rn(x),其中Rn(x) = f(n+1)(ξ)/(n+1)!*(x-x0)^(n+1),这里 ξ是x0与x之间的某个值。
在 泰勒中值定理1 中,如果取x0 = 0, 那么有带有皮亚诺余项的麦克劳林(Maclaurin)公式,f(x) = f(0) + f'(0)x + f''(0)/2!*x^2 + ... + f(n)(0)/n!*x^n + o((x)^n)。
在 泰勒中值定理2中,如果取x0 = 0, 那么有带有皮亚诺余项的麦克劳林(Maclaurin)公式,f(x) = f(0) + f'(0)x + f''(0)/2!*x^2 + ... + f(n+1)(ξ)/(n+1)!*(x-x0)^(n+1) (x0< ξ <x)。
——《高等数学》同济七版
我们归纳一下,总而言之就是:如下图2-1。
几何直观理解
为什么f(x) = f(x0) + f'(x0)*(x-x0) + f''(x0)/2!*(x-x0)^2 + ... +f(n)(x0)/n!*(x-x0)^n + Rn(x)能近似地表达原函数?泰勒公式的本质到底是什么?
为了回答这个问题,我们需要借助几何工具来直观地理解泰勒公式。
先以展开点 = 0为例(x0 = 0),即麦克劳林公式,也以文章开头提到的cosx为例,即cos0处的泰勒展开。
因为泰勒的原理是用多项式来逼近原函数,所以设:cosx = c1 + c2x + c3x^2 +...(c1、c2、c3...皆为常数)。
现在我们用c1 + c2x + c3x^2 +...这个式子来层层逼近cosx在0处的情况。
(1)∵当x=0时cosx的零阶导数(即cox自己) = 1 ∴c1 + c2x + c3x^2 +... 的零阶导数= 1,推出c1 = 1。
(2)∵当x=0时cosx的一阶导数 = -sinx = 0 ∴c1 + c2x + c3x^2 +...的一阶导数 = c2 + 2*c3x +... = 0,推出c2 = 0。
(3)∵当x=0时cosx的二阶导数 = -cosx = -1 ∴c1 + c2x + c3x^2 +...的二阶导数 = 2*c3 + 3*c4x +... = 0,推出c3 = 1/2。
(4)以此类推,∵当x=0时cosx的n阶导数 = a ∴c1 + c2x + c3x^2 +... 的n阶导数 = a,推出n!*c(n+1) + ...= a,则c(n+1) = a/n!
这种做法的原理是什么呢?就是根据不断地对cosx求导,来获取更多关于cosx的信息,通过这些信息从而模拟出cosx的函数,从而近似计算cosx在某点的值。
如图3-1所示:
第(1)步推出c1 = cosx,使得c1 + c2x + c3x^2 +...和cosx在x = 0这个点上的值是一样的。
第(2)步推出c2 = -sinx,使得c1 + c2x + c3x^2 +...和cosx在x = 0这个点上的斜率是一样的,即你递增的时候,我也递增。(为了方便观看,我把蓝线画很直,看着好像不可导,不要在意这个。)
第(3)步推出c3 = -cosx,使得c1 + c2x + c3x^2 +...和cosx在x = 0这个点上的凹凸性是一样的,即你凸起来的地方,我也凸起来。(甚至曲率也是一样的,即曲线的不平坦程度,曲率公式为K = |y''|/(1+y'^2)^(3/2)。)
以此类推,证明了这种做法的原理,就是通过不断地求导,获取更多的信息,从而逼近原函数。
现在我不再以展开点 = 0为例,即x0 ≠ 0,这时就不再是麦克劳林公式了,而是真正的泰勒公式。
继续用cosx来当小白鼠,设展开点 = a,即x0 = a,则我们现在就要层层逼近当x = a时cosx的情况。
还记得初中的时候,我们初学函数几何,老师教了我们一些东西(旋转和平移),f(x)的几何图形如果想要往左平移a个单位,则x要减去a,即f(x)要变成f(a-x)。
如图3-2所示,这就是cosx向左平移了a个单位的结果。
和之前的展开点为0的例子一样,只不过这次的展开点为a,但是我们照样也搬用展开点为0的做法,只要我们把cosx向左平移a个单位就好了,即cosx变成了cos(x-a)。
剩下的步骤,我就不一一写出了。
故,麦克劳林公式是长成这样的:f(x) = f(0) + f'(0)x + f''(0)/2!*x^2 + ... + f(n)(0)/n!*x^n + Rn(x)
而,泰勒公式却是长成这样的:f(x) = f(x0) + f'(x0)*(x-x0) + f''(x0)/2!*(x-x0)^2 + ... +f(n)(x0)/n!*(x-x0)^n + Rn(x)