作者:「已注销」
链接:https://www.zhihu.com/question/25627482/answer/313088784
来源:知乎

开篇

开篇建议大家到知乎去看原文,csdn把最精髓的图片给屏蔽了。。。欧拉公式和多元函数的泰勒展开是我自己补充的,大家可以回头来看。


泰勒展开

一位物理学家,把这则生活经验应用到他自己的研究中,则会出现下列场景:一辆随意行驶的小车,走出了一个很诡异的轨迹曲线:

物理学家觉得这段轨迹很有意思,也想开车走一段一摸一样的轨迹。

既然是复制,他把刚才关于“仿造”生活经验应用到这里,提出了一个解决办法:

既然想模仿刚才那辆车,那首先应该保证初始位置一样,

继续模仿,让车在初始位置的速度也一样,不满足,继续细化,这次保持位置、在初始位置处的速度一样的同时,保证在初始位置处车的加速度也一样,

不满足,继续细化,这次保证初始位置、初始位置处的速度、初始位置处的加速度都一样,也保证初始位置处的加速度的变化率也一样,

不满足,精益求精,可以一直模仿下去。

物理学家得出结论:

把生活中关于“仿造”的经验运用到运动学问题中:

如果想仿造一段曲线,那么首先应该保证曲线的起始点一样,其次保证起始点处位移随时间的变化率一样(速度相同),再次应该保证前两者相等的同时关于时间的二阶变化率一样(加速度相同)……如果随时间每一阶变化率(每一阶导数)都一样,那这俩曲线肯定是完全等价的


一位数学家,泰勒,某天看到一个函数y=exy=e^xy=ex ,不由地眉头一皱,心里面不断地犯嘀咕:有些函数啊,他就是很恶心,比如这种,还有三角函数,这样的函数本来具有很优秀的品质(可以无限次求导,而且求导还很容易),但是呢,如果是代入数值计算的话,就很难了。比如,看到y=cosxy=cosxy=cosx后,我无法很方便地计算x=2x=2x=2时候的值。

为了避免这种如鲠在喉的感觉,必须得想一个办法让自己避免接触这类函数,即把这类函数替换掉。

可以根据这类函数的图像,仿造一个图像,与原来的图像相类似,这种行为在数学上叫近似。

不扯这个名词。讲讲如何仿造图像。他联想到生活中的仿造经验,联想到物理学家考虑运动学问题时的经验,泰勒首先定性地、大概地思考了一下整体思路。(下面这段只需要理解这个大概意思就可以,不用深究。)面对f(x)=cosxf(x)=cosxf(x)=cosx的图像,泰勒的目的是:仿造一段一模一样的曲线 ,从而避免余弦计算。

想要复制这段曲线,首先得找一个切入点,可以是这条曲线最左端的点,也可以是最右端的点,anyway,可以是这条线上任何一点。

他选了最左边的点。由于这段曲线过(0,1)(0,1)(0,1)这个点,仿造的第一步,就是让仿造的曲线也过这个点,

完成了仿造的第一步,很粗糙,甚至完全看不出来这俩有什么相似的地方,那就继续细节化。开始考虑曲线的变化趋势,即导数,保证在此处的导数相等。

经历了第二步,现在起始点相同了,整体变化趋势相近了,可能看起来有那么点意思了。想进一步精确化,应该考虑凹凸性。高中学过:表征图像的凹凸性的参数为“导数的导数”。

所以,下一步就让二者的导数的导数相等。起始点相同,增减性相同,凹凸性相同后,仿造的函数更像了。

如果再继续细化下去,应该会无限接近。

所以泰勒认为“仿造一段曲线,要先保证起点相同,再保证在此处导数相同,继续保证在此处的导数的导数相同……"

有了整体思路,泰勒准备动手算一算。下面就是严谨的计算了。

先插一句,泰勒知道想仿造一段曲线g(x)g(x)g(x),应该首先在原来曲线上随便选一个点开始,但是为了方便计算,泰勒选择从(0,1)(0,1)(0,1)这个点入手。

把刚才的思路翻译成数学语言,就变成了:首先得让其初始值相等,即g(0)=f(0)g(0)=f(0)g(0)=f(0);

其次,得让这俩函数在x=0x=0x=0处的导数相等,即g′(0)=f′(0)g'(0)=f'(0)g′(0)=f′(0);

再次,得让这俩函数在x=0x=0x=0处的导数的导数相等,即g′′(0)=f′′(0)g''(0)=f''(0)g′′(0)=f′′(0);

……

最终,得让这俩图像在x=0x=0x=0的导数的导数的导数的……的导数也相同。

这时候,泰勒思考了两个问题:

