第 7 章 函數的平移、伸縮與變化¶

(適用:台灣高中~大一;目標:用參數化與疊圖建立直覺,並能把圖形變化翻譯回解析式)

7.1 本章核心:看懂「y = a f(b(x-h)) + k」¶

高中最重要的圖形變換公式之一:

$ y = a\,f\big(b(x-h)\big) + k $

  • 水平平移:$x\to x-h$(往右 h;往左就是 h<0)
  • 垂直平移:$+k$(往上 k;往下就是 k<0)
  • 垂直伸縮/翻轉:乘上 a(|a|>1 拉長,0<|a|<1 壓扁,a<0 上下翻轉)
  • 水平伸縮/翻轉:把 x 乘上 b(|b|>1 水平壓縮,0<|b|<1 水平拉伸,b<0 左右翻轉)

本章要做的事:
用 SageMath 的「參數掃描 + 疊圖」讓你一次看懂整族圖形。


7.2 疊圖基本模板(你會一直用)¶

在 Sage 裡可以用 plot(...) + plot(...) 疊圖。
如果想一次疊很多張,可以用 sum([plot(...) for ...])。

下面先用最基本函數 $f(x)=x^2$ 做示範。

In [1]:
var('x')
base = x^2
plot(base, (x, -4, 4))
Out[1]:
No description has been provided for this image

7.3 平移:左右(x-h)與上下(+k)¶

(A) 水平平移:f(x-h)¶

例:畫 $y=(x-h)^2$,比較 h=-2,-1,0,1,2。

In [2]:
var('x')
plots = sum([plot((x-h)^2, (x, -5, 5)) for h in [-2, -1, 0, 1, 2]])
plots
Out[2]:
No description has been provided for this image

觀察:

  • $(x-h)^2$ 的頂點在 $x=h$
  • 所以 h 往右變大,頂點就往右移

(B) 垂直平移:f(x)+k¶

例:畫 $y=x^2+k$,比較 k=-3,-1,0,2。

In [3]:
var('x')
plots = sum([plot(x^2 + k, (x, -4, 4)) for k in [-3, -1, 0, 2]])
plots
Out[3]:
No description has been provided for this image

7.4 垂直伸縮/翻轉:y = a f(x)¶

例:畫 $y=a x^2$,比較 a=2,1,1/2,-1。

In [4]:
var('x')
plots = sum([plot(a*x^2, (x, -4, 4), ymin=-6, ymax=6) for a in [2, 1, 1/2, -1]])
plots
Out[4]:
No description has been provided for this image

觀察:

  • |a| 變大 → 圖形變「瘦」(更陡),y 方向拉長
  • 0<|a|<1 → 圖形變「胖」(更平),y 方向壓扁
  • a<0 → 對 x 軸翻轉

7.5 水平伸縮/翻轉:y = f(bx)¶

這裡最容易記錯:

  • $f(bx)$:b>1 會讓圖形水平壓縮(變窄)
  • $f(x/b)$:b>1 會讓圖形水平拉伸(變寬)

例:比較 y = (bx)^2 = b^2 x^2 的水平效果¶

如果只看 $x^2$,水平壓縮其實等價於垂直拉長(因為平方)。
為了看出「純水平」的直覺,建議用非同質函數,如 $f(x)=\sin x$。

In [5]:
var('x')
plots = sum([plot(sin(b*x), (x, -2*pi, 2*pi)) for b in [1/2, 1, 2, -1]])
plots
Out[5]:
No description has been provided for this image

觀察:

  • b=2:週期變短(更密)→ 水平壓縮
  • b=1/2:週期變長(更稀)→ 水平拉伸
  • b=-1:左右翻轉(其實 sin 是奇函數,會看到對稱效果)

7.6 綜合變換:y = a f(b(x-h)) + k¶

我們用 $f(x)=\sin x$,一次看四個參數的影響。

例:固定 a=2, b=3, h=1, k=-1: $ y = 2\sin(3(x-1)) - 1 $

In [6]:
var('x')
y = 2*sin(3*(x-1)) - 1
plot(y, (x, -2, 4))
Out[6]:
No description has been provided for this image

你可以逐個改參數做實驗:

  • 改 a:振幅
  • 改 b:週期
  • 改 h:水平平移
  • 改 k:垂直平移

下面用「固定三個、掃描一個」的方式看得更清楚。

In [7]:
var('x')
# 固定 b=2,h=0,k=0,掃描 a
plots = sum([plot(a*sin(2*x), (x, -2*pi, 2*pi)) for a in [1/2, 1, 2, -1]])
plots
Out[7]:
No description has been provided for this image
In [8]:
var('x')
# 固定 a=1,h=0,k=0,掃描 b
plots = sum([plot(sin(b*x), (x, -2*pi, 2*pi)) for b in [1/2, 1, 2, 3]])
plots
Out[8]:
No description has been provided for this image
In [9]:
var('x')
# 固定 a=1,b=1,k=0,掃描 h(水平平移)
plots = sum([plot(sin(x-h), (x, -2*pi, 2*pi)) for h in [-pi/2, 0, pi/2, pi]])
plots
Out[9]:
No description has been provided for this image
In [10]:
var('x')
# 固定 a=1,b=1,h=0,掃描 k(垂直平移)
plots = sum([plot(sin(x) + k, (x, -2*pi, 2*pi)) for k in [-2, -1, 0, 1]])
plots
Out[10]:
No description has been provided for this image

7.7 由圖形回推解析式:三個常見任務¶

任務 A:看出頂點(或基準點)¶

若你知道 $y=(x-h)^2+k$ 的頂點在 (h,k),就能回推式子。

