含参一元二次不等式的讨论
系数里带一个字母的不等式,解不出单一答案。 的解集形态随 的取值发生质变:二次项系数为零时它根本不是二次不等式,系数为负时开口翻转,判别式变号时实根消失。分类讨论(case analysis)要做的,是把参数轴切成若干段,使每一段内部的解集形态保持一致,再逐段给出答案。
1 · 讨论的分界依据
分界只来自三处,且有固定的先后顺序。
先看二次项系数。 时二次项消失,不等式退化为一次,这一支必须单独处理,漏掉它是最常见的失分点。 时再看正负, 开口向上,小于零的解夹在两根之间; 开口向下,小于零的解落在两根之外。
其次是判别式 。它决定抛物线与 x 轴有几个交点,三种情形对应的解集形态见一元二次不等式:抛物线与判别式 §2 的对照表。
最后是两根的大小。求根公式给出的两个表达式,谁大谁小可能随参数改变,而区间的写法要求先分清左右端点。这一条只在两根都含参数时才需要。
2 · 覆盖全部分支的例子
取 。左端可以分解为 ,两个分界点分别是 与 ,判别式 恒不为负。本例的分界因此不在判别式的符号,而在两个分界点的大小与开口方向。
| 参数范围 | 分界点位置 | 解集 |
|---|---|---|
| a = 0 | 退化为 −x + 1 < 0 | (1, +∞) |
| a < 0 | 1 / a < 0 < 1 | (−∞, 1 / a) ∪ (1, +∞) |
| 0 < a < 1 | 1 < 1 / a | (1, 1 / a) |
| a = 1 | 两点重合于 1 | ∅ |
| a > 1 | 1 / a < 1 | (1 / a, 1) |
那一支的解集之所以是两条射线,是因为开口向下时抛物线只在两根之间露出 x 轴上方,小于零的部分反而在外侧。 时两点重合, 无解,而同一个 若把不等号换成 ,解集会变成单点集。
3 · 判别式起作用的一支
§2 的判别式是一个完全平方,永远不为负,讨论跳过了这一层。换一道题就不同了。
例 3.1 解 ,判别式为 。 时 ,抛物线开口向上且不越过 x 轴下方,解集为空; 时两根为 ,解集是 。两根的大小关系在此已由正负号确定,无需再分一层。
对照两例可以看出三条界线的独立性:例 3.1 的开口方向固定、两根大小固定,只有判别式在变;§2 的例子判别式恒非负,变的是开口方向与两根大小。一道题需要分几层,取决于哪几条界线真的会被参数跨过。
4 · 数值求根在此处的分辨率
本页的分支不走本系列共用的数值求根器,理由是它在两根靠近时会整段漏掉解。findRoots 在
上取
个样点,步长为
,靠相邻样点的符号变化定位根。
时两个分界点是
与
,相距
,没有样点落进这一小段,符号变化无从发现:findRoots 返回空数组,buildSolution 随之报出空集,而正确解集是
。
同样的参数量级并不总是失败。
的两个分界点是
与
,相距也约
,那一次却恰好有样点落进两根之间,两个根都找到了。成败取决于采样格点的位置而非参数本身,这种不可预期正是本页改用解析分支的原因:solveParamQuadratic 直接按上表给出端点,与样点无关。
警示 · 分类讨论的每一支都要回代验证端点归属。 一支的解集为空,而把不等号改成 之后同一支的解集是单点,两者的差别不在分类而在取等。分支划分与端点开闭是两件事,前者由参数决定,后者由不等号决定。
5 · 参考文献
- Quadratic equation. Wikipedia. 求根公式、判别式与根的分布。https://en.wikipedia.org/wiki/Quadratic_equation
- Discriminant. Wikipedia. 判别式的定义及其对实根个数的判定。https://en.wikipedia.org/wiki/Discriminant
- Proof by exhaustion. Wikipedia. 分类讨论作为证明与求解方法的一般形式。https://en.wikipedia.org/wiki/Proof_by_exhaustion