第一个问题,余弦函数能够无限次求导,为了让这两条曲线无限相似,我仿造出来的g(x)g(x)g(x)必须也能够无限次求导,那g(x)g(x)g(x)得是什么样类型的函数呢?

第二个问题,实际操作过程中,肯定不能无限次求导,只需要求几次,就可以达到我想要的精度。那么,实际过程中应该求几次比较合适呢?

综合考虑这两个问题以后,泰勒给出了一个比较折中的方法:令g(x)g(x)g(x)为多项式,多项式能求几次导数呢?视情况而定,比如五次多项式g(x)=a1x5+a2x4+a3x3+a4x2+a5x+a6g(x)=a_1x^5+a_2x^4+a_3x^3+a_4x^2+a_5x+a_6g(x)=a1​x5+a2​x4+a3​x3+a4​x2+a5​x+a6​ ,能求5次导,继续求就都是0了,几次多项式就能求几次导数。

泰勒比我们厉害的地方仅仅在于他想到了把这种生活经验、翻译成数学语言、并运用到仿造函数图像之中。假如告诉你这种思路,静下心来你都能自己推出来。泰勒开始计算,一开始也不清楚到底要求几阶导数。为了发现规律,肯定是从最低次开始。先算个一阶的。

可以看出,除了在(0,1)(0,1)(0,1)这个点,其他的都不重合,不满意。再来个二阶的。

可以看出,在(0,1)(0,1)(0,1)这个点附近的一个小范围内,二者都比较相近。再来个四阶的。

可以看出,仍然是在(0,1)(0,1)(0,1)这个点附近的一个范围内二者很相近。只是,此时二者重合的部分扩大了。到这里,不光是泰勒,我们普通人也能大概想象得到,如果继续继续提高阶数,相似范围继续扩大,无穷高阶后,整个曲线都无限相似。

插个图,利用计算机可以快速实现。

然而泰勒当时没有计算机,他只能手算,他跟我们一样,算到四阶就算不动了,他就开始发呆:刚才为什么这么做来着?哦,对了,是为了计算cos2cos2cos2的时候避免出现余弦。

所以他从最左端(0,1)(0,1)(0,1)处开始计算,算着算着,他没耐心了,可是离着计算x=2x=2x=2还有一段距离,必须得继续算才能把这俩曲线重合的范围辐射到x=2x=2x=2处。

此时,他一拍脑门,恍然大悟,既然我选的点离着我想要的点还远,我为啥不直接选个近点的点呢,反正能从这条曲线上任何一个点作为切入,开始仿造。近了能省很多计算量啊。想计算cos2cos2cos2,可以从cosπ2cos\frac{\pi}{2}cos2π​处开始仿造啊。

所以啊,泰勒展开式就是把一个三角函数或者指数函数或者其他比较难缠的函数用多项式替换掉。

也就是说,有一个原函数f(x)f(x)f(x) ,我再造一个图像与原函数图像相似的多项式函数g(x)g(x)g(x) ,为了保证相似,我只需要保证这俩函数在某一点的初始值相等,1阶导数相等,2阶导数相等,……n阶导数相等。

写到这里,你已经理解了泰勒展开式。如果能理解,即使你记不住泰勒展开式,你都能自己推导。所以,我建议你,考试之前临时死记硬背一下,即使考试因为紧张忘了,也可以现场推。如果不是为了考试,那记不住也没关系,反正记住了一段时间不用,也会忘。用的时候翻书,找不到书就自己推导。

继续说泰勒。

泰勒算到四阶以后就不想算了,所以他想把这种计算过程推广到nnn阶,算出一个代数式,这样直接代数就可以了。泰勒就开始了下面的推导过程。

首先要在曲线f(x)f(x)f(x)上任选一个点,为了方便,就选(0,f(0))(0,f(0))(0,f(0)),设仿造的曲线的解析式为g(x)g(x)g(x),前面说了,仿造的曲线是一个多项式,假设算到nnn阶。

能求nnn次导数的多项式,其最高次数肯定也为nnn。所以,仿造的曲线的解析式肯定是这种形式:

g(x)=a0+a1x+a2x2+...+anxng(x)=a_0+a_1x+a_2x^2+...+a_nx^ng(x)=a0​+a1​x+a2​x2+...+an​xn

前面说过,必须保证初始点相同,即

f(0)=g(0)=a0f(0)=g(0)=a_0f(0)=g(0)=a0​,求出了a0a_0a0​,

接下来,必须保证nnn阶导数依然相等,即

fn(0)=gn(0)f^n(0)=g^n(0)fn(0)=gn(0)

因为对g(x)g(x)g(x)求nnn阶导数时,只有最后一项为非零值,为n!ann!a_nn!an​,由此求出an=fn(0)n!a_n=\frac{f^n(0)}{n!}an​=n!fn(0)​

