§2-2  合成與反函數

兩個函數接力,定義域怎麼算?什麼樣的函數可以反著讀?反著讀出來的東西,憑什麼還是函數?

兩部機器接力:composition(2.2、2.3)

兩個函數可以串成生產線:先讓 f 加工,再把成品餵給 g。唯一要小心的是接口——f 的輸出未必都是 g 收得下的輸入,收不下的原料只能整批退回。把這件事寫進定義:

2.2  DEFINITION
Let f have domain D(f) in A and range R(f) in B, and let g have domain D(g) in B and range R(g) in C. The composition g∘f (note the order!) is the set
g∘f = {(a, c) ∈ A × C : there exists b ∈ B with (a, b) ∈ f and (b, c) ∈ g}.
合成 g∘f 收「經 f 到 b、再經 g 到 c」走得通的頭尾對 (a, c)。注意次序:g∘f 是先 f 後 g——記號從右往左讀,跟穿衣服一樣,先穿的寫在裡面。
正例:f(x) = 2x、g(x) = 3x² − 1——g∘f(x) = 3(2x)² − 1 = 12x² − 1,先加倍再進二次式。反例:同一對函數反著串,f∘g(x) = 2(3x² − 1) = 6x² − 2——12x² − 1 ≠ 6x² − 2(代 x = 1:11 ≠ 4),合成不交換,次序是實質資訊。
2.3  THEOREM
For any functions f and g, the composition g∘f is a function, with
D(g∘f) = {x ∈ D(f) : f(x) ∈ D(g)},
R(g∘f) = {g(f(x)) : x ∈ D(g∘f)}.
合成必是函數,而且帳目分明:定義域是「f 收得下、且加工品 g 也收得下」的輸入全體;值域是這些輸入一路加工到底的成品全體。
正例:f(x) = x − 1(全域)、g(x) = 1/x(定義域 x ≠ 0)——D(g∘f) = {x : x ≠ 1},在 x = 1 處 f 的成品 0 被 g 退貨。反例:接口可以全空——例 2 的第二筆帳給出一對處處接不上的函數,合成是「空函數」。
PROOF

「g∘f 真是函數」這一步常被略過,此處補齊;兩條帳目由定義直讀。

Proof.  First, g∘f obeys the function condition. Suppose (a, c) and (a, c′) both belong to g∘f: some b gives (a, b) ∈ f, (b, c) ∈ g, and some b′ gives (a, b′) ∈ f, (b′, c′) ∈ g. Because f is a function, b = b′; and because g is a function, c = c′.
這一步的所求:驗證接力線守販賣機條款。同一個起點 a 若走出兩條路,先看中繼站——f 是函數,所以 a 的加工品只有一個,b = b′;中繼站既然相同,再看終點——g 是函數,同一個 b 的輸出只有一個,c = c′。兩關的唯一性一棒傳一棒,合成的唯一性就是這麼繼承來的。
Next the bookkeeping. An input x admits a completed chain exactly when x ∈ D(f) and the intermediate product f(x) lies in D(g) — this is the stated domain. For such x the chain ends at g(f(x)), so the outputs are precisely the values g(f(x)) — the stated range.
帳目是定義的白話翻譯:(a, c) 入籍需要一條走得通的鏈,而鏈走得通恰好等於「a 過得了第一關、半成品過得了第二關」。數字對照:f(x) = x − 1、g(x) = 1/x——輸入 3 的鏈是 3 → 2 → 1/2 走得通;輸入 1 的鏈在 1 → 0 → 處斷頭,1 ∉ D(g∘f)。例行核對。
接力線永遠是合格的函數,定義域由兩道關卡共同裁定。∎
A B C f g g 收不下:鏈斷頭 g∘f 只收整條走得通的鏈——斷頭的輸入被踢出定義域

