絕對值函數的最小值:中位數定理的直覺與證明
|x-a| 是課本上最單純的絕對值函數,但把很多個這種函數加起來問最小值在哪裡,就會冒出「中位數定理」。本文從一道約集合點的問題出發,推導出斜率視角與配對不等式證明,並示範推廣成加權中位數。
《中位數定理系列》:①絕對值與中位數定理 | ②遇上二次函數
先從一個很單純的絕對值函數想起
高中課本教絕對值函數,最基本的一句話是:
\[|x-a|=\text{「}x\text{ 到 }a\text{ 的距離」}\]這句話再單純不過,但如果把很多個這種距離加在一起呢?
四位同學住在同一條路上,座標分別是 $1,3,8,10$(單位是公里),班會想約在這條路上的某一點 $x$ 集合,讓大家走的路程總和最小。用函數寫出來,就是要找出讓
\[f(x)=|x-1|+|x-3|+|x-8|+|x-10|\]最小的 $x$。這個具體的例子會陪著我們走完整篇文章;等規律都摸清楚了,再回頭寫成一般的 $n$ 個點也不遲。
直覺:先自己試幾個點
在動用任何公式之前,不妨先猜猜看、算算看。
猜猜看 1:集合在正中央 $x=5.5$(也就是 $1$ 和 $10$ 的平均)?
\[f(5.5)=4.5+2.5+2.5+4.5=14\]猜猜看 2:集合在 $x=3$(第二個人家門口)?
\[f(3)=2+0+5+7=14\]猜猜看 3:集合在 $x=8$(第三個人家門口)?
\[f(8)=7+5+0+2=14\]咦,三個猜測算出來都是 $14$!只是巧合嗎?再試一個明顯偏一邊的點看看。
猜猜看 4:集合在 $x=0$(最左邊之外)?
\[f(0)=1+3+8+10=22\]這次明顯變大了。看來 $x=0,3,5.5,8$ 這幾個點不是每個都一樣好——$x=3$ 到 $x=8$ 之間似乎有一整段「最省路程」的區域,而跑到外面(像 $x=0$)就會變差。
為什麼會這樣?往人比較多的那一側移動
先猜猜看:集合點會不會跟座標的正中央(也就是最大值與最小值的平均 $5.5$)有關?從上面的計算已經看到,$x=3$、$x=5.5$、$x=8$ 算出來的總路程一樣,可見答案跟「正中央」沒有直接關係,而是跟資料的排列順序有關。
原因可以用一個思考實驗看出來。假設目前集合點在 $x$,把它往右移動一小步 $\varepsilon$:
- 所有住在 $x$ 左邊的同學,距離都增加了 $\varepsilon$。
- 所有住在 $x$ 右邊的同學,距離都減少了 $\varepsilon$。
例如目前 $x=5.5$,左邊住著 $1,3$ 兩人,右邊住著 $8,10$ 兩人——左右各兩人,人數打平,所以無論往左或往右移一點點,總路程都不會變小(增加的人數跟減少的人數一樣多)。這正好解釋了為什麼 $x=3,5.5,8$ 這整段算出來都是 $14$:只要左右兩側人數相等,總路程就不會再變小。
但如果 $x=0$,左邊沒有人,右邊卻有全部四人:往右移一步,四個人的距離都在減少,完全沒有人的距離在增加,當然大幅划算。這就是為什麼 $x=0$ 明顯比較差。
這就是中位數定理的核心直覺:只要左右兩側人數不相等,往人多的那一側移動一定更好;移到兩側人數平衡為止,才是最小值。
正式推導一:把「直覺」換成「斜率」
前面用「移動一小步」的思考實驗,其實就是在描述函數的斜率。把它寫得更精確一點。
$\lvert x-1\rvert$ 這一項,當 $x<1$ 時等於 $1-x$(斜率 $-1$),當 $x>1$ 時等於 $x-1$(斜率 $+1$)——這是一個 V 字形圖形,尖點在 $x=1$。$\lvert x-3\rvert$、$\lvert x-8\rvert$、$\lvert x-10\rvert$ 也都是同樣形狀的 V 字形,只是尖點分別在 $3,8,10$。
把四個 V 字形加起來,$f(x)$ 在每一段的斜率是:
| 區間 | $x<1$ | $1<x<3$ | $3<x<8$ | $8<x<10$ | $x>10$ |
|---|---|---|---|---|---|
| 斜率 | $-1-1-1-1=-4$ | $+1-1-1-1=-2$ | $+1+1-1-1=0$ | $+1+1+1-1=+2$ | $+1+1+1+1=+4$ |
看出規律了嗎?每越過一個人家(每越過一個 $a_i$),斜率就增加 $2$——因為那一項的斜率從 $-1$ 跳到 $+1$,正好差 $2$。斜率的序列是
\[-4,\ -2,\ 0,\ +2,\ +4\]$f(x)$ 是一段一段的直線接起來的(分段一次函數),只有斜率由負轉正(或恰好是 $0$)的地方,才可能是最小值——斜率為負代表還在下降,斜率為正代表已經開始上升。從表格可以直接看到:斜率在 $3<x<8$ 這一段恰好是 $0$,前後則分別是負、正,所以
\[\boxed{\text{任何}\ x\in[3,8]\ \text{都是最小點}}\]這正好對應到前面「猜猜看」算出的三個點 $3,5.5,8$ 都得到相同答案 $14$ 的原因:它們全部落在這段斜率為 $0$ 的區間裡。
推廣到一般情形: 如果有 $n$ 個人($n$ 個資料點,由小到大排序為 $a_1\le a_2\le\cdots\le a_n$),最左邊的斜率是 $-n$,每越過一個點斜率跳 $+2$,最右邊的斜率是 $+n$。
- $n$ 為奇數($n=2m+1$):斜率序列的正中央剛好是 $0$,對應唯一的中位數 $a_{m+1}$,所以最小點是 $x=a_{m+1}$。
- $n$ 為偶數($n=2m$):斜率序列在中間會出現一段恰好是 $0$(前面已越過 $m$ 個點、後面還有 $m$ 個點沒越過,$-m+m=0$),對應 $a_m$ 到 $a_{m+1}$ 這整段,所以最小點是 $x\in[a_m,a_{m+1}]$。
跟我們四人例題的情形完全一樣:$n=4$(偶數),$m=2$,最小區間正是 $[a_2,a_3]=[3,8]$。
正式推導二:配對法——順便把最小值直接算出來
斜率視角告訴我們最小點在哪裡,但如果只想知道最小值是多少,還有一個更快、完全不用討論斜率的代數技巧:把最外側的兩個人配成一對。
回到四人例題。無論 $x$ 在哪裡,到最左邊的人($1$)與到最右邊的人($10$)的距離總和,都至少是這兩人之間的距離:
\[|x-1|+|x-10|\ge 10-1=9\]這其實就是絕對值的三角不等式,等號成立的條件是 $x$ 落在 $[1,10]$ 之間。同樣的道理,把次外側的兩人($3$ 和 $8$)也配成一對:
\[|x-3|+|x-8|\ge 8-3=5\]等號成立的條件是 $x\in[3,8]$。把兩個不等式加起來:
\[f(x)\ge 9+5=14\]右邊是一個固定數字,跟 $x$ 完全無關!而兩個不等式要同時取等號,$x$ 必須同時落在 $[1,10]$ 和 $[3,8]$ 這兩個區間裡——因為 $[3,8]\subset[1,10]$,只要滿足比較嚴格的 $[3,8]$,兩邊就都滿足了。所以
\[\boxed{\min f(x)=14,\quad\text{在}\ x\in[3,8]\ \text{時取得}}\]跟斜率法得到完全一樣的答案,但這個做法完全沒有提到「斜率」兩個字,純粹只用了「距離總和 $\ge$ 兩點間距」這個國中就學過的性質。
推廣到一般情形: 排序後的 $n$ 個點,由外而內兩兩配對相減、全部加總,就是最小值。$n$ 為偶數($n=2m$)時,配出 $m$ 對,全部加起來就是最小值;$n$ 為奇數($n=2m+1$)時,中間會剩一個配不成對的點 $a_{m+1}$,這一項的最小貢獻是 $0$(在 $x=a_{m+1}$ 時取得),其餘 $m$ 對的做法跟偶數情形完全一樣。
例題:換一組奇數個資料練習一次
求 $g(x)=\lvert x-2\rvert+\lvert x-5\rvert+\lvert x-6\rvert+\lvert x-9\rvert+\lvert x-13\rvert$ 的最小值。
這裡有 $5$ 個資料點(奇數個),中間那個是 $6$(排序後第 $3$ 個),配對其餘四個點:
\[|x-2|+|x-13|\ge13-2=11,\qquad|x-5|+|x-9|\ge9-5=4\]加總:
\[\min g(x)=11+4=15\]因為是奇數個資料,最小點是唯一的,就在中間那個點 $x=6$。驗算:
\[|6-2|+|6-5|+|6-6|+|6-9|+|6-13|=4+1+0+3+7=15\quad\checkmark\]如果同學走路的「代價」不一樣呢?——認識加權中位數
前面假設每位同學走一單位距離的代價都相同。但如果某些人行動不便,走一步路特別辛苦呢?
先看一個具體例子。 假設第一位同學(住在 $x=1$)每公里的辛苦程度是別人的 $10$ 倍,函數就要改寫成
\[f(x)=10|x-1|+|x-5|+|x-9|\]如果沒注意到這個權重,可能會直覺猜答案是普通中位數 $5$。但實際檢查斜率:$x<1$ 時,三項斜率分別是 $-10,-1,-1$,總和是 $-12$;一旦越過 $x=1$,第一項斜率立刻翻正,變成 $+10,-1,-1$,總和是 $+8$。斜率已經在 $x=1$ 由負翻正,所以
\[\boxed{\min f\ \text{發生在}\ x=1,\ \text{而不是}\ x=5}\]為什麼會這樣? 因為第一位同學的權重太大了,只要他還在「左邊」,往右移動就要付出巨大代價;一旦越過他之後,剩下的兩位同學權重都只有 $1$,很快就被追過去了。這就像拔河比賽:不是看兩邊人數,而是看兩邊的總體重——體重極端不對稱時,平衡點會直接被拉到那個大體重的人旁邊。
一般化來說,如果每個人的權重是 $c_i>0$,原本「越過 $a_i$ 時斜率跳 $2$」的規則就要改成「越過 $a_i$ 時斜率跳 $2c_i$」,於是最小點不再是普通中位數,而是加權中位數:左側總權重與右側總權重達到平衡的位置。權重全部相等($c_i=1$)時,加權中位數就會退回普通中位數——普通版本只是這個更一般規則裡最簡單的特例。
小提醒: 如果係數是正的常數乘在絕對值外面(例如 $\lvert2x-6\rvert=2\lvert x-3\rvert$),仍然可以看成權重 $2$,用加權中位數處理。但如果係數出現負數(例如 $\lvert x-1\rvert-2\lvert x-3\rvert+\lvert x+5\rvert$),函數就不再保證是「單谷」形狀,可能同時出現局部最大與局部最小,中位數的公式就不能直接套用,必須逐段重新分析斜率。這已經超出這個系列要處理的範圍,有興趣的讀者可以自行搜尋「次梯度」與「凸分析」,那是這整套理論在大學數學裡的正式語言。
總結
| 情況 | 找最小點的方法 | 最小點 |
|---|---|---|
| 純距離和,資料個數為奇數 | 排序後由外而內兩兩配對相減再加總;中間留下的唯一一點就是答案 | 排序後最中間那一點(唯一) |
| 純距離和,資料個數為偶數 | 做法相同,但排序後正中間剩下相鄰的兩點 | 排序後最中間相鄰兩點之間,整段都是答案 |
| 加權距離和(權重皆為正) | 找到「左側總權重=右側總權重」的位置 | 加權中位數 |
中位數定理背後真正的原理,其實只有一句話:$\sum\lvert x-a_i\rvert$ 是一個分段一次函數,越過每個資料點時斜率跳動固定的幅度,最小值必定發生在斜率由負轉正的地方。
這個「斜率視角」不只是證明中位數定理的工具,它本身就是可以繼續推廣的框架——如果在這個和裡面,再混進一個二次函數會怎麼樣?二次函數的斜率不是分段常數,而是連續變化的一條直線,它會怎麼跟這些 V 字形的斜率跳動互動?這正是下一篇《中位數定理遇上二次函數》要處理的問題。