本文从无穷小的角度对微积分的来由做了简单介绍,希望从另外一个视角看待微分与积分。
有趣的微积分
印象里我是上大一才开始学习微积分的,那个时候觉得学这个只是为了考试,抱着考高分拿奖学金的心态,没太意识到它的真实作用,随着工作年头的增加,对它的认识也从粗浅变得没那么粗浅了,微积分真的是一个伟大的发明,它已经改变了人类的进程并且在未来也将继续改变。 本文是对相关知识的回顾,大部分学习内容来源于《微积分的力量》这本书,温故而知新。(ps:中国先秦时代的思想依然指引着我们)
变化率与导数
俗话说变化才是这个世界永恒不变的主题,有变化就有变化率,而世间因果或者相关关系总是由因变量和自变量组成:\(y=f(x)\),变化率即是刻画由于自变量的变化导致因变量变化的“多块?”、“多陡?”、“多不稳定?”、“多......?”,通常表示为:\(\frac{\Delta y}{\Delta x}\),想象我们去爬下面的两座山:
显然,黑色的山,我们从山脚爬到山顶的加速度是恒定不变的,在任何一个点爬山难度都一样(忽略越往高空气越稀薄之类的因素:)),而红色的山陡峭不一,山脚的加速度和山腰的加速度完全不一样,在任何一点爬山难度不一样且越往高处爬越难。其实现实中的问题变化率几乎不太可能是恒定的,所以如何定义不断改变的变化率是微积分要解决的大难题之一。
最直观的理解是:变化率不再是一个恒定值,它是一个函数。怎么定义这个函数呢?我们的祖先给了答案,当一个大的问题太复杂无法一下子解决,古人教我们先把它变成一系列小问题,所有小问题解决则大问题也随之解决。这就是微分学要做的事:依据无穷小法则把这些小问题拆解为无穷小的小问题,分析和解决这些小问题后,利用积分学把它们重新组合起来,而定义变化率函数的这个问题就是通过定义导数来拆解解决的,即:\(\frac{dy}{dx}\),里面的\(dx\)、\(dy\)就是这些无穷小的问题,所以从另一个角度看,微积分就是描述“变化”的数学。
微积分有三大核心问题:
- 问题1:已知曲线的函数形式,求曲线任意一点的斜率
- 问题2:已知曲线的斜率函数,求曲线函数形式
- 问题3:已知曲线的函数形式及其上任意一点,求曲线在该点下方的面积
看这个图,可以得出3个基本结论:
1、斜率衡量的是这条曲线的变化率
2、问题1与问题2是对偶问题(Duality)
3、面积衡量的是变化率的累积(Cumulative)
线性函数变化率
自变量和因变量呈现线性关系可以近似生活中的很多场景,比如,汽车的均速直线运动,再比如上面的理想爬山运动:
不管是大人迈一次步子,还是3岁小孩儿迈一次步子,高度的变化率总是一定的。 在机器学习中有一类叫广义线性模型(GLM)的方法就是把现实问题做了一系列假设,让它变成一个线性问题,这样问题建模和求解起来就简单了很多。
非线性函数变化率
自变量和因变量呈现非线性关系其实才是现实世界的主流,比如,钟摆运动画出的弧线、爬山运动等等。这些函数的特点是其上任何一点的变化率都不一样,以\(y=x^2\)为例:
我们要解决的问题是:如何得到这个抛物线上任何一点的切线斜率? 从最简单情况来看,原点(0,0)的切线显然是横轴,它是水平的,所以切线斜率为0,其他点就没那么明显了,我们模仿2000年前阿基米德求圆周率的做法,用无穷原则把曲线切分成无穷多个小线段,以图中(0.5,0.25)为例,取上图\(x<0.7\)那部分的图像:
可以看到曲线没那么弯曲了,更进一步,我们取\(0.49<x<0.51\)这部分图像:
曲线看上去几乎成为直线了,这个时候切线的斜率是:\(\frac{dy}{dx}=\lim\limits_{\Delta x \to 0}{\frac{\Delta y}{\Delta x}}\),写个小程序模拟这个无穷小和自变量的关系:
1 | #!/usr/bin/python |
\(\frac{dy}{dx}\) | \(2x\) |
---|---|
1.0098999999999982 | 1.0 |
1.009800000000002 | 1.0 |
1.0096999999999992 | 1.0 |
1.0096000000000007 | 1.0 |
1.0095000000000014 | 1.0 |
1.009400000000001 | 1.0 |
1.0092999999999994 | 1.0 |
1.0092000000000028 | 1.0 |
1.0090999999999988 | 1.0 |
1.0089999999999997 | 1.0 |
1.0088999999999995 | 1.0 |
1.0087999999999981 | 1.0 |
1.008700000000002 | 1.0 |
1.0085999999999982 | 1.0 |
1.0084999999999995 | 1.0 |
1.0083999999999997 | 1.0 |
1.0082999999999986 | 1.0 |
1.0082000000000029 | 1.0 |
1.0080999999999993 | 1.0 |
1.0080000000000011 | 1.0 |
1.0079000000000016 | 1.0 |
1.0078000000000007 | 1.0 |
1.0076999999999987 | 1.0 |
1.0076000000000023 | 1.0 |
1.0074999999999972 | 1.0 |
1.0073999999999983 | 1.0 |
1.0072999999999979 | 1.0 |
1.0072000000000034 | 1.0 |
1.0071 | 1.0 |
1.007000000000003 | 1.0 |
1.0068999999999966 | 1.0 |
1.0067999999999964 | 1.0 |
1.0067000000000028 | 1.0 |
1.0065999999999997 | 1.0 |
1.0065000000000033 | 1.0 |
1.0063999999999966 | 1.0 |
1.006299999999997 | 1.0 |
1.0061999999999955 | 1.0 |
1.0061000000000015 | 1.0 |
1.0059999999999967 | 1.0 |
1.0058999999999994 | 1.0 |
1.0058000000000002 | 1.0 |
1.0056999999999994 | 1.0 |
1.0055999999999965 | 1.0 |
1.0055000000000016 | 1.0 |
1.005399999999995 | 1.0 |
1.0052999999999963 | 1.0 |
1.0051999999999959 | 1.0 |
1.005100000000004 | 1.0 |
1.0049999999999994 | 1.0 |
1.004900000000004 | 1.0 |
1.0047999999999946 | 1.0 |
1.0046999999999946 | 1.0 |
1.0046000000000044 | 1.0 |
1.0044999999999997 | 1.0 |
1.0044000000000055 | 1.0 |
1.004299999999996 | 1.0 |
1.0041999999999967 | 1.0 |
1.0040999999999947 | 1.0 |
1.004000000000004 | 1.0 |
1.003899999999997 | 1.0 |
1.0038000000000011 | 1.0 |
1.003700000000003 | 1.0 |
1.0036000000000016 | 1.0 |
1.0034999999999974 | 1.0 |
1.0034000000000063 | 1.0 |
1.0032999999999956 | 1.0 |
1.0031999999999983 | 1.0 |
1.0030999999999979 | 1.0 |
1.0029999999999937 | 1.0 |
1.0029000000000048 | 1.0 |
1.0027999999999933 | 1.0 |
1.0026999999999975 | 1.0 |
1.002599999999998 | 1.0 |
1.0024999999999942 | 1.0 |
1.0024000000000088 | 1.0 |
1.0022999999999962 | 1.0 |
1.0022000000000026 | 1.0 |
1.0021000000000049 | 1.0 |
1.002000000000002 | 1.0 |
1.0018999999999934 | 1.0 |
1.0018000000000085 | 1.0 |
1.0016999999999867 | 1.0 |
1.0015999999999905 | 1.0 |
1.0014999999999876 | 1.0 |
1.0014000000000165 | 1.0 |
1.001299999999999 | 1.0 |
1.001200000000016 | 1.0 |
1.0010999999999761 | 1.0 |
1.0009999999999732 | 1.0 |
1.0009000000000197 | 1.0 |
1.0007999999999952 | 1.0 |
1.0007000000000281 | 1.0 |
1.0005999999999617 | 1.0 |
1.0004999999999589 | 1.0 |
1.000400000000067 | 1.0 |
1.000300000000027 | 1.0 |
1.0001999999998947 | 1.0 |
1.0000999999999474 | 1.0 |
随着\(\Delta x\)越来越小,\(\frac{dy}{dx}\)的取值越来越接近\(2x\),可以猜测函数\(y=x^2\)上的任意一点切斜斜率为\(2x\),即\(\frac{dy}{dx}=2x\),由于上学时老师直接讲的是导数的结论,我们是站在牛顿、莱布尼茨巨人们的肩上的,所以大家想当然就觉得这不是很简单的么,我们都知道答案,大家试着把认知退回到知道答案前,思考下怎么证明以上观察到的结果是普适的,怎么抽象出一般范式?
微积分隐秘的力量
无穷小量
无穷小量是一种概念里存在的东西,它大于0但又无限接近0的数。并且无穷小量的大小是不同的。一个无穷小量的无穷小部分还要更加小得多,我们称之为二阶无穷小量,类似的还有三阶无穷小,......,\(n\)阶无穷下。
还是上面的例子:\(0.5^2=0.25\),那么\(0.50001^2\)呢?
我们知道它肯定大于\(0.25\),但到底大多少呢?
答案是:\(0.50001^2=0.25001000009999996\),而小数点两位后(\(0.25\)后)的这个小数又是由两个部分组成的,即:
\(0.00001000009999996=0.00001+0.00000000009999996\),显然前半部分“很小”,后半部分则“超级小”。
假设:上面例子中\(x\)发生了正向的微小扰动\(\Delta x\),变成了\(x+\Delta x\),则有:
\[(x+\Delta x)^2=x^2+2x\Delta x+{\Delta x}^2\] 把\(x=0.5\)代进去,则有: \[(0.5+\Delta x)^2=0.25+\Delta x+{\Delta x}^2\] \(\Delta x\)和\({\Delta x}^2\)分别对应“很小”的那部分一阶无穷小和“超级小”的那部分二阶无穷小。
微分
古人教导我们,关注问题的主要矛盾和矛盾的主要方面,对于上面的无穷小量,可以关注“很小”这个矛盾的主要方面,忽略“超级小”这个次要方面,这个是微积分背后的核心观点,这种忽略思维会给我们带来巨大好处,还是上面的例子: \[(0.5+\Delta x)^2=0.25+\Delta x+{\Delta x}^2\] 抛弃掉“超级小”部分,并做下符号变换,得到: \[(0.5+d x)^2=0.25+d x\] 那么要计算\(y=x^2\)这个曲线上任意一点\(x\)的切线斜率\(\frac{dy}{dx}\),还需要计算\(dy\)出来,方法如下: \[y+dy=(x+dx)^2\] 推导下得到: \[y+dy=x^2+2xd x+{d x}^2\] 忽略掉“超级小”的二阶无穷小,得到: \[y+dy=x^2+2xd x\] 因为:\(y=x^2\),所以得到: \[dy=2xdx\] 于是斜率公式为: \[\frac{dy}{dx}=2x\] 当\(x=0.5\)时,该点切斜斜率为:\(2 \times0.5=1\),和上面结果一致,至此也就推导出了这个范式。
面积与斜率的关系
微积分基本定理认为,当横坐标\(x\)取值向右滑动时,曲线下方的面积会以\(f(x)\)的速率逐渐增大。因此,\(f(x)\)是\(A(x)\)的导数,总结下就是: \[A(x)\Rightarrow^{导数}y(x)\Rightarrow^{导数}\frac{dy}{dx}\] 其中:\(A(x)\)为曲线下方面积,\(y(x)\)为曲线本身,\(\frac{dy}{dx}\)为曲线斜率。整理一下就得到: \[\frac{dA(x)}{dx}=f(x)\] 当曲线下方的面积由无穷多个无穷小的矩形竖条面积组成时,就可以得到经典形式: \[A(x)=\int_0^xf(x)dx\]
积分符号\(\int\)是莱布尼茨1677年引入并在1686年正式发表的,当时他把“微积分”叫做“a calculus”和“my calculus”(有点我的小甜甜的味道)。
至此,总结下,从无穷量角度去看待微积分,会发现它最初的“原味”,我们解决实际问题时因为有太多的“历史经验”,让我们觉得很多东西想当然,需要意识到并练习抛开这些想当然的“法”去理解“道”。