冷启动:这道题在问什么
假设你没学过线性规划。先把题面翻成人话。
① 三条不等式圈出一块地。 题目说 x,y 是实数,且
⎩⎨⎧x−2≥02x+y−7≤0x−y−2≤0
每一条都是二元一次不等式。一条二元一次等式(如 x−2=0)在坐标平面上是一条直线;把等号换成不等号,得到的就是这条直线一侧的半个平面。三条不等式同时成立,就是三个半平面的公共部分——一块区域。这块区域叫可行域,里面的每个点 (x,y) 都是「满足题目要求」的一种取法。
② 目标是在这块地里把 3x+4y 顶到最大。 z=3x+4y 对每个点给出一个数,问的是:在可行域里所有点当中,这个数最大能到多少。
③ 为什么这类题有固定打法。 约束是一次的、目标也是一次的,这种问题叫线性规划。它的好处是可行域一定是凸的(半平面交出来的形状不会凹进去),而线性的 z 在凸多边形上的最值一定落在顶点——于是无穷多个点的比较,被压成有限几个顶点的比较。
⚠️ 这一节不在现行教材里。 承载它的「二元一次不等式(组)与平面区域」不在现行人教A版 5 册内。浙江 2008–2013 自主命题理科卷时代它是固定考点,但按现行教材备考的读者要先知道这一点(真题页顶部也会挂同样的提示)。
解法一:画可行域,平移目标直线
怎么想到的。 目标 z=3x+4y 里 z 一变,3x+4y=z 就是一条新的直线——但斜率不变,永远是 −43。也就是说,所有可能的「z 值」对应一整族互相平行的直线。求 z 的最大值,就是问:这族平行线里,还能碰到可行域的那一条,最远能推到哪儿?
① 先把可行域画出来。 三条边界直线各画一条,再逐条定「取哪一侧」——办法是拿一个不在直线上的点代进去试:
| 约束 | 边界直线 | 拿谁试 | 结果 | 取哪一侧 |
|---|
| x−2≥0 | x=2(竖直线) | 原点 (0,0) | 0−2=−2<0,不满足 | 原点对侧,即 x=2 的右边 |
| 2x+y−7≤0 | 2x+y=7 | 原点 | −7≤0,满足 | 原点同侧,即这条线的左下方 |
| x−y−2≤0 | x−y=2 | 原点 | −2≤0,满足 | 原点同侧,即这条线的左上方 |
三块公共部分是一块三角区域——三条边、三个角,形状一望便知。
② 把三个顶点算出来(联立,不许目测)。 这块区域的每个顶点都是两条边界直线的交点:
- x=2 与 x−y=2:代入得 2−y=2,即 y=0 → 顶点 (2,0);
- x=2 与 2x+y=7:代入得 4+y=7,即 y=3 → 顶点 (2,3);
- 2x+y=7 与 x−y=2:两式相加得 3x=9,即 x=3,回代 y=1 → 顶点 (3,1)。
顺手确认这块区域是有界的:把后两条约束放在一起,y≤7−2x 且 y≥x−2,要能同时成立必须 7−2x≥x−2,即 x≤3;再配上 x≥2,横坐标被夹在 [2,3] 里,区域封了口。这一步不是走过场——无界的可行域上最大值可能根本不存在,后面「比顶点」的做法就失效了。
③ 定平移方向。 把 z=3x+4y 解出 y:
y=−43x+4z
这族线的纵截距是 4z。因为 4>0,截距越大 z 越大,所以要让 z 最大,就把这条线尽量往上推。(这一步最容易做反:若目标是 z=3x−4y,那就得往下推才是 z 变大。)
④ 推到哪儿停——比斜率,不是比纵坐标。 直线一路往上平移,最后还沾着可行域的那个位置就是最优;因为区域是凸多边形而 z 是线性的,这个位置一定落在某个顶点上。
那么是哪个顶点?这里有个特别容易犯的错:不能挑「纵坐标最高」的那个顶点。截距最大的确等价于 z 最大(4z 就是截距),但截距是 y+43x,不是 y——只有当目标恰好是 z=by 时两者才一致。正确的看法是比斜率,一个顶点是不是最优,只要看它相邻的两条边:
- 朝上那条边:从 (2,3) 到 (3,1),落在 2x+y=7 上,斜率 −2,比目标线的 −43 更陡。沿这条边向右走一格,边下降 2、而目标线只下降 43——边掉得更快,被目标线甩在了下方。所以这条边上截距最大的位置在它的左端 (2,3),往右走 z 只会变小。
- 竖直那条边:x=2 从 (2,0) 到 (2,3)。沿它往上走,x 不变而 y 增大,z=3x+4y 随之增大(4>0),最优在上端 (2,3)。
两条相邻边都指向 (2,3):从这个顶点出发,沿任何一条边挪动 z 都变小。可行域是凸的,凸区域上的局部最优就是全局最优,所以 (2,3) 就是最优解:
zmax=3×2+4×3=6+12=18