這張圖在畫 2.2 與 2.3 的機制:合成是兩段接力,上排的鏈全程走通、頭尾對 (a, g(f(a))) 入籍;下排的半成品被 g 退貨,整條鏈作廢——定義域的縮水就是這樣發生的。

例 2定義域的縮水帳,以及縮到全空的合成
合成的定義域可以比兩個原料函數都小——極端情形甚至空無一人。兩筆帳各算一次。
對指定的函數對,算出 D(g∘f),並確認極端案例。
  1. 縮水帳:f(x) = x − 1(全域)接 g(x) = 1/x(x ≠ 0)。按 2.3 的帳目,D(g∘f) = {x ∈ ℝ : x − 1 ≠ 0} = {x : x ≠ 1},而 g∘f(x) = 1/(x − 1)——兩個原料函數各自只缺一個點或不缺點,合成卻在 1 處新開了一個洞。
  2. 全空帳:G(x) = −x² − 1(全域),F 取 1/x 在 {x : x > 0} 上的 restriction。因為 x² ≥ 0(平方非負是高中熟知的事實,公理版到 5.5 立案),G 的每個輸出都 ≤ −1,一個也進不了 F 的定義域——D(F∘G) = ∅。合成是空函數:一個合法但沒有任何有序對的函數(空集合本身乖乖滿足販賣機條款)。
合成的定義域由接口裁定,與兩個原料函數各自的「大小」無關——會全空、會新開洞,動手前先把 2.3 的帳算清楚。

反著讀的資格:injective(2.5)

函數是「輸入定輸出」的機制,自然想問:能不能反過來,由輸出查回輸入?販賣機條款只保證正著讀唯一,反著讀就未必——兩顆按鈕吐同一款飲料時,看著飲料猜按鈕就有兩個答案。要反著讀,得先排除「撞款」。

2.5  DEFINITION
A function f is injective (or one-one) when: whenever (a, b) and (a′, b) belong to f, then a = a′. An injective function is called an injection.
Equivalently: a ≠ a′ in D(f) forces f(a) ≠ f(a′).
injective(一對一,又稱 one-one/one-to-one):同一個輸出不得有兩個來源——販賣機條款的鏡像。等價說法:不同輸入必得不同輸出。§3 定義 3.1 從頭到尾說的「one-to-one 函數」,正式戶籍在此。
正例:f(x) = 2x——輸出除以 2 就查回唯一輸入,絕不撞款。反例:F(x) = x²(全域)——(2, 4) 與 (−2, 4) 都在籍,輸出 4 有兩個來源;例 3 會動手修剪它。

反函數(2.6)

injective 一旦到手,反著讀的機制可以一句話造出來:把每個有序對的前後分量對調。對調出來的集合憑什麼還是函數?這正是 injective 買下的保障——證明附在定義卡後。

2.6  DEFINITION
Let f be an injection with domain D(f) in A and range R(f) in B. The set
g = {(b, a) ∈ B × A : (a, b) ∈ f}
is an injection with D(g) = R(f) and R(g) = D(f); it is called the function inverse to f, written f⁻¹.
Thus b = f(a) if and only if a = f⁻¹(b).
反函數 f⁻¹=把 f 的每個有序對前後對調。定義域與值域跟著對調:D(f⁻¹) = R(f)、R(f⁻¹) = D(f);讀法對調:b = f(a) ⟺ a = f⁻¹(b)。只有 injection 有反函數——資格審查在前,對調才合法。
正例:f = {(1, 4), (2, 6), (3, 8)} 對調得 f⁻¹ = {(4, 1), (6, 2), (8, 3)}——好端端的函數。反例:不 injective 的 F(x) = x² 硬對調——(4, 2) 與 (4, −2) 同時出現,對調品當場違反販賣機條款,「F⁻¹」不存在。
PROOF

「對調品是函數、而且也 injective」確實是個好試金石,此處補齊。全程只有兩條規矩在對打:販賣機條款與 injective,而對調恰好把它們互換。