求出了ana_nan​,剩下的只需要按照这个规律换数字即可。

综上:

g(x)=f(0)+f(1)(0)1!x+f(2)(0)2!x2+...+f(n)(0)n!xng(x)= f(0)+\frac{f^{(1)}(0)}{1!}x+\frac{f^{(2)}(0)}{2!}x^2+...+\frac{f^{(n)}(0)}{n!}x^ng(x)=f(0)+1!f(1)(0)​x+2!f(2)(0)​x2+...+n!f(n)(0)​xn

知道了原理,然后把原理用数学语言描述,只需要两步即可求出以上结果。背不过推一下就行。

泰勒推到这里,又想起了自己刚才那个问题:不一定非要从x=0x=0x=0的地方开始,也可以从(x0,f(x0))(x_0,f(x_0))(x0​,f(x0​))开始。此时,只需要将0换成x0x_0x0​,然后再按照上面一模一样的过程重新来一遍,最后就能得到如下结果:

g(x)=f(x0)+f(1)(x0)1!(x−x0)+f(2)(x0)2!(x−x0)2+...+f(n)(x0)n!(x−x0)ng(x)= f(x_0)+\frac{f^{(1)}(x_0)}{1!}(x-x_0)+\frac{f^{(2)}(x_0)}{2!}(x-x_0)^2+...+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^ng(x)=f(x0​)+1!f(1)(x0​)​(x−x0​)+2!f(2)(x0​)​(x−x0​)2+...+n!f(n)(x0​)​(x−x0​)n

泰勒写到这里,长舒一口气,他写下结论:

有一条解析式很恶心的曲线f(x)f(x)f(x),我可以用多项式仿造一条曲线g(x)g(x)g(x),那么

f(x)≈g(x)=f(x0)+f(1)(x0)1!(x−x0)+f(2)(x0)2!(x−x0)2+...+f(n)(x0)n!(x−x0)nf(x)\approx g(x)= f(x_0)+\frac{f^{(1)}(x_0)}{1!}(x-x_0)+\frac{f^{(2)}(x_0)}{2!}(x-x_0)^2+...+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^nf(x)≈g(x)=f(x0​)+1!f(1)(x0​)​(x−x0​)+2!f(2)(x0​)​(x−x0​)2+...+n!f(n)(x0​)​(x−x0​)n

泰勒指出:在实际操作过程中,可根据精度要求选择n值,只要n不是正无穷,那么,一定要保留上式中的约等号。

若想去掉约等号,可写成下面形式:

f(x)=g(x)=f(x0)+f(1)(x0)1!(x−x0)+f(2)(x0)2!(x−x0)2+...+f(n)(x0)n!(x−x0)n+...f(x)= g(x)= f(x_0)+\frac{f^{(1)}(x_0)}{1!}(x-x_0)+\frac{f^{(2)}(x_0)}{2!}(x-x_0)^2+...+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n+...f(x)=g(x)=f(x0​)+1!f(1)(x0​)​(x−x0​)+2!f(2)(x0​)​(x−x0​)2+...+n!f(n)(x0​)​(x−x0​)n+...

好了,泰勒的故事讲完了。其实真正的数学推导只需要两步,困难的是不理解思想。如果背不过,就临时推导,只需要十几二十秒。


佩亚诺误差项

泰勒的故事讲完了,但是事情没完,因为泰勒没有告诉你,到底该求导几次。于是,剩下一帮人帮他擦屁股。

第一个帮他擦屁股的叫佩亚诺。

他把上面式子中的省略号中的东西给整出来了。然而最终搁浅了,不太好用。

后面拉格朗日又跳出来帮佩亚诺擦屁股。至此故事大结局。

首先讲讲佩亚诺的故事。简单回顾一下,上文提到,泰勒想通过一个多项式函数 的曲线g(x)g(x)g(x),把那些看起来很恶心的函数f(x)f(x)f(x)的曲线给仿造出来。提出了泰勒展开式,也就是下面的第一个式子:

佩亚诺开始思考误差的事。先不说佩亚诺,假如让你思考这个问题,你会有一个怎样的思路?

既然是误差,肯定越小越对吧。所以当我们思考误差的时候,很自然的逻辑就是让这个误差趋近于0。

佩亚诺也是这么想的,他的大方向就是令后面这半部分近似等于0,一旦后半部分很接近0了,那么就可以省去了,只展开到n阶就可以了,泰勒展开就可以用了。但是他不知道如何做到。

