電腦代數與符號計算

符號化簡(symbolic simplification)

當你寫下 2x + 3x,你本能地把它改寫成 5x;你也會毫不猶豫把 sin^2(t) + cos^2(t) 變成 1。符號化簡就是電腦代數系統自動做同樣的整理:合併同類項、消去公因式、套用已知恆等式,總之把一個表達式改寫成更整潔但相等的形式。正是這個功能讓電腦代數系統感覺像「懂」代數,而非只是把它存起來。

在機制上,化簡是一條改寫規則與結構操作的流水線。數值子表達式被求值、分數被約分(3/6 變成 1/2);同類項被合併(x + x 變成 2x);公因式被消去,常透過計算多項式最大公因式,使 (x^2 - 1)/(x - 1) 塌縮成 x + 1;而在系統確信成立之處套用恆等式。許多步驟仰賴標準形——一旦兩個表達式被化為相同的標準形狀,相等之物就明顯相等。深層的困難在於「較簡」沒有單一定義:x^2 - 1 比 (x - 1)(x + 1) 簡嗎?這取決於你接下來要做什麼,所以電腦代數系統提供許多口味(展開、因式分解、合併同類項、合併分式),而非一顆魔法按鈕。

化簡之所以重要,是因為原始的符號結果常是一團亂麻,而整潔的形式才能讓答案可讀、可比較、或求值得快。誠實的告誡很深。第一,完美化簡一般而言不可能:判定一個表達式是否等於零(零等價問題)對足夠豐富的類別是不可判定的,所以電腦代數系統可能化簡不了一個其實很簡單的東西。第二,化簡可能無聲地改變函數的定義域——從 (x^2 - 1)/(x - 1) 消去 (x - 1) 會抹掉 x = 1 處的洞,而把 sqrt(x^2) 寫成 x 對負的 x 是錯的。激進的化簡是微妙、真實臭蟲的常見來源。

化簡 (x^2 - 1)/(x - 1)。把分子因式分解為 (x - 1)(x + 1),消去共同的 (x - 1),得到 x + 1——整潔多了。但要小心:原式在 x = 1 處無定義(零除以零),而 x + 1 在那裡卻安然無恙。這個「較簡」的形式悄悄多得了一個原式從未擁有的點。

消去整理了表達式,卻可能在 x = 1 處改變它的定義域。

不存在客觀的「最簡」形式,也沒有任何演算法能完全化簡每個表達式——那其實是零等價問題的化身。更糟的是,化簡可能改變函數的定義域或分支,所以自動「化簡」後的結果不一定處處等於原式。

又稱
expression simplificationautomatic simplification化簡表達式化簡