浅谈泰勒展开

什么是导数

对于一个一次函数 f(x)=kx+b 来说,我们发现 x 每增加一个单位长度,f(x) 都会相应的增加 k 个单位长度。k 就被称为一次函数 f(x)=kx+b 的斜率。

同样的,我们想要推广到 f(x)=x2 上。但我们发现对于 x0,将它增加 Δx 之后,f(x0) 增加的大小并不一定一样。因此我们发明了导数。


对于一个特定的 x,我们将 x 附近极小范围内的一段函数斜率记为函数 f(x)x 的导数,记作 f(x)

将上面的文字数学化,即为:

f(x)=limΔx0f(x+Δx)f(x)Δx

花费一点时间,可以发现导数运算的一些规律:

  • (f(x)+g(x))=f(x)+g(x)
  • (f(x)g(x))=f(x)g(x)
  • (f(x)g(x))=f(x)g(x)+f(x)g(x)
  • (f(x)g(x))=f(x)g(x)f(x)g(x)g(x)2

同时,我们将 f(x) 写作 f(x)(2),表示 f(x) 的二阶导数,也就是求导两次。

可以发现,f(x)=xaa 次导数就是就 a!

一些常用导数

  • (xa)=axa1
  • (ex)=ex
  • (sinx)=cosx
  • (cosx)=sinx

什么是泰勒展开

老祖宗告诉我们,计算一个函数,我们更喜欢计算多项式,而不喜欢计算 sinx 这样的东西。

因此,我们希望找到一个多项式来代替 sinx,cosx 这样的函数。这种方法叫做泰勒展开。

先考虑一个简单情况,我们希望用多项式拟合 f(x)=cosx 这个函数。记这个多项式为 g(x)=a0x0+a1x1+a2x2++anxn,把 g(x)(i) 定义为 g(x) 的第 i 项。

首先在 x=0 处进行拟合。首先要让 g(0) 的函数值与 f(0) 相等吧?所以 g(0)(0)=f(0)=1。我们称之为线性逼近。

拟合函数如下:

可以发现,g(x)f(x) 拟合度很差,仅在 x=0 时函数值相等,还需要继续改进。

我们可以让 g(0)(1)f(0) 导数相等,不妨设 g(x)(1)=ai1!x1ai=f(0)(1)=(cos0)(1)=sin0=0。所以 g(x)(1)=0。我们称为一次逼近。这时 g(x)=1

同样的,我们可以推广到二次逼近,也就是让 a2=f(0)(2)=(cos0)(2)=cos0=1。这时 g(x)=1+12!x2。拟合函数如下:

可以发现,这时的拟合比第一次准确的多。

当然,我们也可以考虑四次逼近,八次逼近。四次逼近时要让 a3=f(0)(3),a4=f(0)(4)

这里给出四次逼近的式子:

g(x)=f(0)0!x0+f(0)(1)1!x1+f(0)(2)2!x2+f(0)(3)3!x3+f(0)(4)4!x4

即为:

g(x)=10!x0+01!x1+12!x2+03!x3+14!x4

g(x)=10!x012!x2+14!x4

拟合函数图像如下:

同样的,八次逼近的图像如下:

在这里有 n 小于等于 16 的交互式图像。cos x 的泰勒展开

可以发现,随着 n 的增大,g(x) 的图像无限逼近 f(x)。当 n+,两个函数的曲率相等。因此,可以将展开写成这样的形式:

g(x)=i=0+(1)i+x2i(2i)!

这种从 0 开始展开的式子被称为 麦克劳林展开。一般来说,麦克劳林展开有公式

g(x)=i=0nf(0)(i)i!xi+Rn(x)

这里的 Rnx 指皮亚诺余项,可以理解为误差。

常见的麦克劳林展开有下面几种:

  • sinx=i=0+(1)i(x2i+1)(2i+1)!+Rn(x)
  • cosx=i=0+(1)ix2i(2i)!+Rn(x)
  • ex=i=0+xii!+Rn(x)
posted @   Link-Cut-Y  阅读(336)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示