前言 科學計算與 SageMath 的介紹¶

(適用:台灣高中~大一;環境:SageMath / SageCell / Jupyter Notebook)

這本書在做什麼?¶

你可能已經會用紙筆算題目:展開、因式分解、解方程、畫函數圖、求極限與微積分……
但當題目變長、變複雜,或你想做「大量實驗」來建立直覺時,紙筆會很辛苦。

本書的目標是讓你用 SageMath(一套免費的科學計算與電腦代數系統)來:

  • 驗算:快速檢查你推導的式子是否正確
  • 探索:改參數、畫圖、做數值實驗,建立直覺
  • 整理:把解題步驟寫成可重複執行的筆記(Jupyter notebook)
  • 延伸:從高中題目自然連到大一的微積分、線代、機率與資料分析

重要:SageMath 不是要你「偷懶不學」,而是把計算的負擔交給電腦,
讓你把時間用在「理解概念、選方法、檢查合理性」。


什麼是科學計算?為什麼你需要它?¶

科學計算(scientific computing)大致包含三種工作:

  1. 數值計算(numeric):例如近似解、數值積分、用電腦模擬
  2. 符號計算(symbolic):例如因式分解、解方程、微分與積分的代數運算
  3. 可視化(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 系統。

  1. 到 conda.io 下載系統對應 Miniconda 並安裝。
  2. Windows 系統使用者打開 Anaconda Prompt,macOS 或 Linux 系統使用者,打開終端機。
  3. 輸入指定由 conda-forge 安裝穩定版本,並安裝 mamba:
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install -n base -c conda-forge mamba
  1. 建立獨立的新環境,其中 sage-env 是自訂的名稱:
conda create -y -n sage-env python=3.11
  1. 進入 sage-env:
conda activate sage-env
  1. 用 mamba 安裝 sage 套件:
mamba install -y sage
  1. 啟動方式:
sage -n jupyter

Notebook 的基本讀法¶

  • Markdown 格:用來寫文字、公式與步驟
  • Code cell:用來執行 SageMath 指令
  • 一個 notebook 就是一份「可重複執行的數學筆記」

接下來我們先用幾個最短的例子,體會 SageMath 的三大能力:
符號推導、數值計算、畫圖。

快速體驗 1:符號推導(展開、化簡、因式分解)¶

In [1]:
# 在 SageMath 裡,先宣告符號變數
var('x')

expr = (x+2)*(x-3)*(x+1)
expr
Out[1]:
In [2]:
# 展開(expand)、化簡(simplify)、因式分解(factor)
expr_expand = expand(expr)
expr_simplify = simplify(expr_expand)  # 這裡其實已經很簡單了,示範用
expr_factor = factor(expr_expand)

expr_expand, expr_simplify, expr_factor
Out[2]:

你可以把它當成「自動檢查」:

  • 你手算展開後得到某個多項式 $P(x)$,就用 expand(expr) 看看是否一致
  • 你手算因式分解得到某個形式,就用 factor(...) 驗算

小提醒:因式分解常有不同但等價的形式(例如差一個常數倍),
驗算時可以比較 simplify(你的式子 - 正確式子) 是否為 0。

快速體驗 2:數值計算(代入、近似值、精準值)¶

In [3]:
var('x')
f = (x^2 - 2) / (x - 1)

# 代入:用 f(x=...) 或 f.subs(...)
f(x=3), f.subs(x=3)
Out[3]:
In [4]:
# 精準值:Sage 常會保留分數或根號(exact)
g = sqrt(2) + 1/3
g
Out[4]:
In [5]:
# 近似值:用 N(...) 或 .n()
N(g), g.n()
Out[5]:

學習建議:

  • 先用 exact 形式推導(保留根號、分數)避免誤差擴散
  • 最後需要比較大小或估計時,再轉成 numeric 近似

這也會在「不等式」「極限」「微積分」章節一直派上用場。

快速體驗 3:畫圖(讓直覺跟得上推導)¶

In [6]:
var('x')
h = (x^2 - 2) / (x - 1)

# plot(函數, (變數, 下界, 上界))
plot(h, (x, -4, 4), ymin=-10, ymax=10)
Out[6]:
No description has been provided for this image

圖形常常能幫你抓到三件事:

  1. 定義域問題:例如分母為 0 的點
  2. 趨勢與極限:靠近某點或無限遠時的行為
  3. 解的數量:例如方程的根大概有幾個、在哪裡

注意:畫圖是輔助直覺,不是證明。
後面章節會教你如何把圖形觀察「轉回」嚴謹的符號推導。

本書的符號約定與常用指令(先看過即可)¶

你會在後面反覆看到下列指令:

  • var('x y'):宣告符號變數
  • expand(...):展開
  • factor(...):因式分解
  • simplify(...):化簡
  • solve(...):解方程(含聯立)
  • plot(...):畫圖(2D)
  • limit(...):極限
  • diff(...):微分
  • integral(...):積分
  • sum(...):求和(數列)
  • matrix(...), vector(...):線性代數與向量

不用急著背;遇到問題知道可以查回來就好。


學習守則:用 SageMath 時要避免的 3 個陷阱¶

  1. 把輸出當答案而不檢查條件
    例如解方程時可能出現「增根」或漏掉定義域限制。

  2. 只看數值近似,忘記精準形式
    尤其在極限、比較大小、證明題中,exact 常更可靠。

  3. 只靠畫圖下結論
    圖能看趨勢,但你仍需要符號推導或不等式來證明。


練習(不需交作業,目標是熟悉 notebook)¶

  1. 用 SageMath 計算並比較:

    • $\sqrt{50}$ 與 $5\sqrt{2}$ 是否相等?
    • 提示:simplify(sqrt(50) - 5*sqrt(2))
  2. 令 $p(x)=(x-1)^3-(x+1)^3$

    • 用 expand 展開
    • 用 factor 因式分解
    • 你觀察到什麼結構?
  3. 畫出 $y=\dfrac{x^2-1}{x-1}$ 的圖形,並回答:

    • $x=1$ 附近圖形長怎樣?
    • 你猜 $\lim_{x\to 1}\dfrac{x^2-1}{x-1}$ 是多少?

下一章開始,我們會把 notebook 當成「學數學的工作台」。
先從最基本的語法與物件開始:變數、運算、函數、清單、與畫圖細節。