第 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 會怎麼做?你要怎麼檢查?
var('x')
f = (x^2 - 1)/(x - 1)
simplify(f), factor(x^2 - 1)
正確策略¶
- 化簡後另記:原定義域排除 x=1
- 若題目問函數圖形,應該畫「原式」看可去不連續
plot(f, (x, 0, 2), ymin=0, ymax=4)
var('x')
sol = solve(sqrt(x+1) == x-1, x)
sol
# 驗算:把解代回原式(用 N 看數值)
cands = [s.rhs() for s in sol]
[(c, bool(simplify(sqrt(c+1) == c-1))) for c in cands]
策略重點:任何涉及平方/同乘分母/取倒數的變形,CAS 給的解也要代回檢查。
16.5 常見陷阱 3:不等式一定要注意分段與定義域¶
例:解 $ \frac{x+1}{x-2}\le 0 $ x=2 必須排除。
用 solve 得解集後,再用測試點確認。
var('x')
ineq = (x+1)/(x-2) <= 0
sol = solve(ineq, x)
sol
# 測試點檢查(選在各分段內)
f = (x+1)/(x-2)
test_points = [-10, 0, 3]
[(t, N(f(x=t))) for t in test_points]
var('a x')
solve(a*x == 1, x)
# 精確(符號)
sqrt(2)^2, simplify(sqrt(2)^2 - 2)
# 近似(浮點)
N(sqrt(2))^2
策略重點:遇到「應該等於」的檢查,優先用
simplify(expr1-expr2)是否為 0; 不要用浮點比較==當證明。
16.8 交叉檢查技巧清單(超實用)¶
- 驗算方程解:把解代回原方程
- 不等式驗算:分段測試點 + 圖形
- 極限驗算:符號
limit+ 數值取樣 + 局部畫圖 - 積分驗算:
diff(integral(...))回到 integrand;定積分用 FTC - 幾何驗算:內積=0(垂直)、叉積=0(平行)、距離公式與投影一致
- 機率驗算:精確計算 + Monte Carlo 模擬
- 多方法同算:
factor/expand/simplify多做幾次,看看是否一致
下面用一個「極限」做三重驗證: $ \lim_{x\to 0}\frac{\sin x}{x}=1 $
var('x')
expr = sin(x)/x
# 符號極限
limit(expr, x=0)
# 數值取樣
vals = [(10^(-k), N(expr(x=10^(-k)))) for k in range(1, 7)]
vals
# 局部圖形
plot(expr, (x, -0.2, 0.2), ymin=0.8, ymax=1.2)
16.9 把 CAS 變成「學習工具」:三種使用方式¶
(A) 驗算器模式(最安全)¶
你先手算,CAS 只負責驗算。
- 最適合考試準備與培養能力
(B) 探索模式(找規律/猜公式)¶
你先用數值/列舉/畫圖探索,猜到結果後再證明。
- 最適合數列、機率、幾何、函數變化
(C) 自動推導模式(要很小心)¶
你讓 CAS 直接推導,但你必須:
- 理解每一步是否等價(有沒有增根)
- 能解釋最後結果與條件
- 做完整的檢查
建議:高中到大一前期,以 (A)+(B) 為主,(C) 只在你能讀懂輸出時使用。
16.10 本書總結式建議:SageMath 的「可靠用法」¶
- 任何題目先寫出:定義域/限制/臨界點
- 求解後一定做至少一種驗算(代回/測試點/畫圖/數值)
- 看到分段、絕對值、根號、對數:特別小心條件
- 近似值只用來「檢查合理」,不要當證明
- 把 CAS 輸出翻譯成「你會寫在考卷上的答案」
練習題(附提示)¶
增根檢查:解 $\sqrt{x+4}=2-x$。
提示:先寫出 2-x≥0;解出候選解後代回驗算。不等式解讀:用
solve解 $\frac{x^2-1}{x^2-4}>0$,並用測試點畫判號表驗算。
提示:臨界點 ±1, ±2;注意分母為 0 排除。連續/可微參數題: \n$ f(x)=\begin{cases} ax+b,& x<1\\\\ x^2,& x\ge 1 \end{cases} $ \n(a) 連續條件 (b) 可微條件。
提示:連續:左極限=右值;可微:左右導數相等。積分驗算:隨便選一個你算過的不定積分,用
diff(integral(...))驗證。
提示:也可以自己寫反導數再simplify差。
5.(挑戰)多表示法一致:
用兩種方法求一個函數的極值點:
(a) 用導數解 (b) 用圖形/取樣猜,再回去證明。
提示:例如 f(x)=x^4-4x^2+1。
🎉 恭喜!到這裡你已完成全書主要章節。
你可以用第 16 章的策略,把 SageMath 融入你未來所有數學學習:
「先想、再算、再驗、再解釋」。