后来,他又开始琢磨泰勒的整个思路:先保证初始点位置相同,再保证一阶导数相同,有点相似了,再保证二阶导数相同,更细化了,再保证三阶导数相同……突然灵光闪现:泰勒展开是逐步细化的过程,也就是说,每一项都比前面一项更加精细化(更小)。举个例子,你想把90斤粮食添到100斤,第一次,添了一大把,变成99斤了,第二次,添了一小把,变成99.9斤了,第三次,添了一小撮,变成99.99斤了……每一次抓的粮食,都比前一次抓的少。泰勒展开式里面也是这样的:

由此可见,最后一项(n阶)是最小的。皮亚诺心想:只要让总误差(后面的所有项的总和)比这一项还要小,不就可以把误差忽略了吗?现在的任务就是比较大小,比较泰勒展开式中的最后一项、与误差项的大小,即:

如何比较大小?高中生都知道,比较大小无非就是作差或者作商。不能确定的话,一个个试一下。最终,皮亚诺用的作商。他用误差项除以泰勒展开中的最小的项,整理后得到:

红框内的部分是可以求出具体数字的。佩亚诺写到这里,偷了个懒,直接令xxx趋近于x0x_0x0​,这样,误差项除以泰勒展开中的最小项不就趋近于0了吗?误差项不就趋近于0了吗?

我不知道你们看到这里是什么感觉,可能你觉得佩亚诺好棒,也可能觉得,这不糊弄人嘛。

反正,为了纪念佩亚诺的贡献,大家把上面的误差项成为佩亚诺余项

总结一下佩亚诺的思路:

首先,他把泰勒展开式中没有写出来的那些项补全,

然后,他把这些项之和称为误差项,

之后,他想把误差项变为0,考虑到泰勒展开式中的项越来越小,他就让误差项除以最后一项,试图得到0的结果,

最后发现,只有当xxx趋近于x0x_0x0​时,这个商才趋近于0,索性就这样了。

其实整体思路很简单,当初学不会,无非是因为数学语言描述这么个思路会让人很蒙逼。佩亚诺的故事讲完了,他本想完善泰勒展开,然而,他的成果只能算xxx趋近于x0x_0x0​时的情况。

拉格朗日误差项

这时候,拉格朗日出场了。

拉格朗日的故事说来话长,从头说起吧。话说有一天,拉格朗日显得无聊,思考了一个特别简单的问题:一辆车,从S1S_1S1​处走到S2S_2S2​处,中间用了时间ttt,那么这辆车的平均速度就是v=S1−S2tv=\frac{S_1-S_2}{t}v=tS1​−S2​​,假如有那么一个时刻,这辆车的瞬时速度是小于平均速度vvv的,那么,肯定有一个时刻,这辆车的速度是大于平均速度vvv的,由于车的速度不能突变,从小于vvv逐渐变到大于vvv,肯定有一个瞬间是等于vvv的。

就这个问题,我相信在做的大多数,即使小时候没有听说过拉格朗日,也一定能想明白这个问题。拉格朗日的牛逼之处在于,能把生活中的这种小事翻译成数学语言。他把S−tS-tS−t图像画出来了,高中生都知道,在这个图像中,斜率表征速度:

把上面的这个简单的问题用数学语言描述出来,就是那个被拉格朗日了的定理,简称拉格朗日中值定理:

有个函数S(t)S(t)S(t),如果在一个范围内连续,可求导,则存在ξ\xiξ,使得S(t2)−S(t1)t2−t1=S′(ξ)\frac{S(t_2)-S(t_1)}{t_2-t_1}=S'(\xi)t2​−t1​S(t2​)−S(t1​)​=S′(ξ),

后来啊,拉格朗日的中值定理被柯西看到了,柯西牛逼啊,天生对于算式敏感。柯西认为,纵坐标是横坐标的函数,那我也可以把横坐标写成一个函数啊,于是他提出了柯西中值定理:

S(t2)−S(t1)T(t2)−T(t1)=S′(ξ)T′(ξ)\frac{S(t_2)-S(t_1)}{T(t_2)-T(t_1)}=\frac{S'(\xi)}{T'(\xi)}T(t2​)−T(t1​)S(t2​)−S(t1​)​=T′(ξ)S′(ξ)​

拉格朗日听说了这事,心里愤愤不平,又觉得很可惜,明明是自己的思路,就差这么一步,就让柯西捡便宜了,不过柯西确实说的有道理。这件事给拉格朗日留下了很深的心理阴影。

接下来,拉格朗日开始思考泰勒级数的误差问题,他同佩亚诺一样,只考虑误差部分(见前文)。插一句,各位老铁,接下来拉格朗日的操作绝壁开挂了,我实在是编不出来他的脑回路。首先,跟佩亚诺一样,先把误差项写出来,并设误差项为R(x)R(x)R(x):

