跳轉到

4.3 函數性質探索#

本節目標#

  • 用程式驗證對稱性:奇函數 \(f(-x) = -f(x)\) 、偶函數 \(f(-x) = f(x)\)
  • 用變號取樣探索單調性,並用 diff 預告正式方法
  • 用數值候選點預告極值求法(第 5 章 solve f' = 0)
  • 用 limit 探索漸近線
  • 動手實驗:完整分析 \(f(x) = \dfrac{x^2 - 1}{x^2 + 1}\)

用程式做數學實驗#

有了電腦,每一條性質都變成可執行的檢驗程式——性質不是背的,是「跑出來」的。本章先借用三個工具(後面章節正式介紹):simplify(化簡驗證)、diff(求導,第 5 章)、limit(極限,第 6 章)。

對稱性:奇函數與偶函數#

  • 偶函數: \(f(-x) = f(x)\) ,對 \(y\) 軸對稱(如 \(x^2\) 、 \(\cos x\) )
  • 奇函數: \(f(-x) = -f(x)\) ,對原點對稱(如 \(x^3\) 、 \(\sin x\) )
import sympy as sp
x = sp.Symbol('x')

def check_symmetry(f, var=x):
    lhs_even = sp.simplify(f.subs(var, -var) - f)   # f(-x) - f(x)
    lhs_odd  = sp.simplify(f.subs(var, -var) + f)   # f(-x) + f(x)
    if lhs_even == 0 and lhs_odd == 0:
        return "both"
    if lhs_even == 0:
        return "even"
    if lhs_odd == 0:
        return "odd"
    return "neither"

for name, f in {"x**2": x**2, "x**3": x**3, "sin(x)": sp.sin(x),
                "cos(x)": sp.cos(x), "x + 1": x + 1}.items():
    print(f"{name:>8} : {check_symmetry(f)}")
    x**2 : even
    x**3 : odd
  sin(x) : odd
  cos(x) : even
   x + 1 : neither

\(x + 1\) 兩者皆非——平移會破壞對稱性。任意函數還能拆成奇部與偶部:

\[ f(x) = \frac{f(x) + f(-x)}{2} + \frac{f(x) - f(-x)}{2} \]
f = x**2 + x
print((f + f.subs(x, -x)) / 2)   # x**2(偶部)
print((f - f.subs(x, -x)) / 2)   # x(奇部)

單調性:變號觀察與 diff 預告#

遞增就是「 \(x\) 越大 \(f(x)\) 越大」。先數值取樣看差分正負:

import numpy as np

def monotonic_hint(expr, a, b, n=1000):
    f = sp.lambdify(x, expr, 'numpy')
    diffs = np.diff(f(np.linspace(a, b, n)))
    if np.all(diffs >= -1e-12):
        return "increasing"
    if np.all(diffs <= 1e-12):
        return "decreasing"
    return "mixed"

f3 = x**3 - 3*x
print(monotonic_hint(f3, -5, 5))        # mixed
print(monotonic_hint(x**3, -5, 5))      # increasing

取樣只能猜,嚴格判定靠導數: \(f' > 0\) 遞增、 \(f' < 0\) 遞減。

print(sp.diff(f3, x))               # 3*x**2 - 3
print(sp.solve(sp.diff(f3, x), x))  # [-1, 1] ← 單調性在此改變

極值:數值候選與理論預告#

\(f(x) = x^3 - 3x\) 在 \(x = -1\) 有局部極大、 \(x = 1\) 有局部極小。先取樣找候選:

f_np = sp.lambdify(x, f3, 'numpy')
xs, vals = np.linspace(-3, 3, 601), None
vals = f_np(xs)
print(f"極大候選 x ≈ {xs[vals.argmax()]:.2f}")   # -1.00
print(f"極小候選 x ≈ {xs[vals.argmin()]:.2f}")   # 1.00

再與理論對照——臨界點满足 \(f'(x) = 0\) :

print(sp.solve(sp.Eq(sp.diff(f3, x), 0), x))   # [-1, 1] ← 完全吻合

閉區間上的最大最小值還要跟端點比:

def abs_extrema_on(expr, a, b):
    cands = [a, b] + [c for c in sp.solve(sp.diff(expr, x), x)
                     if c.is_real and a <= c <= b]
    vals = [expr.subs(x, c) for c in cands]
    return max(vals), min(vals)

print(abs_extrema_on(f3, -2, 2))   # (2, -2)
print(abs_extrema_on(f3, 0, 3))    # (18, -2)

完整理論(一階、二階導數檢驗)留給第 5 章;工具你已備齊。

漸近線:用 limit 看無窮遠#

f = (2*x**2 + 1) / (x**2 - 1)
print(sp.limit(f, x, sp.oo))          # 2  ← 水平漸近線 y = 2
print(sp.limit(f, x, 1, dir='+'))     # oo ← 垂直漸近線 x = 1
print(sp.limit(f, x, -1, dir='-'))    # oo ← 垂直漸近線 x = -1

# 斜漸近線:f(x) - (mx + k) -> 0
g = (x**3 + x**2 + 1) / x**2
m = sp.limit(g/x, x, sp.oo)           # 1
k = sp.limit(g - m*x, x, sp.oo)       # 1   → y = x + 1

動手實驗#

**完整分析 \(f(x) = \dfrac{x^2 - 1}{x^2 + 1}\) **:分母恆正所以處處連續,是綜合演練好題材。

import sympy as sp
import numpy as np
import matplotlib.pyplot as plt

x = sp.Symbol('x')
f = (x**2 - 1) / (x**2 + 1)

# 1. 對稱性
print("偶函數" if sp.simplify(f.subs(x, -x) - f) == 0 else "非偶")

# 2. 零點與 y 截距
print("零點:", sp.solve(sp.Eq(f, 0), x), " f(0) =", f.subs(x, 0))

# 3. 單調性:導數與臨界點
fp = sp.diff(f, x)
print("f'(x) =", sp.simplify(fp))            # 4*x/(x**2 + 1)**2
print("臨界點:", sp.solve(sp.Eq(fp, 0), x))  # [0]
# x<0 遞減、x>0 遞增 → x=0 是極小點

# 4. 漸近線
print("水平漸近線:y =", sp.limit(f, x, sp.oo))   # y = 1

# 5. 畫圖驗證
xs = np.linspace(-5, 5, 400)
plt.plot(xs, sp.lambdify(x, f, 'numpy')(xs),
         label="$f(x)=\\frac{x^2-1}{x^2+1}$")
plt.axhline(1, color="red", ls="--", label="$y=1$(漸近線)")
plt.plot([-1, 1], [0, 0], "go", label="零點")
plt.plot(0, -1, "rs", label="極小 (0,-1)")
plt.ylim(-1.5, 1.5); plt.grid(alpha=0.3); plt.legend(); plt.show()

分析總表:

性質 結論
對稱 偶函數,對 \(y\) 軸對稱
零點 \(x = \pm 1\)
單調 \((-\infty, 0)\) 遞減、 \((0, \infty)\) 遞增
極值 極小值 \(f(0) = -1\)
漸近線 水平漸近線 \(y = 1\)
值域 \([-1, 1)\) (由極值與漸近線推出)

進一步挑戰:分析 \(f(x) = \dfrac{x}{x^2 + 1}\) (奇函數,極值在 \(x=\pm 1\) );求 \(f(x) = x + \frac{1}{x}\) 的垂直與斜漸近線;擴充 check_symmetry 偵測「對直線 \(x = c\) 對稱」。


小結與練習#

  • 對稱性可用 f.subs(x, -x) + simplify 機械驗證;任意函數 = 奇部 + 偶部
  • 單調性先取樣猜測,嚴格判定靠 \(f'\) 正負(第 5 章)
  • 極值候選 = \(f' = 0\) 的根 ∪ 端點,數值取樣可佐證
  • limit 探索水平/斜漸近線( \(x \to \pm\infty\) )與垂直漸近線(發散)
  • 完整分析 = 對稱、零點、單調、極值、漸近線,最後畫圖收尾

練習:

  1. 分析 \(f(x) = x^4 - 4x^2\) 的對稱性、零點與極值並畫圖。
  2. 用程式化簡證明:偶函數乘偶函數是偶函數、奇函數乘偶函數是奇函數。
  3. 求 \(f(x) = \dfrac{x^2 + 2x}{x - 1}\) 的垂直與斜漸近線並疊畫。
  4. 驗證 \(f(x) = e^{-x^2}\) 是偶函數、漸近線 \(y = 0\) ,並求最大值位置。