第 16 章 電腦代數系統的應用策略¶

(適用:台灣高中~大一;目標:學會把 SageMath(CAS)當成「推理夥伴」而不是「答案機」,避免增根、分段漏解、數值誤差與黑箱誤判)

16.1 本章主旨:CAS 很強,但你要會「問對問題」¶

電腦代數系統(CAS, Computer Algebra System)例如 SageMath、Mathematica、Maple、SymPy… 可以做到:

  • 化簡、因式分解、解方程/不等式、求極限、微分、積分
  • 做符號推導與數值近似
  • 畫圖、做模擬、做資料分析

但 CAS 也會:

  • 因為你輸入方式不同而給不同形式的答案
  • 因為分段、定義域、參數條件而「看起來矛盾」
  • 因為數值近似而出現誤差
  • 因為「解的表示法」而讓你讀不懂

本章教你一套可重複使用的策略:

先想、再算、再驗、再解釋


16.2 四步工作流:Think → Compute → Check → Explain¶

Step 1:Think(先手算出結構)¶

問自己:

  • 這題屬於哪一類?(方程/不等式/極限/幾何/機率)
  • 定義域與限制是什麼?
  • 可能有哪些臨界點/分段點?
  • 我預期答案長什麼樣?(區間?幾個解?大概數值?)

Step 2:Compute(用 CAS 計算)¶

重點:不要只打一個指令就相信。

  • 用 factor, simplify, solve, limit, diff, integral…
  • 必要時改用更專門指令(如 solve_univariate_inequality)

Step 3:Check(驗算/交叉檢查)¶

至少做一種:

  • 代回原式檢查(方程)
  • 分段測試點(不等式)
  • 用圖形/取樣驗證趨勢(函數、極限)
  • 用另一種方法算一次(符號 vs 數值、不同化簡方式)

Step 4:Explain(把輸出翻譯成可讀答案)¶

把 CAS 的集合/條件表達轉成你熟悉的:

  • 解集區間、端點是否包含
  • 哪些點要排除(定義域)
  • 必要時用中文敘述原因

16.3 常見陷阱 1:化簡會「隱藏」定義域(洞洞問題)¶

例: $ f(x)=\frac{x^2-1}{x-1} $ 化簡後是 $x+1$,但原式在 x=1 沒定義。

CAS 會怎麼做?你要怎麼檢查?

In [1]:
var('x')
f = (x^2 - 1)/(x - 1)
simplify(f), factor(x^2 - 1)
Out[1]:

正確策略¶

  • 化簡後另記:原定義域排除 x=1
  • 若題目問函數圖形,應該畫「原式」看可去不連續
In [2]:
plot(f, (x, 0, 2), ymin=0, ymax=4)
Out[2]:
No description has been provided for this image

16.4 常見陷阱 2:平方、開根、分母相乘容易增根¶

例:解 $\sqrt{x+1}=x-1$¶

手算提醒:右邊必須 $\ge 0$ → x≥1。

如果你直接平方,可能引入不符合原式的解(增根)。

先讓 Sage 解,再用代入驗算。

In [3]:
var('x')
sol = solve(sqrt(x+1) == x-1, x)
sol
Out[3]:
In [4]:
# 驗算:把解代回原式(用 N 看數值)
cands = [s.rhs() for s in sol]
[(c, bool(simplify(sqrt(c+1) == c-1))) for c in cands]
Out[4]:

策略重點:任何涉及平方/同乘分母/取倒數的變形,CAS 給的解也要代回檢查。


16.5 常見陷阱 3:不等式一定要注意分段與定義域¶

例:解 $ \frac{x+1}{x-2}\le 0 $ x=2 必須排除。

用 solve 得解集後,再用測試點確認。

In [5]:
var('x')
ineq = (x+1)/(x-2) <= 0
sol = solve(ineq, x)
sol
Out[5]:
In [6]:
# 測試點檢查(選在各分段內)
f = (x+1)/(x-2)
test_points = [-10, 0, 3]
[(t, N(f(x=t))) for t in test_points]
Out[6]:

策略重點:不等式不要只看解集,要能用「臨界點+判號」把解集說明出來。


16.6 常見陷阱 4:多解/參數題的「條件」會被省略¶

例:含參數方程的解形狀¶

解 $ax=1$。

  • 若 a≠0:x=1/a
  • 若 a=0:無解

CAS 有時會回傳條件式。你要會讀。

In [7]:
var('a x')
solve(a*x == 1, x)
Out[7]:

