跳到正文
格致开物MATHWIKI

分段函数

分段函数(piecewise-defined function)把定义域分成若干部分,在不同部分使用不同的计算规则。它仍然是一个函数:每个允许的输入必须对应唯一输出。公式写成几行,是为了说明何时选哪条规则,而不是让人把所有行都代入后相加。

水龙头调小以后,水箱原有的水去哪了

沿用斜率与平均变化率的水箱:开始有6升水,前三分钟以4升/分注入,然后调为2升/分,再过四分钟关闭。假设水箱足够大、没有漏水和蒸发,停水后水量保持不变。用 t0 表示从开始经过的分钟数,V(t) 表示升数。所有数值都是这个合成工序的设定。

前三分钟增加 4×3=12 升,所以切换时已有 6+12=18 升。后四分钟再增加 2×4=8 升,因此关闭时有26升。三个阶段的时间范围与起始水量如下:

阶段 从开始计时的范围 该阶段开始时的水量 计算方式
第一段 0t3 6升 6加上4乘经过分钟数
第二段 3<t7 18升 18加上2乘切换后经过的分钟数
第三段 t>7 26升 水量保持26升
三行时间轴分别标出零至三分钟含两端、三至七分钟左开右闭、七分钟以后左开;对应每分钟四升、两升、停水
每一时刻归入一段。实心端点表示包含,空心端点表示不包含;第三段的箭头表示继续到更晚的时间。

看第二行:第5分钟并不是调小后经过5分钟,而是经过 53=2 分钟。于是水量为 18+2×2=22 升。减去3是在重置这一段的计时起点,原有18升则负责接上前一段的累计量。

把文字规则写成一个函数

由每一段的起始量加上本段新增量,得到 V(t)={6+4t,0t3,18+2(t3),3<t7,26,t>7. 大括号把三种情况合成一个函数。右边的条件先决定使用哪一行,左边的式子再负责计算。OpenStax《College Algebra 2e》§3.2

例如 V(2)=6+4×2=14V(5)=18+2(53)=22V(9)=26。在第5分钟,只用第二行,不把第一行算出的26与第二行的22再相加。第一阶段的12升已经包含在18升中,再加一次会重复计数。

第二行也可以展开为 12+2t,数值完全相同。但 18+2(t3) 更容易看出“切换时已有多少”和“之后新增多少”。反之,若误写为 6+2t,在第3分钟附近将给出约12升,与前一段的18升相差6升;调小水龙头本身没有排水,不能导致这些水凭空消失。

水量图从(0,6)上升至(3,18),再以较小斜率升至(7,26),此后水平;点(5,22)落在第二段
在切换点,折线的高度接上了,但倾斜程度改变。高度表示累计水量,斜率表示这一段每分钟的增量。

从图中 (3,18) 出发,向右两分钟、向上四升,就到 (5,22)。第7分钟以后的水平线表示水仍在箱内,只是新增量为零。在这个模型中,注水规则可以突然改变,水量却没有跳跃。

每个端点到底属于哪一行

函数的定义域是三个范围的并集,即 [0,)。本式把 t=3 放在第一行、t=7 放在第二行,任何非负输入都恰好落入一行,既没有遗漏也没有冲突。

怎样核查端点?第3分钟由第一行得到 6+4×3=18;若将第二行的表达式延伸代入3,也得到18。第7分钟由第二行得到 18+2(73)=26,与第三行常数26相等。因此也可以把3改分配给第二行、把7改分配给第三行,而不改变本函数的取值。

这种自由来自两边表达式在边界的值恰好相同,并不适用于所有分段函数。如果某个输入同时满足两行条件,而两行算出不同的输出,就没有定义出单值函数;如果某个预期输入不满足任何一行,则还欠缺该点的定义。函数的基本要求是唯一输出,不是必须只有一条代数式。OpenStax,§3.1

分段形式也不自动意味着“不连续”。水量的各段在3、7处接合,函数连续但图像有折角;|x| 可写成 x0 时取 xx<0 时取 x,在零处也接合。反过来,一条收费规则可能在分界点直接跳到新的金额,下一节就是这种情况。

平均速率要按各段持续时间计算

从第2分钟到第5分钟跨过了切换点。第2至第3分钟以4升/分注水1分钟,第3至第5分钟以2升/分注水2分钟,总增量是 4×1+2×2=8. 总时间3分钟,所以平均变化率为 8/3 升/分。也可以直接用函数端点核对:[V(5)V(2)]/(52)=(2214)/3=8/3

若简单算 (4+2)/2=3,就把两种速率假定为各持续相同时间;这里持续时间1与2不同,所以需要加权。整个0至7分钟的平均增量则是 (266)/7=20/7 升/分。分段公式保留每个阶段的机制,而一个全程平均数只保留总增量与总时间。

带跳跃的规则,空心点就不能随意挪动

考虑一个独立的合成收费变式:寄出一件包裹,重量 w 以千克计,规定 0<w2 收8元,2<w5 收14元;超过5千克不在此服务范围内。这是整档收费,不按超出重量线性计价。费用函数为 C(w)={8,0<w2,14,2<w5.

收费图在零至二千克为八元水平段,零点空心二点实心;在二至五千克为十四元水平段,二点空心五点实心,两段之间没有竖直连线
恰好2千克取下方实心点8元;超过2千克才取上方的14元。竖向空隙显示收费跳跃,不属于函数图像。

因此 C(1.9)=8C(2)=8C(2.01)=14。图中 (2,14) 是空心点,表示第二条水平段在该位置不取值;(2,8) 的实心点才是重量恰好2千克的费用。若用一条竖线把它们连起来,会错误地给重量2千克配上8至14元之间的许多费用。

把规则改为“重量小于2千克收8元,达到2千克就收14元”,只有一个输入的端点归属改变,但 C(2) 就必须变成14。两种定义在其他允许输入上一致,边界值却不同,空心与实心不是装饰。重量零也未被原来的“寄出一件包裹”规则覆盖;若想规定不寄件费用为零,应明确补上一行 C(0)=0

改动切换时刻,再接一次累计量

问题。水箱仍从6升开始,以4升/分注水;这次第2分钟就调为2升/分,到第5分钟关闭。写出水量函数,求第4分钟和第6分钟的水量。

解答。先算两个连接点。第2分钟水量为 6+4×2=14 升;随后注水3分钟,关闭时为 14+2×3=20 升。于是 W(t)={6+4t,0t2,14+2(t2),2<t5,20,t>5. 第4分钟处在第二段,所以 W(4)=14+2(42)=18 升;第6分钟已经停水,W(6)=20 升。再把2与5分别代回相邻表达式,两个连接点都吻合。改变切换时刻不仅改变右侧条件,还会改变下一段的起始累计量。

分段关系可以把固定比例、直线、二次式等不同规则放在各自适用范围。建立这样的模型时,先说明哪些条件发生改变,再写每段表达式,最后用端点与一个段内值检查它们确实描述同一个对象。

参考资料