Logo
Section 1 / 8

简介

了解导数及其在优化中的重要性。

导入

简介

了解导数及其在优化中的重要性。

优化的目标是找到使函数值最小的点。我们已经看到,这样的点可能存在,也可能不存在。但如何判断它确实存在呢?有没有方法可以找到它?

我们之前通过绘制函数图像来分析问题。虽然图像能帮助我们直观理解函数的形态,但仅凭观察图像来精确确定函数的最小值点,在大多数情况下几乎是不可能的。

例如,回顾一下汽水罐问题中的函数图像。在该问题中,我们需要找出能够容纳特定体积汽水的最小表面积的圆柱形罐子。

...
描述汽水罐表面积的函数图像

从这张图像中,我们无法准确判断函数的最小值点。如果我们没有添加约束条件 r≥5r \ge 5,函数的最小值会出现在哪里?是在 x=3.3x = 3.3 还是 x=3.95x = 3.95?此外,我们只能看到函数在某个有限区间内的图像,而无法观察其在整个 xx 和 yy 轴无限延伸范围内的行为。到目前为止我们遇到的函数都比较简单,因此可以大致推测出区间外的趋势。但对于包含对数、指数或三角函数的复杂函数,我们又如何确定其在可见边界之外的行为呢?更进一步,有些问题涉及多个变量的函数,甚至无法进行可视化绘图。面对这类问题,我们该如何处理?

正因如此,我们需要从另一个角度来思考优化问题。幸运的是,我们有一些强有力的工具可以帮助我们更稳健、更准确地解决优化问题。其中之一就是微积分,特别是微分学。

微分学的核心是导数和梯度。这些是函数的属性,能够在不依赖图像的情况下提供大量信息。在本课中,我们将介绍导数的概念,并将其应用于解析求解我们之前遇到的一些问题。

注意:我们假设学习者了解基本导数的计算方法。但即使不了解也没关系,因为后续我们会使用 Python 自动完成导数的计算。

什么是导数?

当我们绘制一个函数时,实际上是在二维平面上画出符合该函数公式的一条曲线。当我们从左向右观察这条曲线时,可以看到它根据函数公式上升或下降。那么,是否有一种方法可以在不查看图像的情况下预测函数何时上升、何时下降?

答案是肯定的!我们可以直接从函数的表达式中推断出它的变化趋势——这正是通过求导实现的。

函数的导数可以被理解为:当自变量 xx 发生变化时,函数值的变化速率。它也可以看作是函数在某一点处切线的斜率。下图展示了导数的几何意义。

...
函数在某一点处切线的斜率

当函数上的两个点逐渐靠近时,连接这两点的直线就越来越接近于函数在该点处的切线。注意前一张图中,随着两点不断靠近,连接它们的直线发生了变化;到了第三张图中,两点几乎重合,成为同一个点,此时连接它们的直线就是该点的切线。

一条直线的斜率决定了它的倾斜程度。斜率的绝对值越大,倾斜角越大。同时,斜率的正负决定了直线是向上(正斜率)还是向下(负斜率)。

函数 f(x)f(x) 相对于 xx 的变化率可表示为:

f′(x)=f(x)−f(x0)x−x0f'(x) = \frac{f(x) - f(x_0)}{x - x_0}

其中 x0x_0 是函数定义域中的任意一点。注意,f′f' 本身也是一个关于 xx 的函数。

正如前面图示所示,我们可以让 xx 无限趋近于 x0x_0,使得两者几乎重合。这一思想在微积分中通过极限概念来表达:

f′(x0)=lim⁡x→x0f(x)−f(x0)x−x0f'(x_0) = \lim_{x \to x_0} \frac{f(x) - f(x_0)}{x - x_0}

对这些公式不熟悉的读者不必担心。关键在于:导数是一个新的函数,通常记作 f′f' 或 ∂f∂x\frac{\partial f}{\partial x}。

这个新函数——导数,在给定某个 xx 值处取值时,给出的就是原函数在该点处切线的斜率。如下图所示。

...
函数在递增与递减区间处的导数

图中黑线和绿线的斜率即为导数值。若导数为负,说明函数在该点附近正在下降;若导数为正,则说明函数在该点附近正在上升。

那么,这对我们解决优化问题有什么帮助呢?

在接下来的课程中,我们将深入探讨导数在优化问题中的应用。

简介

导数