你管这破玩意叫泰勒公式
小宇:闪客闪客,我今天被人欺负了!
闪客:谁欺负你了!说出来我找他... 道个歉...
小宇:你他喵。
闪客:开玩笑,说说怎么欺负你了?
小宇:那个人考我背泰勒公式,结果我没背出来,被嘲笑了!我是不是太笨了呀?
闪客:当然不是,泰勒公式是很多人的噩梦,不信你看看投票。
小宇:好吧,我应该是除了名字之外什么都不知道的那一波了。你能不能给我讲讲,让我一下子就把它记住呀?
闪客:当然可以,你现在有空吗?随时可以开始。
小宇:有空,我们开始吧!
合理的猜测
闪客:我问你一个问题,在不用计算器,也不知道 e 的具体值的情况下,如何计算下面这个数?
小宇:不会
闪客:你能不能想想再说!
小宇:你凶什么凶!我想想哈,e 的 0.1 次方,emmm,应该和 e 的 0 次方差不太多吧?
闪客:非常好!那么这个数应该是比 1 大还是比 1 小呢?
小宇:这个简单,我记得 f(x) = ex 这个函数图像应该是一个向上弯弯的曲线,指数越大函数值就越大,所以应该至少比 1 大。
闪客:非常好,你现在已经找到了 e0.1 的一个近似值,就是 1,而且还能确定 e0.1 应该是一个比 1 要大的数。这已经是一个非常大的突破了!
小宇:真的假的,这好像还挺显然的。
切线更近
闪客:的确,下面我们就一点一点往下探索,你能不能再找一个比 1 更大一些的下限值呢?
小宇:额,这好像有点难,但我觉得,应该也可以比 1.01 大吧,实在不行就 1.00001。不过我瞎蒙的。
闪客:没关系,我给你一个小动图,看看能不能启发你。
小宇:啊!我明白了,刚刚我们的估算太保守了,f(x) = ex 的曲线一定是在 g(x) = 1 的上方,但我们可以往上倾斜一下这条线,让这条线更接近 ex 但又始终在其下方,这样我们估算出的值应该就更大一些了!
闪客:没错,你想想看如何倾斜这条线,才能尽可能实现你的这种效果呢?
小宇:我知道了,是切线!切线依然永远比 ex 要小,而且是最大程度的倾斜了,再往上斜一点的话就可能比 ex 大了。
闪客:没错,这就是个很直观的描述了,你再想想看,这条切线的方程你能求出来吗?
小宇:这个简单,就是让这条线和 ex 在 0 点处的导数值一样!因为 ex 在 0 点处的导数值是 1,所以很容易算出这条切线的方程!
闪客:没错,这样新的下限值也就很容易算出来了,也就是 g(0.1) = 1.1,我说得对吗?
小宇:是的!足足提高了 0.1!太厉害了!
曲线更更近
闪客:现在我们来重新梳理一下思绪。其实上面的过程,换个角度想,可以理解为两个函数分别从 0 点出发到 0.1 或者更远的地方。那么怎么尽可能保证,你的这个函数和 f(x) = ex 这个函数尽可能一样呢?
小宇:明白了,按照刚刚的思路,那最起码应该先保证两者在 0 处的函数值一样,也就是让他们在同一起跑线上。
闪客:没错,继续说。
小宇:在这个的基础上,应该保证这两个函数在 0 点处的变化率一样,即导数相同。也就是让他们在同一起跑线上以相同的速度往前跑。
闪客:OK,这就得到了我们刚刚所说的切线。那你再想想看,为什么他们俩的起跑线一样,起跑速度也一样,但是两者仍然不一样呢?
小宇:哦我明白了,因为 f(x) = ex 的变化率是越来越大的,而 g(x) = 1 + x 的变化率一直保持不变。也就是说其中一个在加速跑,越跑越快!
闪客:没错,所以我们不但要保证它们的变化率(速度)一样,还得保证它们变化率的变化率(加速度)一样,也即二阶导一样!
小宇:原来如此!不过 g(x) = 1 + x 的二阶导好像永远等于 0,不可能和 ex 一样,这可怎么办?
闪客:没关系,再增加一项咯,你看看下面这个函数。
小宇:哦明白了!增加了一个二次项,那么二阶导就无法把它完全导没。而且上面这个函数的二阶导是 1,刚好和 ex 的二阶导完全一样!
闪客:嘿嘿是的,我直接帮你算好了,正常应该是算一下这个系数 a 的。
小宇:明白,详略得当!下面不劳你费心了,我画一下函数图像看看!
闪客:嗯,这个图画的很棒!可以看到,新的函数确实比之前更逼近了!那接下来是不是不用我说你也知道我要说啥啦?
小宇:是的!接下来我们就让它们的 3 阶导、4 阶导、5 阶导一直相等下去,那么就可以无限逼近了!
闪客:没错!
小宇:我太牛了!
发现规律
闪客:好了,刚刚我们是直接凭感觉找到的一些列函数,那我们现在整理一下,看看能不能找到规律。
小宇:没问题,我来说吧!其实我们刚刚是在用多项式函数来逼近,通用的形式是下面这个样子,并且它们的各阶导数只与对应项系数有关,这是个很神奇且方便的地方!
闪客:没错!我们其实就想找一个上面这样的多项式函数,让它的函数图像和 ex 贴得非常近,最起码在 0 点的附近是这样的。
小宇:是的,而且我们刚刚分析和尝试过了,让两个函数贴得非常近,就相当于让两个函数在某点处的函数值一样,1 阶导一样,2 阶导一样,3 阶导也一样,等等等。
闪客:是的,这是一件很神奇的事情,两个函数一样,居然可以描述成函数值与各阶导一样。函数值和各阶导数值,似乎可以描述一个函数的样子。
小宇:这太神奇了,我们即便完全不知道函数表达式是什么,但只要知道了仅仅一个点的函数值和各阶导数值,就可以几乎精确地知道这个函数长什么样子了!
闪客:是的!那回到我们的主线,如何让这个多项式函数和 f(x) = ex 在 0 点附近一样呢?
小宇:就像刚刚说的,让 g(x) 和 f(x) 在 0 点处的函数值和各阶导数值一样!
闪客:没错!而且你也发现了,这个多项式函数的 n 阶导数只和 n 次项系数有关,然后 ex 的各阶导数都是 ex 本身不变。这计算起来可真是太方便了!
小宇:对呀!我已经算好了!把它们都代入回 g(x) 里就得出了
这个函数图像和 f(x) = ex 是非常近似的,所以计算 e0.1 可以通过计算 g(0.1) 来得到答案,算的项数越多应该越精确!
闪客:没错!如果 n 趋向于无穷大时,g(x) 甚至可以和 ex 完全相同。但如果只计算到有限的一个 n 次项,那后面的项可以当做 xn 的高阶无穷小量,记为 o(xn),所以就可以写为:
把 ex 换成更一般的函数 f(x) 就是:
这就是函数 f(x) 在 0 点处的 泰勒展开式,也叫 f(x) 的 麦克劳林公式。
小宇:哇,原来这就是泰勒公式呀!
闪客:还没完,你想想看还有哪里不对劲?
泰勒公式登场
小宇:哦我知道了,刚刚我们算 ex 的泰勒展开式,是通过在 0 点处的各阶导数值来计算的系数,这是因为 ex 在零点处的各阶导数值非常好算,都等于 1。
闪客:是的。
小宇:那如果有的函数是在另一个点,比如在 x0 处更好计算各阶导数,这该怎么办呢?
闪客:你问到点上了。其实,上面在 0 点处的计算方法,完全可以扩展到在任意一个点 x0 处的计算。
小宇:我明白了!之所以在 0 处计算各阶导数,能够让 2 阶导只和 2 次项系数有关,3 阶导只和 3 次项系数有关,是因为低次项导着到着就消失了,高次项导完之后还剩下 x,那么代入 0 之后也没了。
拿 2 阶导来说,就是下面这个样子。
闪客:是的,低次项系数怎么着都会导没,所以无需关注。而高次项系数如果期望带入 x0 代没的话,那只需要构造一个 x-x0 就可以了。
回到原来的式子里,就是
这个公式就是 f(x) 的在 x0 点处的泰勒展开式,也叫做 泰勒公式!而 x0 = 0 只是其中的一个特例,刚刚说过了,叫做 麦克劳林公式!
小宇:哦,原来这个破玩意,就叫做泰勒公式呀!
严格的泰勒公式定义和其证明过程,可以参见《数学分析(第五版)华东师范大学》定理 6.9
闪客:怎么样这回记住了吧!
小宇:嗯嗯,明天我就找那个人算账去!
还没完
小宇:呜呜呜,我又被欺负了!
闪客:怎么了,泰勒公式不是记住了吗?
小宇:但是那个人问我好多更深奥的问题,我没想明白。
闪客:我知道了,他是不是问你,如果一个函数只有 N 阶可导,或者说甚至是不可导的,那还怎么用多项式函数逼近?
小宇:啊对!你怎么知道?
闪客:他是不是还问,为什么我在某一点周围研究如何逼近某个函数,却似乎可以做到即便不在这一点周围,也和这个函数非常接近?
小宇:啊对!你怎么知道?
闪客:他是不是还问,如果要精确计算 e 的数值,泰勒公式是最快的方法么?
小宇:啊!你全都猜对了!
闪客:简单,你请我吃个饭,我再给你讲讲。
--- 完 ---
下方「阅读原文」处有惊喜