⑤ 三个顶点各算一遍作核对。 平移是「看」出来的,容易受画图精度影响,所以最好再算一遍:
z(2,0)=6,z(2,3)=18,z(3,1)=3×3+4×1=13
最大的确实是 18。顺带看清了干扰项的来路:13 是另一个顶点 (3,1) 的值(平移时停错了顶点),6 是 (2,0) 的值,也就是这道题的最小值(平移方向推反了)。
为什么「全算一遍」不算第二条路。 它与平移用的是同一块可行域、同一组顶点,前面 ①② 两步一字不差,只有最后一步是「看」还是「算」的区别。按本站的判据——两条路要在拿到题面后的第一个实质动作上就分岔——它是同一条路的另一种收尾,不是另一条路。真正另起炉灶的那条在下面。
解法二:把目标配成三条约束的线性组合
怎么想到的。 上一条路要画图。但「3x+4y 最大是 18」这句话本质上是一个不等式:
3x+4y≤18(对可行域里所有点成立),且有一点取到等号
手上正好有三条现成的不等式。能不能把它们直接加起来,凑出 3x+4y≤18? 如果能,整道题就不用画一根线。
关键是方向不能乱。先把三条约束统一写成「≤0」的模样:
f12−x≤0,f22x+y−7≤0,f3x−y−2≤0
(第一条由 x−2≥0 两边乘 −1 得来,不等号跟着翻。)非负数乘一个 ≤0 的量仍 ≤0,若干个 ≤0 的量相加仍 ≤0——这就是全部要用的工具。它们不是临时约定,就是必修第一册 §2.1 不等式的基本性质里的性质 4(两边同乘正数不变向)与性质 5(同向不等式可以相加)。
① 设待定系数,写成恒等式。 我们希望找到 λ1,λ2,λ3≥0 与常数 c,使得
3x+4y=λ1f1+λ2f2+λ3f3+c
对所有 x,y 成立。一旦配成,右边前三项各自 ≤0,立刻得 3x+4y≤c。
② 比系数。 把右边展开:
λ1(2−x)+λ2(2x+y−7)+λ3(x−y−2)+c
=(−λ1+2λ2+λ3)x+(λ2−λ3)y+(2λ1−7λ2−2λ3+c)
与左边 3x+4y+0 逐项相等:
⎩⎨⎧−λ1+2λ2+λ3=3λ2−λ3=42λ1−7λ2−2λ3+c=0(x 的系数)(y 的系数)(常数项)
三个方程、四个未知量,解不唯一——那就先试最省事的一组:令 λ3=0。于是第二式给 λ2=4,第一式给 −λ1+8=3,即 λ1=5,第三式给
c=−2λ1+7λ2+2λ3=−10+28+0=18
③ 验非负——这一步不能省。 λ1=5≥0、λ2=4≥0、λ3=0≥0,三个都合格。(若解出来某个 λ 是负的,这组配法就作废:负系数会把不等号方向掰反。那时换一个 λ 设成 0 重来。)
④ 写出恒等式并放缩。 把 λ1=5,λ2=4,λ3=0,c=18 代回,先验一遍这确实是恒等式:
5(2−x)+4(2x+y−7)+18=10−5x+8x+4y−28+18=3x+4y
两边逐项相同 ✓。于是对可行域里的任何点,
3x+4y=≤05(2−x)+≤04(2x+y−7)+18 ≤ 18
⑤ 找取等点。 等号成立需要两个 ≤0 的项同时为 0(系数 5、4 都是正的,所以每一项都必须自己等于零):
2−x=0 ⇒ x=2,2x+y−7=0 ⇒ y=7−4=3
得候选点 (2,3)。还要验它满足第三条约束(那一条的系数是 0,前面的放缩没管它):x−y−2=2−3−2=−3≤0 ✓。
所以 (2,3) 确实在可行域里,z 在那里取到 18,上界够得着。zmax=18,选 B。
这两条路差在哪
- 解法一是几何的:先把区域画出来,用「线性函数的最值在顶点」把候选压到三个点,再平移目标直线(或直接比三个数)定出是哪一个。它直观,但依赖画图与斜率判断,第一步就要动笔画坐标系。
- 解法二是代数的:一根线都不画,把目标式凑成约束的非负组合,一步得出 ≤18,再由「哪几条约束被卡死」反推取等点。它给出的是一份证明——每一步都可以逐字复核,不受画图精度影响。
第一个实质动作就分岔了(画区域 vs 凑系数),依赖的东西也不同(顶点最优性与斜率比较 vs 不等式的两条基本性质),所以是两条路。
各自的用武之地:约束只有两三条、维数是二时,解法一快且不易错;变量一多(三个以上就画不出图了)或者题目要的是证明而非答案时,只有解法二能走。反过来,解法二要试配系数,约束多的时候试起来麻烦,而解法一的图给了它一个提示——图上看出哪两条边界卡住最优点,就先把第三条的系数设成 0,一次就能配中。两条路互相搭台,不必二选一。
🕳️ 避坑
- 平移方向别弄反。 z=3x+4y 里 y 的系数 4>0,所以往上推 z 才变大。推反了会停在 (2,0),得 6——正是选项 D,也就是这道题的最小值。动笔之前先把「b=4>0 ⇒ 向上」写在草稿上。
- 别挑「纵坐标最高」的顶点。 平移比的是截距 y+43x,不是 y。本题两者恰好都指向 (2,3),纯属巧合——把目标换成 z=4x+y,截距最大的就变成了 (3,1),而纵坐标最高的仍是 (2,3),这时按纵坐标挑就错了。稳妥的判法是比相邻两条边的斜率,或者干脆把顶点全算一遍。
- 顶点必须联立解,不能目测。 图上看着像 (2,3) 就写 (2,3),遇到坐标不是整数的题一定翻车。三个顶点都要由两条边界直线联立得出。
- 先确认可行域有界。 无界区域上最大值可能不存在,「比顶点」这一招就失效了。本题由 x≥2 与 x≤3 夹住,是有界的。
- 半平面取哪一侧要代点验。 x−2≥0 取的是 x=2 的右侧(原点代进去不满足,故取对侧)。三条里只有这一条与原点异侧,最容易画反;一旦画反,可行域整块就错了。
- 配系数那条路,两处不能省:解出的 λ 必须全部非负(有负的就作废),以及取等点必须回代验其余约束(本题要验 x−y−2≤0)。少任何一处,得到的都只是一个「看起来对」的数。