前言 科學計算與 SageMath 的介紹¶
(適用:台灣高中~大一;環境:SageMath / SageCell / Jupyter Notebook)
這本書在做什麼?¶
你可能已經會用紙筆算題目:展開、因式分解、解方程、畫函數圖、求極限與微積分……
但當題目變長、變複雜,或你想做「大量實驗」來建立直覺時,紙筆會很辛苦。
本書的目標是讓你用 SageMath(一套免費的科學計算與電腦代數系統)來:
- 驗算:快速檢查你推導的式子是否正確
- 探索:改參數、畫圖、做數值實驗,建立直覺
- 整理:把解題步驟寫成可重複執行的筆記(Jupyter notebook)
- 延伸:從高中題目自然連到大一的微積分、線代、機率與資料分析
重要:SageMath 不是要你「偷懶不學」,而是把計算的負擔交給電腦,
讓你把時間用在「理解概念、選方法、檢查合理性」。
什麼是科學計算?為什麼你需要它?¶
科學計算(scientific computing)大致包含三種工作:
- 數值計算(numeric):例如近似解、數值積分、用電腦模擬
- 符號計算(symbolic):例如因式分解、解方程、微分與積分的代數運算
- 可視化(visualization):例如畫函數圖、參數曲線、統計圖表
高中到大一常見的痛點:
- 算式很長時容易手誤(尤其展開與合併同類項)
- 參數題/變動題想看趨勢,但手算一次只能看一個特例
- 圖形與解析式之間關係不夠直覺
- 「我解出來了」但不知道答案是否合理
SageMath 能把上述事情做得又快又可重現。
SageMath 是什麼?和一般計算機、Python 有什麼不同?¶
- 計算機:擅長數值運算,但不擅長符號推導(如精準因式分解)
- Python:非常通用,科學計算也很強,但「符號代數」需要額外套件(例如 SymPy)
- SageMath:整合了大量數學套件(含符號、數值、圖形、代數、幾何),並用 Python 做為語言介面
你可以把 SageMath 想成:「數學專用的 Python 超級工具箱」。
這本書的學習方式¶
每章都會有四種元素:
- 概念與直覺:先說要解決什麼問題、常見誤解在哪
- SageMath 操作:用最少指令完成必要工作
- 例題:從高中題逐步提高到大一的典型形式
- 練習:附提示(必要時附驗算方式)
你不需要一次記住所有指令。
你要建立的是:遇到某種數學任務,知道 SageMath 可以怎麼幫你。
使用環境:你可以怎麼跑 SageMath?¶
常見方式(依「方便程度」排序):
A. 直接用雲端 SageCell(最簡單)¶
- 打開 SageCell 網頁,貼上程式碼就能跑
- 缺點:不太適合長篇筆記整理(但適合快速試算)
B. 用線上平台(例如 CoCalc)¶
- 可以在 CoCalc 開 Jupyter notebook,適合做筆記
- 缺點:需要帳號/可能有資源限制(依平台規則)
C. 本機安裝 SageMath(最完整¶
方法一:在 Linux 系統安裝
- 本書是在 Ubutnu 20.04 (Linux) 下,使用系統搭配的套件。
安裝方式:
sudo apt update
sudo apt install sagemath
啟動方式:
sage -n jupyter
- 優點:功能完整、離線可用,可以用 jupyter notebook 做文字和程式碼搭配的筆記本。
- 缺點:安裝較花時間(但值得一次搞定),需對 Linux 系統有初步認識。
方法二:利用 Conda 環境安裝
適用於 Windows, macOS, Linux 系統。
- 到 conda.io 下載系統對應 Miniconda 並安裝。
- Windows 系統使用者打開
Anaconda Prompt,macOS 或 Linux 系統使用者,打開終端機。 - 輸入指定由 conda-forge 安裝穩定版本,並安裝
mamba:
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install -n base -c conda-forge mamba
- 建立獨立的新環境,其中 sage-env 是自訂的名稱:
conda create -y -n sage-env python=3.11
- 進入 sage-env:
conda activate sage-env
- 用 mamba 安裝
sage套件:
mamba install -y sage
- 啟動方式:
sage -n jupyter
Notebook 的基本讀法¶
- Markdown 格:用來寫文字、公式與步驟
- Code cell:用來執行 SageMath 指令
- 一個 notebook 就是一份「可重複執行的數學筆記」
接下來我們先用幾個最短的例子,體會 SageMath 的三大能力:
符號推導、數值計算、畫圖。
快速體驗 1:符號推導(展開、化簡、因式分解)¶
# 在 SageMath 裡,先宣告符號變數
var('x')
expr = (x+2)*(x-3)*(x+1)
expr
# 展開(expand)、化簡(simplify)、因式分解(factor)
expr_expand = expand(expr)
expr_simplify = simplify(expr_expand) # 這裡其實已經很簡單了,示範用
expr_factor = factor(expr_expand)
expr_expand, expr_simplify, expr_factor
你可以把它當成「自動檢查」:
- 你手算展開後得到某個多項式 $P(x)$,就用
expand(expr)看看是否一致 - 你手算因式分解得到某個形式,就用
factor(...)驗算
小提醒:因式分解常有不同但等價的形式(例如差一個常數倍),
驗算時可以比較simplify(你的式子 - 正確式子)是否為 0。
快速體驗 2:數值計算(代入、近似值、精準值)¶
var('x')
f = (x^2 - 2) / (x - 1)
# 代入:用 f(x=...) 或 f.subs(...)
f(x=3), f.subs(x=3)
# 精準值:Sage 常會保留分數或根號(exact)
g = sqrt(2) + 1/3
g
# 近似值:用 N(...) 或 .n()
N(g), g.n()
學習建議:
- 先用 exact 形式推導(保留根號、分數)避免誤差擴散
- 最後需要比較大小或估計時,再轉成 numeric 近似
這也會在「不等式」「極限」「微積分」章節一直派上用場。
快速體驗 3:畫圖(讓直覺跟得上推導)¶
var('x')
h = (x^2 - 2) / (x - 1)
# plot(函數, (變數, 下界, 上界))
plot(h, (x, -4, 4), ymin=-10, ymax=10)
圖形常常能幫你抓到三件事:
- 定義域問題:例如分母為 0 的點
- 趨勢與極限:靠近某點或無限遠時的行為
- 解的數量:例如方程的根大概有幾個、在哪裡
注意:畫圖是輔助直覺,不是證明。
後面章節會教你如何把圖形觀察「轉回」嚴謹的符號推導。
本書的符號約定與常用指令(先看過即可)¶
你會在後面反覆看到下列指令:
var('x y'):宣告符號變數expand(...):展開factor(...):因式分解simplify(...):化簡solve(...):解方程(含聯立)plot(...):畫圖(2D)limit(...):極限diff(...):微分integral(...):積分sum(...):求和(數列)matrix(...),vector(...):線性代數與向量
不用急著背;遇到問題知道可以查回來就好。
學習守則:用 SageMath 時要避免的 3 個陷阱¶
把輸出當答案而不檢查條件
例如解方程時可能出現「增根」或漏掉定義域限制。只看數值近似,忘記精準形式
尤其在極限、比較大小、證明題中,exact 常更可靠。只靠畫圖下結論
圖能看趨勢,但你仍需要符號推導或不等式來證明。
練習(不需交作業,目標是熟悉 notebook)¶
用 SageMath 計算並比較:
- $\sqrt{50}$ 與 $5\sqrt{2}$ 是否相等?
- 提示:
simplify(sqrt(50) - 5*sqrt(2))
令 $p(x)=(x-1)^3-(x+1)^3$
- 用
expand展開 - 用
factor因式分解 - 你觀察到什麼結構?
- 用
畫出 $y=\dfrac{x^2-1}{x-1}$ 的圖形,並回答:
- $x=1$ 附近圖形長怎樣?
- 你猜 $\lim_{x\to 1}\dfrac{x^2-1}{x-1}$ 是多少?
下一章開始,我們會把 notebook 當成「學數學的工作台」。
先從最基本的語法與物件開始:變數、運算、函數、清單、與畫圖細節。