那一步改写
∣u∣=max(u,−u)
于是
∣t−a∣+a=max(t−a+a, a−t+a)=max(t, 2a−t)
右边两支都是 t 的一次函数:一条斜率 +1、一条斜率 −1,关于直线 t=a 互为镜像。
原来那个带绝对值的 V 形,就是这两条直线里较高的那一条。
为什么值得这么写
最大值的位置一眼就定了。 一次函数在闭区间上的最值必在端点;
若干个一次函数取最大,得到的仍是凸函数,凸函数在闭区间上的最大值也必在端点。所以
t∈[m,M]maxmax(t,2a−t)=max(y=t 在右端最高M, y=2a−t 在左端最高2a−m)
——不必讨论 a 落在区间的哪一边。按定义分段讨论(a<m / m≤a≤M / a>M)当然也对,
但那是三类,这里是两个数比大小。
用在哪儿
- 含参绝对值函数在闭区间上的最值 / 值域;
- 「最大值等于某个数,求参数范围」——把最大值写成 max(⋅,⋅),条件立刻变成两个不等式;
- 多个绝对值相加(∣x−1∣+∣x−3∣ 这类)同样是分段线性的凸函数,最大值仍在端点,最小值则可能在折点上。
两处当心
- 最大值在端点,最小值不一定。 凸函数的最小值可能落在折点 t=a 处(这里的最小值就是 a,
当 a∈[m,M] 时取到)。这一条只能用来找最大值。
- 区间必须是闭的、有界的。 端点开或区间无界时「最值在端点」就不成立,只能谈上确界。