误差项R(x)R(x)R(x)中每一项都是俩数的乘积,假如是你,你肯定是想两边同时除掉一个 (x−x0)(n+1)(x-x_0)^{(n+1)}(x−x0​)(n+1),对吧,为了简单,把(x−x0)(n+1)(x-x_0)^{(n+1)}(x−x0​)(n+1)设为T(x):

所以除过之后,就成了:

等等,这一串东西看着怎么眼熟?咦?这不是柯西老哥推广的我的中值定理么?剩下的不就是……:

红框中,脑路之清奇、操作之风骚、画风之诡异、场面之震撼,让我们不禁感慨,拉格朗到底日了什么,脑海里才会想到柯西。

拉格朗日写到这里卡住了,不知道你们有没有这种经验,反正我思考一道数学题的时候,会尝试着把思路进行到底,直到完全进了死胡同才会否定这种思路。有了前面的脑洞,拉格朗日继续复制这种思路,想看看能不能继续往下写:先看分子

再看分母

好巧合,又可以用一次柯西的中值定理了。

总之,按照这种方法,可以一直求解下去,最终的结果就是:

误差项=fn+1(ξ)(n+1)!(x−x0)n+1误差项=\frac{f^{n+1}(\xi)}{(n+1)!}(x-x_0)^{n+1}误差项=(n+1)!fn+1(ξ)​(x−x0​)n+1

至此,拉格朗日把后面无数多的误差项给整合成了一项,而且比配诺亚更加先进的地方在于,不一定非要让xxx趋近于 x0x_0x0​ ,可以在二者之间的任何一个位置ξ\xiξ处展开,极其好用。

本文涵盖泰勒展开式、佩亚诺余项、拉格朗日中值定理、柯西中值定理、拉格朗日余项。全文完毕。


欧拉公式

著名的欧拉公式就是由泰勒展开推出。
下面多看下欧拉公式:

eit=cos(t)+isin(t)e^{it}=cos(t)+isin(t)eit=cos(t)+isin(t)

利用泰勒展开可得:

ex=1+x+12!x2+13!x3+14!x4+...e^x = 1+x+\frac{1}{2!}x^2+\frac{1}{3!}x^3+\frac{1}{4!}x^4+...ex=1+x+2!1​x2+3!1​x3+4!1​x4+...

sinx=x−13!x3+15!x5−...sinx=x-\frac{1}{3!}x^3+\frac{1}{5!}x^5-...sinx=x−3!1​x3+5!1​x5−...

cosx=1−12!x2+14!x4+...cosx = 1-\frac{1}{2!}x^2+\frac{1}{4!}x^4+...cosx=1−2!1​x2+4!1​x4+...

用ititit替换xxx,可得
eit=cos(t)+isin(t)e^{it}=cos(t)+isin(t)eit=cos(t)+isin(t)


多元函数的泰勒展开式

上面我们讲的都是一元函数的泰勒展开:

f(x)≈g(x)=f(x0)+f(1)(x0)1!(x−x0)+f(2)(x0)2!(x−x0)2+...+f(n)(x0)n!(x−x0)nf(x)\approx g(x)= f(x_0)+\frac{f^{(1)}(x_0)}{1!}(x-x_0)+\frac{f^{(2)}(x_0)}{2!}(x-x_0)^2+...+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^nf(x)≈g(x)=f(x0​)+1!f(1)(x0​)​(x−x0​)+2!f(2)(x0​)​(x−x0​)2+...+n!f(n)(x0​)​(x−x0​)n

二阶泰勒展开式为:

f(x)≈g(x)=f(x0)+f(1)(x0)1!(x−x0)+f(2)(x0)2!(x−x0)2f(x)\approx g(x)= f(x_0)+\frac{f^{(1)}(x_0)}{1!}(x-x_0)+\frac{f^{(2)}(x_0)}{2!}(x-x_0)^2f(x)≈g(x)=f(x0​)+1!f(1)(x0​)​(x−x0​)+2!f(2)(x0​)​(x−x0​)2

二元函数的二阶泰勒展开式

下面我们讲多元函数的二阶泰勒展开式。

先以二元函数为例:

f(x,y)≈g(x,y)f(x,y)\approx g(x,y)f(x,y)≈g(x,y)

=f(x0,y0)+fx(1)(x0,y0)1!(x−x0)+fy(1)(x0,y0)1!(y−y0)= f(x_0,y_0)+\frac{f^{(1)}_x(x_0,y_0)}{1!}(x-x_0)+\frac{f^{(1)}_y(x_0,y_0)}{1!}(y-y_0)=f(x0​,y0​)+1!fx(1)​(x0​,y0​)​(x−x0​)+1!fy(1)​(x0​,y0​)​(y−y0​)

