近似
我们能立刻算出 。但要算 ,就需要再想一步。我们不必从头开始,可以利用在 9 这里已经知道的两件事:曲线的高度,以及它正在怎样改变。如果还没有见过曲线在一点的斜率,先读[[derivative_curve|导数]]页面;那里用到的极限写法,在[[limit_secant|极限]]页面有说明。
01“大约等于 3”还缺了什么?
平方根是在反过来问平方的问题:因为 ,所以平方后等于 9 的那个非负数是 3,也就是 。现在把根号里的数稍微增大,从 9 变成 9.1,平方根也会稍微增大。因此,3 是一个有用的初步估计,但它忽略了这次增加。
我们能不能在还不知道 的情况下,估计应该给 3 加上多少?这就是这里需要近似的原因:用较容易的计算代替较难的计算,同时留意这样做引入了多少差别。符号 表示“约等于”,不表示两个数完全相等。
把这个计算规则记成 。这里 是输入, 是输出;图上用曲线的高度表示这个输出。我们知道点 ,想求附近另一个点 Q 的高度,Q 的输入是 9.1。只保留起点高度 3,是第一种估计。接下来的估计还会用到 P 处的斜率。
02保留起点,给变化量一个名字
接下来我们会尝试几个附近的输入,所以先给输入的变化量取个名字:。它等于新输入减去已知输入。从 9 出发,新输入就是 。要到达 9.1,需要 ;要到达 8.9,则需要 。
包含方向:正数表示向右,负数表示向左。横向距离是 ,也就是去掉正负号后变化量的大小。计算时,不能把负的 擅自换成正的距离。
高度也会改变,但改变量通常与横向不同。它从 变成 ,所以高度变化是 。图中从 P 到 Q 的路径分为两段:水平移动 ,接着竖直移动到 Q。水平一段记录输入变化,竖直一段记录输出变化。请试试正数和负数 ,并与 比较。
计算机画出真实曲线,是为了让我们核对结果。接下来构造近似时,只用已知点和该处斜率,不把 Q 的未知高度偷偷放进计算。
如果是在自己做近似计算,我们仍然不知道这次高度变化。图中可以算出它来核对,但我们的办法必须用 P 处的信息预测它。什么东西把横向变化与竖向变化联系起来?斜率就有这个作用。
03利用已经知道的斜率
对于直线,斜率是高度变化除以输入变化。例如,斜率为 2,表示向右移动 1 个单位时高度增加 2 个单位。把横向变化乘以斜率,就得到对应的高度变化。
平方根的图像是一条曲线,一个斜率不能描述整条曲线。先用直线连接 P 和另一个不同的点 Q,这条直线叫作经过两点的割线。让 Q 靠近 P,割线斜率就会趋向 P 处的斜率。经过 P、具有这个极限斜率的直线,就是这里的切线。
这个极限斜率就是 9 处的导数,写成 。右上角的小撇表示“导数”,不是另一个输入。下面的极限表示:从两侧考察越来越小、但不为零的变化量 。它不是把零直接代入分母。
下一节会算出这个斜率是 。现在先把它与割线斜率比较。让 Q 从两侧靠近,在两个斜率仍有差别时暂停,并放大 P 附近。然后尝试恰好 :P 与 Q 重合,割线商未定义,但切线斜率仍然存在。
当 很小但不为零时,割线斜率接近 ,却不能保证与它相等。近似正是在这里进入的:我们用已知的切线斜率代替较难算的割线斜率,之后再检查误差。
04斜率 1/6 是怎样算出来的?
我们来算出这个斜率,不把它当成需要凭空记住的规则。把 和 代入割线商。计算这个商时先假设 ,并且 ,使平方根有定义。
先处理根号的差
接近 时,分子与分母都会变小;直接代入只会得到 。我们要先看清极限之前有什么可以约去。用到的恒等式是 ,因为展开后中间的两项会相互抵消。这里取 、。
把原来的分式乘以 。这个因子的分子、分母相等且为正,因此它等于 1;我们只改变写法,没有改变数值。
约去公因子后求极限
因为此时 不为零,可以把分子、分母同时除以 。当 趋近零时,剩下的分母趋近 。它并不趋近零,因此其倒数趋近 。
注意区别:化简后的表达式在零处有定义,原来的割线商却没有。我们是借助化简后的表达式求出原式的极限,并没有让除以零变得合法。
对于任何正的起点输入 ,同样的步骤都适用。这里 只是已知输入的名字,替换了刚才具体选择的 9。把计算中的 3 换成 ,分母里的两个平方根就都趋近 ,所以:
05把斜率变成预测的高度
回到原来的问题:估计 附近的高度。现在我们知道切线斜率 。对于较小且不为零的 ,用这个已知斜率近似代替割线斜率。然后反过来,把“除以 ”和“减去 3”依次还原。每一步代数操作,在图上都有对应的移动。
先乘以 ,左边就变成高度变化。右边用“输入变化乘以斜率”预测这次高度变化。如果 为负,预测的高度变化也为负:应该向下移动,而不是向上。
这还只是变化量。要得到最后的高度,必须把起点高度 3 加回来。把得到的切线上的点叫作 T。它与 Q 的输入相同,但 T 给出预测高度,Q 给出真实高度。
图中会展示这次计算的每个动作:水平移动 ,高度改变 ,把这个变化加到起始高度 3 上。用“下一步”逐个查看操作,就能核对答案从哪里来。 时没有变化,结果精确等于 3,无须使用割线商。
把起点高度与变化量合并后,才会显示预测值。两个方向的移动过程中都可以暂停查看。
对于原来的目标 9.1,带符号的变化量是 。预测结果为:
更精确的计算给出 。预测与它相差约 ,远小于直接说 3 时漏掉的约 。在这个例子里它确实更准确,但仍然是近似。接下来仔细看剩下的间隙。
06即使误差很小,也要看清它
用 表示直线给出的预测高度。把带符号的误差定义为 ,也就是“预测值减去真实值”。误差为正,说明预测偏高;误差为负,说明预测偏低。绝对误差 只保留差别的大小。这里 是已知的起点输入, 仍然等于目标输入减去起点输入。
在完整图像上,Q 和 T 可能看起来重合。这不能证明数值相等,间隙可能只是比屏幕上的一个像素还小。下面单独的窗口只放大它们的竖向差值,标明刻度,并且在改变 时保持刻度不变。
同一输入 x = 9.1 处的竖向间隙
这里只显示两个点的竖向差值,不显示从零开始的完整高度。改变 h 时刻度保持不变,因此较小的间隙会真的显示得更小。
为什么这里的平方根预测总在曲线上方?
几次尝试能提示这一点,却不能证明每个允许的输入都这样。我们可以直接检查差值。为了让代数更容易读,给两个高度取短名字: 是已知的起点高度, 是目标的真实高度。因此 、,并且 。
斜率是 ,所以预测为 。减去真实高度 ,再乘以正数 ,就能去掉分母:
现在把 换成 ,剩下的三项恰好组成一个完全平方:
分子是平方,分母为正,所以预测不可能低于平方根曲线。 时预测等于真实值;其他允许的 下,预测都在真实值上方。这个推导同时包含向左和向右的变化。
把间隙与输入变化的大小联系起来
另外,。因为 ,所以 。把它代入误差公式,再把短名字换回原来表示的高度:
固定正的 ,让 很小时,分母保持在正数 附近,而分子是 。因此间隙会迅速缩小:把本来就较小的 缩小到十分之一,它的平方会缩小到百分之一,分母却只改变一点。这是在附近做的比较,不是在任意大步长下都成立的精确误差比例。
误差的方向与函数有关。例如,取 ,从输入 3 出发。展开得到 。对于不为零的 ,割线斜率为 ,它趋近 6。因此切线预测为 ,而“预测减真实”等于 :这一次,预测在曲线下方。不能由平方根的例子得出“切线总是高估”的结论。
07保留方法,换一个函数
刚才的构造用到了三个信息:已知输入、它的高度,以及该处的斜率。对于一般的函数 ,把已知输入叫作 。已知高度就是 ,该处的导数就是 。要到达附近的输入 ,把带符号的变化量 乘以斜率,再把高度变化加到起点高度上:
一旦选定 , 和 就是固定的数,改变的只有 。右边是一条直线的规则:起点值,加上一个常数乘以输入变化。用这条直线近似函数在 附近的值,叫作线性化。它仍然是刚才看见的横向移动与竖向改变,只是现在写成了适用于其他合适函数的形式。
有时新输入写成 ,而不是 。这时 ,预测值就写成 。这并不是第二种方法,只是直接给目标输入取名字,而不是给变化量取名字。
还需要检查条件:函数在选定的输入处必须有有限的导数,目标也必须属于定义域,也就是函数有定义的输入集合。仅仅两个函数值存在还不够。对于 ,零处的函数值存在,但这里所需的有限斜率不存在,所以平方根的这个构造要求 。
导数存在,保证步长变小时直线预测在局部越来越准确:剩余误差除以 会趋近零。它却没有直接告诉我们,某个具体步长是否已经小到满足所需精度。对于平方根的例子,我们推导出了精确的误差公式;对于其他函数,可能需要数值核对,或者另外推导误差界限。
为什么导数能给出刚才的保证?把预测误差写成 。对于不为零的 ,两边除以 ,剩下的就是导数与割线斜率的差:
按照导数的定义,割线斜率趋近导数,所以它们的差趋近零。取绝对值,就得到 。这解释了预测为什么在局部改善,也说明了为什么一开始就需要导数存在。
08自己构造一次预测
把三个量的作用分清楚: 是一个高度, 是带符号的输入变化, 是每单位输入变化对应的高度变化。后两个相乘,得到的是高度变化,不是最终高度。加上 之后,才得到预测答案。分别试一次向右和向左的变化。
使用已知输入 ,这里 。先求带符号的输入变化,再把它乘以斜率 ,最后加回起点高度。你得到的预测是多少?
直线保留了选定点的高度与斜率,但它不能跟着曲线一起弯曲。如果想在更大一点的范围里得到更好的近似,就需要让计算规则也能匹配斜率的变化。下一页会通过麦克劳林与泰勒多项式,一步步构造这个想法。