Proof.  Write g = {(b, a) : (a, b) ∈ f}. First, g is a function: if (b, a) and (b, a′) belong to g, then (a, b) and (a′, b) belong to f, and injectivity of f forces a = a′. Second, g is injective: if (b, a) and (b′, a) belong to g, then (a, b) and (a, b′) belong to f, and the function condition on f forces b = b′.
整場證明是一次漂亮的角色互換:對調前後分量之後,「f 是 injective」翻譯過來恰好是「g 守販賣機條款」,而「f 守販賣機條款」翻譯過來恰好是「g 是 injective」——兩條規矩各自換到鏡子的另一側,一條不多一條不少。這也解釋了為什麼 injective 是反函數的充要門檻:缺了它,對調品的函數資格立刻破產(inst 的 x² 反例)。定義域與值域的對調(D(g) = R(f)、R(g) = D(f))是分量對調的直接後果,例行核對。
injection 的對調品是合格的 injection——反函數從此於法有據。∎
例 3x² 的修剪術:不能反讀的函數,剪一刀就能反讀
全域的平方函數撞款撞得一塌糊塗,可是它的「壞」全集中在左右互撞——restriction 一刀下去,反函數應聲而出,順便替一位大明星辦出生登記。
驗證:F(x) = x²(全域)不 injective;限制到 {x : x ≥ 0} 之後 injective,並描述其反函數。
  1. 全域版:(2, 4) 與 (−2, 4) 同屬 F——不 injective,反函數免談。
  2. 修剪:取 f = F | {x : x ≥ 0}。驗 injective——設 x, y ≥ 0 且 x² = y²,補上一句常被跳過的「why」:移項得 x² − y² = (x − y)(x + y) = 0(平方差是高中代數;展開靠的分配律與「乘積為零必有因子為零」都在 §4 立案,先記帳),於是 x = y 或 x + y = 0;後者配上兩人皆 ≥ 0 只剩 x = y = 0(「兩個非負數相加得零則兩者皆零」屬 §5 的順序工具——若 x > 0 則 x + y > 0——同樣先記帳)。兩案都是 x = y——不同的非負數平方必不同。
  3. 由 2.6,f⁻¹ 存在,D(f⁻¹) = R(f)、讀法 y = x² ⟺ x = f⁻¹(y)——它就是日後的正平方根函數 √。有一筆帳要誠實記下:R(f) 是「非負數的平方」全體,而「每個非負實數都躺在 R(f) 裡」(亦即人人有平方根)眼下還證不動——那正是 §6 完備性(6.8)的工作。本篇只登記機制:只要 y 真是某個非負數的平方,f⁻¹(y) 就唯一地交出那個數。
「不能反讀」往往不是絕症,是定義域太貪心——修剪到 injective,反函數就位。左半 {x ≤ 0} 同法可得負平方根函數;三角函數的反函數(日後正式登場)走的也是同一套修剪術。
水平線戳中兩點:反讀有歧義 f = x²|₊ f⁻¹ 右半支:沿對角線翻轉即反函數

這張圖在畫例 3 的修剪術:全域拋物線(左)被水平線戳中兩點——同一輸出兩個來源;剪到右半支(右)之後每條水平線至多命中一次,把圖形沿對角線翻轉(前後分量對調的幾何版)就是反函數的圖形。

—— 第二階段到此結束 ——

函數動起來了:合成永遠是函數、定義域由接口裁定(2.2、2.3),injective 是反著讀的門票、反函數靠前後對調一步到位(2.5、2.6),連 x² 這種撞款大戶都能修剪出平方根。下一篇 §2-3 收官:surjective 與 bijective 補齊人口普查的詞彙,再看函數怎麼推送與拉回整個集合——其中一個方向的表現會好得出奇。先起身伸展一下肩頸。臨走前一則:x² 問 2x 為什麼自己沒有反函數——「因為你老是給兩個人發同一張號碼牌。」