数学 / 不等式 · 从性质到典型解法 / 比较两个函数:作差回到一张图 待审核 4 / 8
f(x)>g(x)    h=fg>0f(x) > g(x) \iff h = f - g > 0

比较两个函数:作差回到一张图

不等式 f(x)>g(x)f(x) > g(x) 比较的是两个函数的大小:ff 的图象在哪些 xx 处落在 gg 的上方。两条曲线的交点是相对高低发生翻转的位置。

1 · 作差法

h=fgh = f - g · 化归为一条曲线

f(x)>g(x)f(x) > g(x)f(x)g(x)>0f(x) - g(x) > 0 是同一个不等式。令 h(x)=f(x)g(x)h(x) = f(x) - g(x),两条曲线的比较就化归为一条曲线与 xx 轴的高低,回到图象的高低那一页的框架——这就是作差法

它的价值在于统一:无论 ffgg 各是什么函数,比较大小都归结为判断一个函数的符号。取 f(x)=x+1f(x) = x + 1g(x)=x21g(x) = x^2 - 1,则 h(x)=x2+x+2h(x) = -x^2 + x + 2,原不等式即一元二次不等式 x2+x+2>0-x^2 + x + 2 > 0,落回抛物线与判别式的框架,解得 1<x<2-1 < x < 2。两条曲线的交点横坐标 1-122 正是 hh 的零点。

图 1-1 · 同一坐标系里的两条曲线与测试点,横轴色带是当前不等号的解集。可拖动测试点比较两处函数值的高低,并切换函数组合。

2 · 两条算路的一致性

fgf - g vs 化简式

作差之后通常要把 hh 化简成一个多项式再求根,于是同一个 h(x)h(x) 有两条算路:逐个求值再相减,或者代入化简后的表达式。写本节时原以为两者会在零点附近给出不同的符号——那里 hh 的值趋于零,相减的相对误差本该被放大。

实测推翻了这个预期。取上面那组函数,在 [3,3][-3, 3] 上取 20000002000000 个点,逐点比较 f(x) - g(x)-x*x + x + 2 的符号:不一致的点数是 00,两者的最大差值只有 8.88×10168.88 \times 10^{-16}(node v26.6.0)。在两个零点 x=1x = -1x=2x = 2 处,两条算路都精确地给出 00

注 · 一致的原因是这组函数的两条算路都只做加、减、乘,而 IEEE 754 的减法在结果可表示时是精确的;相消损失的是有效位,不是符号。符号真会翻的场合需要更强的相消,例如零点附近的值来自两个近乎相等的大数之差——一元二次不等式那一页的求根公式就是这样一个例子,那里的偏差达到了两成半。所以「作差会不会改变符号」不能一概而论,取决于差是怎么算出来的。

3 · 参考文献

  1. Inequality (mathematics). Wikipedia. 不等式的等价变形与作差法。https://en.wikipedia.org/wiki/Inequality_(mathematics)
  2. Loss of significance. Wikipedia. 相近数相减导致的有效位损失。https://en.wikipedia.org/wiki/Loss_of_significance