例:頂點在 (3,-2),開口向上、形狀與 $x^2$ 一樣。 答案:$y=(x-3)^2-2$。

用 Sage 畫圖驗算。

In [11]:
var('x')
plot((x-3)^2 - 2, (x, -1, 7), ymin=-4, ymax=10) + point((3, -2), size=40)
Out[11]:
No description has been provided for this image

任務 B:已知零點(根)與開口方向(或縮放)¶

若二次函數有根 r1, r2,且開口向上/下,可寫成: $ y=a(x-r_1)(x-r_2) $ 再用任一點代入求 a。

例:圖形過 (0,3),且根為 1 與 3,開口向上。 $ y=a(x-1)(x-3),\ y(0)=3 \Rightarrow 3=a(-1)(-3)=3a\Rightarrow a=1 $ 所以 $y=(x-1)(x-3)$。

用 Sage 驗算。

In [12]:
var('x')
y = (x-1)*(x-3)
y(0), factor(y)
Out[12]:
In [13]:
plot(y, (x, -1, 5)) + point((0, 3), size=40)
Out[13]:
No description has been provided for this image

任務 C:週期、振幅、平移(sin/cos)¶

一般形式: $ y=a\sin(b(x-h))+k $

  • 振幅 = |a|
  • 週期 = $ \frac{2\pi}{|b|} $
  • 中線(midline)= y=k
  • 水平位移 = h

你可以用圖形讀出「中線與最高/最低」來猜 a,k;再用週期猜 b;最後用特徵點猜 h。

下面做一個例子:
假設你觀察到:最高 3、最低 -1 → 中線 1、振幅 2
週期是 $ \pi $ → $ \frac{2\pi}{|b|}=\pi \Rightarrow |b|=2 $

所以先猜:$y=2\sin(2(x-h))+1$
再用某個已知點(例如在 x=0 時 y=1 且斜率向上)推 h。

我們用 h=0 當作示範,畫出來看看形狀。

In [14]:
var('x')
plot(2*sin(2*x) + 1, (x, -2*pi, 2*pi), ymin=-3, ymax=5)
Out[14]:
No description has been provided for this image

7.8 絕對值與圖形變換:V 形、反射與折線¶

(A) |x| 與 |x-h| + k¶

$ y=|x| $ 是 V 形,頂點在 (0,0)。
$ y=|x-h|+k $ 頂點平移到 (h,k)。

例:比較 $|x|, |x-2|, |x+1|-1$。

In [15]:
var('x')
plots = plot(abs(x), (x, -5, 5)) + plot(abs(x-2), (x, -5, 5)) + plot(abs(x+1)-1, (x, -5, 5))
plots
Out[15]:
No description has been provided for this image

(B) y = |f(x)| 與 y = f(|x|)¶

  • $y=|f(x)|$:把在 x 軸下方的部分「翻上去」
  • $y=f(|x|)$:把右半邊(x≥0)的圖形「複製到左邊」(y 軸對稱)

例:用 $f(x)=x-1$ 觀察。

In [16]:
var('x')
f = x - 1
p1 = plot(abs(f), (x, -4, 4), ymin=-3, ymax=3)
p2 = plot((abs(x) - 1), (x, -4, 4), ymin=-3, ymax=3)
p1 + p2
Out[16]:
No description has been provided for this image

7.9 參數掃描的進階:做「圖形小動畫」(用滑桿的概念)¶

在某些 Sage/Jupyter 環境可以用互動滑桿(互動功能視環境而定)。
本書先用「列出多張疊圖」替代互動:一樣能建立直覺。

例:觀察 $y=(x-h)^2$ 隨 h 變化的「頂點軌跡」。

In [17]:
var('x')
Hs = [-3, -2, -1, 0, 1, 2, 3]
plots = sum([plot((x-h)^2, (x, -6, 6), ymin=-1, ymax=20) for h in Hs])
vertex_points = sum([point((h, 0), size=30) for h in Hs])
plots + vertex_points
Out[17]:
No description has been provided for this image

7.10 本章小結:一看到式子就能說出圖形怎麼變¶

你現在應該能:

  • 把 $y=a f(b(x-h))+k$ 的每個參數對應到圖形變化
  • 用疊圖與參數掃描快速建立直覺
  • 從圖形特徵(頂點、根、振幅、週期、中線)回推解析式
  • 理解 |f(x)|、f(|x|) 的幾何意義

練習題(附提示)¶

  1. 平移:把 $y=x^2$ 向右 2、向上 3,寫出新函數並畫圖驗證。
    提示:$y=(x-2)^2+3$。

  2. 伸縮:把 $y=\sqrt{x}$

(a) 垂直拉長 2 倍
(b) 水平拉伸 3 倍
寫出新函數並畫圖。
提示:垂直:$2\sqrt{x}$;水平拉伸 3 倍:$\sqrt{x/3}$。

  1. 綜合:寫出 $y=-\frac12 (x+1)^2 + 4$ 的圖形特徵:
    頂點、開口方向、左右/上下平移、垂直伸縮倍率。

  2. 絕對值變換:畫 $y=|x^2-4|$,並說明它和 $y=x^2-4$ 的差別。
    提示:x 軸下方翻上去。

5.(挑戰)由圖回推:
若某二次函數頂點在 (1,-3),且通過 (0,-1),求其解析式。
提示:先寫 $y=a(x-1)^2-3$,代入 (0,-1) 解 a。

下一章(第 8 章)我們會處理「反函數與複合函數」:
你會用第 7 章的變換直覺,快速判斷反函數圖形與複合後的形狀。