+fxx(2)(x0,y0)2!(x−x0)2+fxy(2)(x0,y0)2!(x−x0)(y−y0)+\frac{f^{(2)}_{xx}(x_0,y_0)}{2!}(x-x_0)^2+\frac{f^{(2)}_{xy}(x_0,y_0)}{2!}(x-x_0)(y-y_0)+2!fxx(2)​(x0​,y0​)​(x−x0​)2+2!fxy(2)​(x0​,y0​)​(x−x0​)(y−y0​)

+fyx(2)(x0,y0)2!(y−y0)(x−x0)+fyy(2)(x0,y0)2!(y−y0)2+\frac{f^{(2)}_{yx}(x_0,y_0)}{2!}(y-y_0)(x-x_0)+\frac{f^{(2)}_{yy}(x_0,y_0)}{2!}(y-y_0)^2+2!fyx(2)​(x0​,y0​)​(y−y0​)(x−x0​)+2!fyy(2)​(x0​,y0​)​(y−y0​)2

=f(x0,y0)+[∂f(x0,y0)∂x∂f(x0,y0)∂y][(x−x0)(y−y0)]=f(x_0,y_0)+ \begin{bmatrix} \frac{\partial f(x_0,y_0)}{\partial x} & \frac{\partial f(x_0,y_0)}{\partial y} \end{bmatrix} \begin{bmatrix} (x-x_0) \\ (y-y_0) \end{bmatrix}=f(x0​,y0​)+[∂x∂f(x0​,y0​)​​∂y∂f(x0​,y0​)​​][(x−x0​)(y−y0​)​]

+12[(x−x0)(y−y0)][∂2f(x0,y0)∂x2∂2f(x0,y0)∂x∂y∂2f(x0,y0)∂y∂x∂2f(x0,y0)∂y2][(x−x0)(y−y0)]+\frac{1}{2} \begin{bmatrix} (x-x_0) & (y-y_0) \end{bmatrix} \begin{bmatrix} \frac{\partial^2 f(x_0,y_0)}{\partial x^2} & \frac{\partial^2 f(x_0,y_0)}{\partial x\partial y} \\ \frac{\partial^2 f(x_0,y_0)}{\partial y\partial x} & \frac{\partial^2 f(x_0,y_0)}{\partial y^2} \end{bmatrix} \begin{bmatrix} (x-x_0) \\ (y-y_0) \end{bmatrix}+21​[(x−x0​)​(y−y0​)​][∂x2∂2f(x0​,y0​)​∂y∂x∂2f(x0​,y0​)​​∂x∂y∂2f(x0​,y0​)​∂y2∂2f(x0​,y0​)​​][(x−x0​)(y−y0​)​]

令∇2f(x0,y0)=[∂2f(x0,y0)∂x2∂2f(x0,y0)∂x∂y∂2f(x0,y0)∂y∂x∂2f(x0,y0)∂y2]\nabla^2f(x_0,y_0)=\begin{bmatrix} \frac{\partial^2 f(x_0,y_0)}{\partial x^2} & \frac{\partial^2 f(x_0,y_0)}{\partial x\partial y} \\ \frac{\partial^2 f(x_0,y_0)}{\partial y\partial x} & \frac{\partial^2 f(x_0,y_0)}{\partial y^2} \end{bmatrix}∇2f(x0​,y0​)=[∂x2∂2f(x0​,y0​)​∂y∂x∂2f(x0​,y0​)​​∂x∂y∂2f(x0​,y0​)​∂y2∂2f(x0​,y0​)​​],∇2f\nabla^2f∇2f为fff的海森矩阵(Hessian Matrix)

令∇f(x0,y0)=[∂f(x0,y0)∂x∂f(x0,y0)∂y]\nabla f(x_0,y_0)=\begin{bmatrix} \frac{\partial f(x_0,y_0)}{\partial x} & \frac{\partial f(x_0,y_0)}{\partial y} \end{bmatrix}∇f(x0​,y0​)=[∂x∂f(x0​,y0​)​​∂y∂f(x0​,y0​)​​]

所以二元函数的二阶泰勒展开式为:

f(x,y)≈g(x,y)=f(x0,y0)+∇f(x0,y0)[(x−x0)(y−y0)]f(x,y)\approx g(x,y)= f(x_0,y_0)+\nabla f(x_0,y_0)\begin{bmatrix} (x-x_0) & (y-y_0) \end{bmatrix}f(x,y)≈g(x,y)=f(x0​,y0​)+∇f(x0​,y0​)[(x−x0​)​(y−y0​)​]

