对于一个一次函数 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Δx→0f(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)=xa 的 a 次导数就是就 a!。
- (xa)′=axa−1
- (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!x1,ai=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!x0−12!x2+14!x4
拟合函数图像如下:

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

在这里有 n 小于等于 16 的交互式图像。cos x 的泰勒展开
可以发现,随着 n 的增大,g(x) 的图像无限逼近 f(x)。当 n→+∞,两个函数的曲率相等。因此,可以将展开写成这样的形式:
g(x)=+∞∑i=0(−1)i+x2i(2i)!
这种从 0 开始展开的式子被称为 麦克劳林展开。一般来说,麦克劳林展开有公式
g(x)=n∑i=0f(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=0xii!+Rn(x)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库