數學觀念

合成函數直覺理解:順序、函數值與定義域

2026年9月28日閱讀時間 3 分鐘
合成函數直覺理解:順序、函數值與定義域

假設一家外送服務每公里收 3 元,再加上 5 元的預約費。4 公里的行程,你要把 4 乘以 3,再加 5。你已經把一個規則的輸出,送進了另一個規則。這就是函數合成。

這個記號看起來可能比實際動作更難。如果 g(x)=3xg(x)=3x 計算距離費用,而 f(x)=x+5f(x)=x+5 加上預約費,那麼總額是 f(g(4))=f(12)=17f(g(4))=f(12)=17 元。內層規則先執行。除非定價規則真的這樣規定,否則你不能先把預約費加到距離上,再去相乘。

由內往外讀順序

合成函數把一個函數放進另一個函數裡面:

(f∘g)(x)=f(g(x))(f\circ g)(x)=f(g(x))

讀作「ff 在 gg 之後」。先求出 g(x)g(x)。然後用那個輸出作為 ff 的輸入。這個小圓圈是合成的符號,不是乘法。OpenStax 的合成函數章節定義了這個運算,並明確說明了順序。

取 f(x)=2x+1f(x)=2x+1 與 g(x)=x2−3g(x)=x^2-3。要形成 f(g(x))f(g(x)),把 ff 中的輸入位置換成整個運算式 x2−3x^2-3:

f(g(x))=2(x2−3)+1=2x2−5f(g(x))=2(x^2-3)+1=2x^2-5

在 x=4x=4 時,內層規則給出 g(4)=16−3=13g(4)=16-3=13,外層規則給出 f(13)=27f(13)=27。運算式吻合:2(4)2−5=272(4)^2-5=27。把兩步驟的計算與合併後的運算式對照檢查,可以抓到放錯位置的括號。

函數記號是讓位置保持清楚可見的方法。如果 f(t)=2t+1f(t)=2t+1,那麼 f(x2−3)=2(x2−3)+1f(x^2-3)=2(x^2-3)+1。用來代表位置的字母,不影響規則。我們的函數指南在把函數串接起來之前,先談了輸入、輸出與定義域。

把順序反過來比較

對同樣兩個函數,g(f(x))g(f(x)) 改由 ff 開始:

g(f(x))=(2x+1)2−3=4x2+4x−2g(f(x))=(2x+1)^2-3=4x^2+4x-2

在 x=4x=4 時,f(4)=9f(4)=9 而 g(9)=78g(9)=78。這不是 f(g(4))f(g(4)) 得到的 27。兩者都是有效的合成,但它們問的是不同的問題。你在做代數之前就能看出差別:一條鏈是先平方再加倍,另一條是先加倍再加一,然後平方。

某一個輸入處的巧合,並不會讓兩個合成函數相同。要確立它們作為函數相等,需要在共同的定義域上比較規則,並檢查它們的定義域一致。對於一般的習題,把兩個運算式都算出來並化簡。請記得 f(g(x))f(g(x)) 既不是 g(f(x))g(f(x)),也不是乘積 f(x)g(x)f(x)g(x)。

一個實用的標註是 x→gg(x)→ff(g(x))x\xrightarrow{g}g(x)\xrightarrow{f}f(g(x))。在代入任何東西之前,先寫出第一個箭頭。當內層規則含有分數、根號或一張數值表時,這特別有用。

從表格或圖形求值

你不需要公式也能合成函數。假設一張表格給出:

xx1234
g(x)g(x)3412
f(x)f(x)8697

要求 f(g(2))f(g(2)),先從第一列讀出 g(2)=4g(2)=4。現在用 4 作為 ff 的輸入:f(4)=7f(4)=7。答案是 7。若順序相反,f(2)=6f(2)=6,但表格沒有給出 g(6)g(6) 的值。你無法從這張表格讀出 g(f(2))g(f(2))。如果完整的函數在別處有定義,它可能存在;但光憑所列出的值,無法確定它。

圖形的運作方式相同。在輸入 2 處,移到 gg 的圖形上讀出它的高度,比方說是 4。然後再從 ff 的圖形上輸入 4 的位置重新開始,讀出它的高度,比方說是 7。第一個高度成為第二個水平坐標。不要在 x=2x=2 處同時讀出兩個高度再把它們組合。如果任一個圖形在所需的輸入處沒有點,合成函數在該處就沒有定義。

請注意「不在這張部分表格中」與「在定義域之外」的差別。一張簡短的表格可能漏掉一個實際存在的值。有明確空心圓或標明端點的圖形,則可以顯示某個值被排除。請說明你手上有什麼證據,而不是編造缺少的輸出。

化簡之前先檢查定義域

f(g(x))f(g(x)) 的定義域有兩道關卡。第一,xx 必須在 gg 的定義域內。第二,所得的 g(x)g(x) 必須在 ff 的定義域內。OpenStax 正是以這種輸入與輸出的形式陳述這條規則。

要讓合成函數在某些輸入處存在,並不需要 gg 的整個值域都落在 ff 的定義域內。只保留兩個階段都行得通的輸入。例如,平方可以接受每一個實數,而之後的平方根只能接受非負的輸出;因為平方值是非負的,所以這樣的組合對每個實數輸入都成立。把內層規則改成減法,允許的集合就可能縮小。要檢查實際的交接,而不是只孤立地看兩個公式。