+12[(x−x0)(y−y0)]∇2f(x0,y0)[(x−x0)(y−y0)]+\frac{1}{2} \begin{bmatrix} (x-x_0) & (y-y_0) \end{bmatrix}\nabla^2 f(x_0,y_0) \begin{bmatrix} (x-x_0) \\ (y-y_0) \end{bmatrix}+21​[(x−x0​)​(y−y0​)​]∇2f(x0​,y0​)[(x−x0​)(y−y0​)​]

多元函数的二阶泰勒展开式

f(x)≈g(x)=f(x0)+∇f(x0)(x−x0)+12(x−x0)T∇2f(x0)(x−x0)f(\mathbf{x})\approx g(\mathbf{x})=f(\mathbf{x}_0)+\nabla f(\mathbf{x}_0)(\mathbf{x}-\mathbf{x}_0)+\frac{1}{2}(\mathbf{x}-\mathbf{x}_0)^T\nabla^2f(\mathbf{x}_0)(\mathbf{x}-\mathbf{x}_0)f(x)≈g(x)=f(x0​)+∇f(x0​)(x−x0​)+21​(x−x0​)T∇2f(x0​)(x−x0​)

其中x\mathbf{x}x是向量,
∇f\nabla f∇f为fff的梯度向量,
∇2f\nabla^2f∇2f为fff的海森矩阵(Hessian Matrix),
其定义分别为:
∇f=[∂f∂x1∂f∂x2...∂f∂xN],∇2f=[∂2f∂x12∂2f∂x1x2...∂2f∂x1xN∂2f∂x2x1∂2f∂x22...∂2f∂x2xN............∂2f∂xNx1∂2f∂xNx2...∂2f∂xN2]N×N\nabla f=\begin{bmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ ...\\ \frac{\partial f}{\partial x_N} \end{bmatrix},\nabla^2 f=\begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1x_2} & ... & \frac{\partial^2 f}{\partial x_1x_N}\\ \frac{\partial^2 f}{\partial x_2x_1} & \frac{\partial^2 f}{\partial x_2^2} & ... & \frac{\partial^2 f}{\partial x_2x_N}\\ ...&...&...&...\\ \frac{\partial^2 f}{\partial x_Nx_1} & \frac{\partial^2 f}{\partial x_Nx_2} & ... & \frac{\partial^2 f}{\partial x_N^2}\\ \end{bmatrix}_{N\times N}∇f=⎣⎢⎢⎢⎡​∂x1​∂f​∂x2​∂f​...∂xN​∂f​​⎦⎥⎥⎥⎤​,∇2f=⎣⎢⎢⎢⎢⎡​∂x12​∂2f​∂x2​x1​∂2f​...∂xN​x1​∂2f​​∂x1​x2​∂2f​∂x22​∂2f​...∂xN​x2​∂2f​​............​∂x1​xN​∂2f​∂x2​xN​∂2f​...∂xN2​∂2f​​⎦⎥⎥⎥⎥⎤​N×N​

注意,∇f\nabla f∇f和∇2f\nabla^2f∇2f中的元素均为关于x\mathbf{x}x的函数,以下分别将其记为g\mathbf{g}g和HHH。特别的,若fff的混合偏导数可以交换次序(即对任意i,ji,ji,j,成立∂2f∂xi∂xj=∂2f∂xj∂xi\frac{\partial^2f}{\partial x_i\partial x_j}=\frac{\partial^2f}{\partial x_j\partial x_i}∂xi​∂xj​∂2f​=∂xj​∂xi​∂2f​),则海森矩阵HHH为对称矩阵,而∇f(xk)\nabla f(\mathbf{x}_k)∇f(xk​)和∇2f(xk)\nabla^2f(\mathbf{x}_k)∇2f(xk​)则表示将x\mathbf{x}x取为xk\mathbf{x}_kxk​后得到的实值向量和矩阵,以下分别将其记为gk\mathbf{g}_kgk​和HkH_kHk​(这里字母g\mathbf{g}g表示gradient,HHH表示Hessian)