策略重點¶

  • 看輸出是否含 a != 0 這種條件
  • 若 CAS 沒說清楚,自己把特殊情況分開討論

16.7 常見陷阱 5:數值近似的誤差與「假相等」¶

例:比較兩個看似相等的數: $ \sqrt{2}^2 \stackrel{?}{=} 2 $ 符號上一定相等,但若用浮點近似,可能出現 1.999999999...

策略:

  • 想要精確:用符號(exact)或有理數/代數數
  • 想要近似:用 N(...),但不要把近似當成證明

示範:

In [8]:
# 精確(符號)
sqrt(2)^2, simplify(sqrt(2)^2 - 2)
Out[8]:
In [9]:
# 近似(浮點)
N(sqrt(2))^2
Out[9]:

策略重點:遇到「應該等於」的檢查,優先用 simplify(expr1-expr2) 是否為 0; 不要用浮點比較 == 當證明。


16.8 交叉檢查技巧清單(超實用)¶

  1. 驗算方程解:把解代回原方程
  2. 不等式驗算:分段測試點 + 圖形
  3. 極限驗算:符號 limit + 數值取樣 + 局部畫圖
  4. 積分驗算:diff(integral(...)) 回到 integrand;定積分用 FTC
  5. 幾何驗算:內積=0(垂直)、叉積=0(平行)、距離公式與投影一致
  6. 機率驗算:精確計算 + Monte Carlo 模擬
  7. 多方法同算:factor/expand/simplify 多做幾次,看看是否一致

下面用一個「極限」做三重驗證: $ \lim_{x\to 0}\frac{\sin x}{x}=1 $

In [10]:
var('x')
expr = sin(x)/x

# 符號極限
limit(expr, x=0)
Out[10]:
In [11]:
# 數值取樣
vals = [(10^(-k), N(expr(x=10^(-k)))) for k in range(1, 7)]
vals
Out[11]:
In [12]:
# 局部圖形
plot(expr, (x, -0.2, 0.2), ymin=0.8, ymax=1.2)
Out[12]:
No description has been provided for this image

16.9 把 CAS 變成「學習工具」:三種使用方式¶

(A) 驗算器模式(最安全)¶

你先手算,CAS 只負責驗算。

  • 最適合考試準備與培養能力

(B) 探索模式(找規律/猜公式)¶

你先用數值/列舉/畫圖探索,猜到結果後再證明。

  • 最適合數列、機率、幾何、函數變化

(C) 自動推導模式(要很小心)¶

你讓 CAS 直接推導,但你必須:

  • 理解每一步是否等價(有沒有增根)
  • 能解釋最後結果與條件
  • 做完整的檢查

建議:高中到大一前期,以 (A)+(B) 為主,(C) 只在你能讀懂輸出時使用。


16.10 本書總結式建議:SageMath 的「可靠用法」¶

  1. 任何題目先寫出:定義域/限制/臨界點
  2. 求解後一定做至少一種驗算(代回/測試點/畫圖/數值)
  3. 看到分段、絕對值、根號、對數:特別小心條件
  4. 近似值只用來「檢查合理」,不要當證明
  5. 把 CAS 輸出翻譯成「你會寫在考卷上的答案」

練習題(附提示)¶

  1. 增根檢查:解 $\sqrt{x+4}=2-x$。
    提示:先寫出 2-x≥0;解出候選解後代回驗算。

  2. 不等式解讀:用 solve 解 $\frac{x^2-1}{x^2-4}>0$,並用測試點畫判號表驗算。
    提示:臨界點 ±1, ±2;注意分母為 0 排除。

  3. 連續/可微參數題: \n$ f(x)=\begin{cases} ax+b,& x<1\\\\ x^2,& x\ge 1 \end{cases} $ \n(a) 連續條件 (b) 可微條件。
    提示:連續:左極限=右值;可微:左右導數相等。

  4. 積分驗算:隨便選一個你算過的不定積分,用 diff(integral(...)) 驗證。
    提示:也可以自己寫反導數再 simplify 差。

5.(挑戰)多表示法一致: 用兩種方法求一個函數的極值點: (a) 用導數解 (b) 用圖形/取樣猜,再回去證明。
提示:例如 f(x)=x^4-4x^2+1。

🎉 恭喜!到這裡你已完成全書主要章節。
你可以用第 16 章的策略,把 SageMath 融入你未來所有數學學習:
「先想、再算、再驗、再解釋」。