令 g(x)=x−1g(x)=x-1 與 f(t)=tf(t)=\sqrt{t},輸出取實數。內層規則接受每個實數,但外層的平方根只接受非負的輸入。因此:

f(g(x))=x−1,x≥1f(g(x))=\sqrt{x-1},\qquad x\geq1

把順序反過來。現在 f(x)=xf(x)=\sqrt{x} 先執行,gg 之後再減一:

g(f(x))=x−1,x≥0g(f(x))=\sqrt{x}-1,\qquad x\geq0

這兩個運算式不同,它們的定義域也不同。在 x=0x=0 時,第二個合成函數給出 −1-1,而第一個在實數範圍內沒有定義。這比找出某一個它們的值不同的輸入,是更具決定性的比較。

分母會造成另一道關卡。假設 g(x)=1/(x−2)g(x)=1/(x-2) 與 f(t)=t+3f(t)=t+3。那麼 f(g(x))=1/(x−2)+3f(g(x))=1/(x-2)+3,但 x=2x=2 仍然被禁止,因為內層規則在那裡沒有定義。

約分永遠不能修復原本被禁止的輸入。令 g(x)=(x2−1)/(x−1)g(x)=(x^2-1)/(x-1),只在 x≠1x\ne1 時有定義,並令 f(t)=t2f(t)=t^2。對允許的輸入,你可以把 g(x)g(x) 化簡成 x+1x+1。合成運算式看起來像 (x+1)2(x+1)^2,但它的定義域仍然是 x≠1x\ne1。在 x=1x=1 時,原本的內層函數要求你除以零。一個在其他地方都與它一致的多項式,若不定義一個新的函數,是無法填補那個洞的。

把較大的規則拆成階段

合成也可以反過來讀,作為一個公式如何建構的描述。取 h(x)=3x+2h(x)=\sqrt{3x+2}。一種選擇是先 g(x)=3x+2g(x)=3x+2,再 f(t)=tf(t)=\sqrt{t}。因此 h=f∘gh=f\circ g。這種分解能快速揭示定義域:要求 3x+2≥03x+2\geq0,所以 x≥−2/3x\geq-2/3。

可能有不只一種有效的分解。你可以把內層的一次規則拆成「乘以 3」與「加 2」,再把平方根當作第三步。重要的是,所說明的順序對每個允許的輸入,都能重現原本的規則。

對於圖形的變換,比較 f(x)=x2f(x)=x^2 與 f(x−2)=(x−2)2f(x-2)=(x-2)^2。變化發生在輸入的位置內,所以拋物線向右平移 2。對於 f(x)+2=x2+2f(x)+2=x^2+2,加法發生在 ff 之後,所以圖形向上平移 2。這就是實際運作中的合成:「先減 2 再平方」不同於「先平方再加 2」。如果代入本身讓你覺得陌生,我們的代數指南可以幫上忙。

練習三種不同的檢查

1. 兩種順序。 令 f(x)=x+4f(x)=x+4 與 g(x)=2xg(x)=2x。求出兩個合成函數。答案是 f(g(x))=2x+4f(g(x))=2x+4 與 g(f(x))=2x+8g(f(x))=2x+8。在 x=3x=3 時,它們分別給出 10 與 14。順序改變了加上的 4 在計算中進入的位置。

2. 一道定義域關卡。 令 f(t)=1/tf(t)=1/t 與 g(x)=x2−9g(x)=x^2-9。那麼 f(g(x))=1/(x2−9)f(g(x))=1/(x^2-9)。要排除 x=3x=3 與 x=−3x=-3,因為兩者都會讓外層的分母為零。內層的多項式本身接受每個實數。

3. 查表。 用上面的表格,計算 g(f(3))g(f(3))。首先 f(3)=9f(3)=9。表格中沒有 g(9)g(9) 的資料,所以給定的表格不夠。這就是一個完整的答案,不是失敗的計算。

每做完一道習題,大聲說出哪個規則先執行、它產生了什麼值,以及下一個規則是否接受那個值。然後用一個數值輸入,驗證你的代數。在 Math Zen 的函數練習中,合成與定義域和值域的題目並列,讓你可以把這個交接當成獨立的技能來練習。

反函數是一個特例,在適當的定義域上,一個規則會還原另一個規則。要計算一般的合成函數,你不需要反函數。對這篇指南來說,可靠的順序就夠了:內層輸出、外層輸入,然後檢查定義域。

常見問題

什麼是合成函數?
合成函數是把一個函數的輸出當成另一個函數的輸入。在 f(g(x)) 中,先計算 g,再把結果餵給 f。
f(g(x)) 和 g(f(x)) 一樣嗎?
通常不一樣。改變順序,會改變哪一個規則先看到原本的輸入。請把兩種順序都算出來並檢查它們的定義域,不要假設它們相同。
我要怎麼求 f(g(x)) 的定義域?
只保留那些 g(x) 存在、而且其輸出被允許作為 f 的輸入的 x 值。即使代數因式之後被約掉,也要保留原本規則所帶來的排除條件。
我可以從表格或圖形求合成函數的值嗎?
可以。先讀內層函數,再把它的值當成外層的輸入。如果部分表格缺少需要的值,就需要更多資訊;輸入落在任一個所需的定義域之外時,合成函數在該處無定義。

動手練一練

相關文章