如何形象的理解泰勒展开相关推荐

  1. 生动形象的理解什么是装饰器!

    装饰器 装饰器是程序开发中经常会用到的一个功能,用好了装饰器,开发效率如虎添翼,所以这也是Python面试中必问的问题,但对于好多初次接触这个知识的人来讲,这个功能有点绕,自学时直接绕过去了,然后面试 ...

  2. 如何形象地理解 Python 中的 int 类型是任意精度这一概念?

    什么,Python 有类型吗?当然有,只是不需显示的声明而已,大概也涉及类型推导机制吧. Python 基本数据类型 >>> a = 10 >>> type(a) ...

  3. 梯度的直观理解_如何直观形象的理解梯度,散度,旋度?

    这是我以前看到有人这么解释,比较形象,希望对你有帮助. 梯度: 运算的对像是纯量,运算出来的结果会是向量在一个标量场中, 梯度的计算结果会是"在每个位置都算出一个向量,而这个向量的方向会是在 ...

  4. 如何形象地理解涌现?

    涌现(emergence) 自2022年12月 chatGPT3.5 推出以来,关于AI.大语言模型(LLM)的讨论就一片火热,也带起了股票市场的一波炒作浪潮. 本文专门针对"涌现" ...

  5. 生动形象的理解API是如何工作的!

    API(Application Programming Interface,应用程序编程接口) 简单来说,就是其他人开发出来一块程序,你想用,他会告诉你调用哪个函数,给这个函数传什么参数,然后又会返回 ...

  6. 如何形象地理解四元数?

    根据我的理解,大多数人用汉密尔顿四元数就只是做三维空间的旋转变换(我反正没见过其他用法).那么你不用学群论,甚至不用复习线性代数,看我下面的几张图就可以了. 首先,定义一个你需要做的旋转.旋转轴为向量 ...

  7. 减极性和同名端(最形象的理解二节干电池串联时(手电筒)+ - 相接时电压相加,-  -相接时,端电压的压差电压相减)

    百度百科   减极性 变压器的一次绕组的电流P1进,P2出时,一次绕组上的外加电动势与自感电动势相同,P1为+,P2为-:再说二次:这时的二次侧为K1流出,K2流入,说明二次绕组的感应电动势是K1为+ ...

  8. 形象快速理解贝叶斯定理

    理解概率概念对于机器学习工程师或数据科学专业人员来说是必须的.许多数据科学挑战性问题的解决方案本质上是从概率视角解决的.因此,更好地理解概率将有助于更有效地理解和实现这些算法. 每当你阅读任何概率书. ...

  9. 高等数学:如何理解泰勒展开公式?等价无穷小与泰勒公式的关系是什么?

    泰勒公式 & 等价无穷小的关系 直接说结论: 等价无穷小只是泰勒公式在某个固定阶数上(通常为1阶)的特例. 盲目的使用"等价无穷小"替换,会使你的整个式子丢失"高 ...

  10. 【解释比较形象好理解】你稀里糊涂学的算法复杂度,原来这么简单!

    转自:https://mp.weixin.qq.com/s/aFdpF2uk4UP5lKMmyZ8t9g

最新文章

  1. VS2008中Web Reference和Service Reference的区别
  2. docwizard c++程序文档自动生成工具_工具用的好,老师下班早!老师的高效办公利器都在这!...
  3. JDK 1.5 主要新特性
  4. “Z世代”崛起,网易云信助力猫耳FM引领声音风潮
  5. ip访问次数统计 nginx_Linux分析Nginx日志统计IP访问次数的shell脚本
  6. python 预测算法_Python 与金融数据使用机器学习算法预测交易策略
  7. 网站目录爆破的扫描器的思路
  8. python中凯撒密码加密_凯撒密码加密
  9. 1091 Acute Stroke (30 分)广度优先搜索,用queue,重写一遍
  10. Python >>> 基于UDP 协议的实时网络视频传输
  11. 《Java性能优化权威指南》读书笔记
  12. onpropertychange
  13. 图片加密信息(16进制)
  14. Java日志门面担当-SLF4J
  15. AS3实现经典算法(一) 斐波纳契数列
  16. pandas.Series.str.extract 正则提取数据
  17. 捷得(Joget DX)产品发展路线图
  18. [QDialog]qt虚拟键盘的实现以及qdateedit实现打开虚拟键盘
  19. nRF52832 定时器REPEATED模式,导致异常重启的问题排查全过程
  20. 【毕业设计_课程设计】基于神经网络学习的在线纸币识别【源码+论文】

热门文章

  1. UltraLAB台式图形工作站(地球最快~超级图形工作站Alpha720介绍)
  2. android 分辨率转换器,Nevercenter Pixelmash(图片像素转换器) v202010 官方版
  3. 铁路订票系统的简单设计(转)
  4. linux操作系统拼音,linux怎么读(中文读音发音)
  5. 台式计算机c盘怎么清理空间,怎么样清理台式机c盘空间
  6. JP1081B/9700_USB网卡驱动
  7. 金融工程学(六):互换的定价与风险分析
  8. IntelliJ IDEA Dependency 'XXXX' not found 或 java:程序包XXXX不存在,找不到的解决方案
  9. 全国计算机软件专业二本大学排名,2017全国二本大学专业排名
  10. 用计算机拜年祝福语,新年大吉拜年短信 适合春节发的祝福语说说