查看原文
其他

有启发:一种很巧妙的数学求极值方法,看看牛顿大师是如何思考极值问题的?

Masir123 科学羊 2024-03-30


大家好,我是科学羊🐑,这里是数学专栏第2季第25篇。


今天,我们来聊聊微积分背后另一个重要的应用——求极值!我想说这个方法真是太有趣了...


求极值,实际是每年考研数学必考的内容,而且也是一个特别简单又特别实用的“送分题”,且看本篇解读。


我记得我们高中所学数学的求极值问题很多是基于公式,或者通过几何法,当然这些都是纯数学以实际函数来求解的。


高等数学在现实生活中的广泛应用之一是最优化问题的处理。比如,备受瞩目的机器学习为例,其本质是对目标函数进行最优化处理。


此外,在金融领域的结构化投资产品、商业博弈论,乃至企业管理中的各类规划,都涉及不同形式的最优化。


何为最优化?


就是第一名和倒数第一名!


也就是说,最优化的最基本形式,是大家熟悉的求函数的最大值或最小值。由于这两种问题本质相同,解法类似,我们以寻求最大值为例来探讨。


对有限集合而言,寻找最大值相对简单,例如在计算机科学中众多寻找最大值的算法。


这些算法核心就是进行大小比较。若一个元素在直接或间接比较中始终大于其他所有元素,那么它便是最大值。

FindLargest 计算机算法


然而,在无限集合的函数中,这种方法就不再适用,因为不可能检验所有可能性。


如何解决呢?中学数学便开始引入解题技巧。


那么,我们通常如何求解最大值呢?



一个经典技巧是求解抛物线的最大值。


例如,如上图,考虑函数y = -x^2 + 4x,其最大值是多少?


从直觉上,我们可以预见到这个函数具有最大值,原因有二:


一是无论x取何值,y总是有限数而非无穷,一定有个定值;


二是当x趋于∞无穷时,y趋向于负-∞无穷。因此,我们推测函数在中间某处达到最大值,但具体位置难以确定。


很多人会尝试代入几个数值。


例如,x=0时,y=0;x=1时,y=3;x=2时,y=4,但之后y开始减小。


那么我们能断定y的最大值是4吗?


通过绘制函数图像,我们可以看到最大值约为4。


但数学要求我们证明,而非我们猜测和观察。


在中学里,我们学习了一种技巧来解决这类问题,如下:


解:由  ,可得,


很明显, 。4是常数,不随x变化。


因此,y的最大值出现在-(x-2)^2为零时,此时y=4。


这种技巧能解决一类抛物线问题,但面对其他类型问题时,就显得无能为力。



例如,函数y = x^3 - 12x^2 + 4x + 8在0至15区间的最大值或最小值问题,传统方法就不适用了。


因此,仅凭掌握某种技巧获得高分,并不足以引以为豪,因为这些经验难以推广解决普遍性问题。


在伽利略之前,人类面对的最优化问题并不多。


弹道轨迹就是一个抛物线


但到了伽利略和开普勒时代,物理学和天文学领域的最优化问题逐渐增多,如行星运动的近日点和远日点距离、弹道距离、望远镜透镜曲率与放大倍数等。

1. 在远日点的行星。2. 在近日点的行星。3. 太阳。图示未依照比例,来WIKI


这要求人们系统地解决最优化问题,而不仅依赖技巧。这一挑战最终由牛顿接手。


那么,牛顿是如何求解最大值的呢?


牛顿的伟大之处在于,他没有将最优化问题视为简单的数量大小比较问题,而是将其视为研究函数动态变化趋势的问题,这一点至关重要。


让我们从求抛物线最高点的问题来理解牛顿的思想,为了便于理解,我们关注最高点附近的变化。


我们知道,曲线瞬间变化的速率即为该点切线的斜率,也就是导数。为了加深理解,我们看看先下面这个抛物线在最高点附近的斜率变化图。

抛物线在最大值附近切线斜率(即导数)的变化,图片来《吴军数学通识讲义》


在图中,上半部分是前述抛物线,横轴被放大了一倍,以更清楚显示曲线变化细节。


各色曲线代表不同点的切线。可以看出,从左到右,抛物线由快变慢,至平稳,最后下降。


切线由陡峭变平缓,最高点处变为水平线,随后斜率转负。


量化分析显示,在x=0处,切线斜率(导数)为4。


到x=0.5时,斜率减至3,然后依次减至2,1,0,-1,-2等。


因此,若将导数函数绘入图中,就呈现出一条直虚线。


对比抛物线与导数(虚直线),你是否注意到,曲线达到最高点时,切线恰为水平,导数为零?


这并非巧合。


若回顾最大值和导数的定义,两者之间的一致性便不难理解。


最大值的含义在于,某点a的函数值f(a)比周围点都大。从最大值点稍微偏移,会发现那些点的函数值略小。


在二维图上,这意味着与左右邻点比较。


左侧点的函数值小于a,表明左侧点变化趋势向上,导数正;


右侧点亦小于a,表明变化趋势向下,导数负。从正导数转为负导数的过程中,必经过导数为零的点,即最大值所在。


因此,寻找函数f(x)的最大值,转化为寻找导数f’(x)为零的点的问题。这一过程实际上是解方程,相比直接求最大值更为简单。


这种思路正是牛顿区别于前人的地方。他没有直接解决难题,而是将比较数值大小的问题转化为寻找函数变化拐点的问题,


后者更易解决。但要将这两个问题等同,需要一种新工具——导数。


有了导数,求最大值的问题转化为解方程问题。


这一方法的优势在于,它适用于任何函数,无需为每种特定函数寻找解题技巧。这也是微积分成为强大数学工具的原因。


有没有感觉,就是想你遇到一个困难,其实可以反其道而行之,可以从侧面入手来解决,到时候皆大欢喜!


但不过,种方法并非完美无瑕。



例如,对于立方函数f(x) = x^3,其导数f’(x) = 3x^2。


当x=0时,导数为零,但x=0并非f(x)的最大值点,因为立方函数的最大值最终趋于无穷大。


为何立方函数上述方法不适用?可参考下图解。


f(x)=x^3 | 图片来《吴军数学通识讲义》


图中显示,立方函数起初斜率很大,逐渐减小至零。然而,在变为零后,它没有进一步减小进入负数区间,而是重新增大。问题的原因便在此。


解决方法是,在找到导数为零的点后,检查其前后点的导数符号是否从正转负。


若是,则为最大值点;否则不是。这样补救了一处漏洞。


导数求最大值的方法还有其他漏洞,例如下述函数。


它有两个导数为零的点,均符合导数从正转负的条件,但最大值只有一个。


左侧点高于右侧,因此左侧为真正最大值,右侧为次之。



图片来《吴军数学通识讲义》


对此情况,数学家们首先更精确地定义了最大值。他们将最大值分为两类:


  1. 是极大值或局部最大值,即某点的函数值仅需比周围点高;

  2. 是整个函数的最大值。


因此,一个函数可以有多个极大值,但只能有一个最大值。


这样,最大值的定义便无矛盾。


但如何在众多局部极大值中找到最大值呢?遗憾的是,目前仍无系统方法解决此问题,只能逐一比较。


实际上,这也是计算机进行机器学习时面临的一大挑战,尚未得到解决。


我们常认为计算机经长期训练后找到了最大值,但事后发现所找仅为众多局部极大值之一。


总结:在过去,寻找最大值是逐一比较数字大小的过程,将数字变化视为孤立事件,难以找到通用求最大值方法。


牛顿等人通过研究函数变化趋势,发明了一种追踪函数从低到高,至平稳,再下降的变化过程来求最大值的方法,使人类对事物的理解由静态转向动态。


这种方法通用,不局限于特定问题技巧。当然,这种方法也有漏洞,我们需逐一弥补。


另外,两点启发,


第一点,值得关注的就是前人把坑留给了牛顿,牛顿最终通过自己的方法解决了了极值的计算问题,我只能说牛顿是一个模型思考者的高手。


他就数据模型化通过公式间接去思考问题,从侧面反映事物的本质,值得学习!这也是目前科学和工程常用的方法。


第二点,对于三次方函数和其他波动函数的极值问题,虽然最后都会通过 if 判断进行解决,但是一个模型就可以过滤掉几乎多大半需要思考的问题,留下来的只是小部分的问题处理。


所以综合两点可以看出,我们做事情,也要能找到自己的模型,可以快速帮助我们简化操作步骤提高效率才是王道。


好了,今天就先这样啦~


科学羊🐏  2024/02/02

祝幸福~


参考文献:

[1].《吴军数学通识讲义》



感恩遇见,喜欢的话点个【在看】,有你们的支持是我最大的动力!


往期推荐



灵魂拷问:近300年的数学知识,为何没有踏进过中学教室的大门?

其实,我们中学物理所求S=vt方法是骗人的,真实世界的求解方法其实是这样的!

原来,微积分的起源和用法这样的,简直就是一门哲学!

嘘!无穷小,也能比较大小呢?其实多小也能比较!

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存