跳轉到

附錄C:習題解答提示#

標題#

本附錄為第 1–9 章習題提供提示與部分 SymPy 驗證代碼。建議先自行完成,再回來對照。約定:

import sympy as sp
x, y = sp.symbols('x y')

第 1 章:代數的起源#

1.1 節(巴比倫與二次方程)#

習題 1( \(x^2 - x = 870\) ):配方得 \((x - \tfrac12)^2 = 870 + \tfrac14\) ,開方得 \(x = \tfrac12 + \sqrt{870 + \tfrac14} = 30\) 。

sp.solve(x**2 - x - 870, x)   # [-29, 30]

習題 2:sp.solve(2*x**2 - 7*x + 3, x) 得 \([\tfrac12, 3]\) ;驗證 \(r_1 + r_2 = \tfrac72 = -\tfrac{b}{a}\) 、 \(r_1 r_2 = \tfrac32 = \tfrac{c}{a}\) :

roots = sp.solve(2*x**2 - 7*x + 3, x)
[sp.simplify(sum(roots) - sp.Rational(7, 2)), sp.simplify(roots[0]*roots[1] - sp.Rational(3, 2))]   # [0, 0]

習題 3(枚舉有理根): \(\Delta = p^2 - 4q\) 為完全平方數時有理根。雙層迴圈:

[(p, q) for p in range(-5, 6) for q in range(-5, 6)
 if sp.sqrt(p**2 - 4*q).is_rational and p**2 - 4*q >= 0]

習題 4:sp.factor(x**2 - 5*x + 6) → \((x-2)(x-3)\) ;分解式的根恰是 solve 的根——分解與求根在 \(\mathbb{Q}\) 上等價(3.4 節主題)。

習題 5(試位法):假設 \(x_0\) ,算 \(f(x_0) = x_0 + \tfrac{x_0}{4}\) ,乘以修正比例 \(\tfrac{15}{f(x_0)}\) 。一次函數是齊次的(過原點),比例修正在一個步驟內精確;二次函數非齊次,比例修正後仍有誤差,故失效。

習題 6:由 \(x - y = 2\) 得 \(x = y + 2\) ,代入 \(xy = 600\) 得 \(y^2 + 2y - 600 = 0\) :

sp.solve([x*y - 600, x - y - 2], [x, y])   # [{x: 26, y: 24}, {x: -24, y: -26}]

1.2 節(花拉子米六型)#

習題 1:對消得 \(x^2 + x = 4\) ,屬於「平方加根等於數」(4 型);sp.solve(x**2 + x - 4, x) 驗證。

習題 2: \(x^2 + 21 = 10x\) 屬於「平方加數等於根」(5 型),口訣 \(x = \tfrac{10}{2} \pm \sqrt{25 - 21}\) :

sol = sp.solve(x**2 + 21 - 10*x, x)   # [3, 7]
sp.checksol(x**2 + 21 - 10*x, {x: 3}), sp.checksol(x**2 + 21 - 10*x, {x: 7})   # (True, True)

習題 3:classify(a, b, c) 依 \(a, b, c\) 正負零分派到六型;用 itertools.product([-1, 0, 1], repeat=3) 窮舉 \(a \ne 0\) 的 18 種情形,每種回傳型號非空即覆蓋。

習題 4:sp.expand((x + 5)**2) - (x**2 + 10*x + 25) 為 \(0\) ;大正方形 \(39 + 25 = 64 = 8^2\) ,即 \(x + 5 = 8\) 、 \(x = 3\) 。

習題 5:花拉子米不接受零係數,且「除以 \(x\) 」會丟失 \(x = 0\) 解:sp.solve(x**2 - 3*x, x) 回傳 \([0, 3]\) ——現代符號計算保留全部根。

習題 6(挑戰):對 8 種符號組合寫窮舉腳本,每種經「把負項移到對邊(還原)+合併同類項(對消)」後必化為六型之一;關鍵是證明化簡後至多兩類項。

第 2 章:群論#

2.1 節(拉格朗日與根的置換)#

習題 1:展開 \((r_1 + \omega r_2 + \omega^2 r_3)^3\) ,用 \(\omega^3 = 1\) 、 \(1 + \omega + \omega^2 = 0\) 與韋達關係化為 \(-27q\) :

r1, r2, r3, p, q = sp.symbols('r1 r2 r3 p q')
w = sp.exp(2*sp.I*sp.pi/3)
expr = (r1 + w*r2 + w**2*r3)**3 + (r1 + w**2*r2 + w*r3)**3
# 代入 r1+r2+r3=0、r1r2+r2r3+r1r3=p、r1r2r3=-q 後 sp.expand(expr) → -27*q

實作技巧:以 \(r_3 = -(r_1 + r_2)\) 、 \(r_1 r_2 = -q/r_3\) 逐步代入,或用 sp.symmetrize。

習題 2:取一具體四次式(如 \(x^4 - 2\) )的數值根,枚舉 \(\psi = (r_1+r_2)(r_3+r_4)\) 的 6 個值,用 sp.minimal_polynomial 或直接解出的根乘積核對其滿足一個三次方程。

習題 3:固定 \(\varphi\) 的置換 \(H\) :恆等置換固定一切; \(\sigma\varphi = \varphi\) 蘊含 \(\sigma^{-1}\varphi = \varphi\) (左乘 \(\sigma^{-1}\) ); \(\sigma\varphi = \tau\varphi = \varphi\) 蘊含 \((\sigma\tau)\varphi = \varphi\) 。三條即子群公理。

習題 4: \(\theta = r_1 r_2 + r_3 r_4\) 在 \(S_4\) 下的像有 \(3\) 個( \(\{12|34, 13|24, 14|23\}\) 配對),因為分組無序:

from sympy.combinatorics.named_groups import SymmetricGroup
S4 = SymmetricGroup(4)
r = list(sp.symbols('r1 r2 r3 r4'))
imgs = set()
for g in S4.elements:
    t = [0]*4
    for k in range(4):
        t[g(k)] = r[k]
    imgs.add((t[0]*t[1] + t[2]*t[3]))
len(imgs)   # 3

習題 5: \(S_5\) 的子群階必整除 \(120\) ; \(A_5\) 單且其真子群階最大為 \(12\) (可由共軛類計數論證),故不存在階 \(60\) 或 \(40\) 的其他子群——拉格朗日的「降次」策略在五次失效。

習題 6:仿習題 4 的程式碼,把 \(\varphi = r_1^2 r_2 + r_2^2 r_3 + r_3^2 r_1\) 換入,數出像集合大小(提示:不是 \(6\) ,這個函數的不對稱性更強)。

第 3 章:環、體與多項式#

3.1 節(環論的誕生)#

習題 1: \(\mathbb{Z}_7\) 每個非零元有乘法逆(sp.mod_inverse(a, 7) 全部成功); \(\mathbb{Z}_6\) 中 \(2 \cdot 3 = 0\) ——零因子即 \(2, 3\) :

[sp.mod_inverse(a, 7) for a in range(1, 7)]   # 全部存在
[(a, b) for a in range(1, 6) for b in range(1, 6) if (a*b) % 6 == 0]   # 含 (2,3), (3,4), ...

習題 2: \(a^2 + 5b^2 = 3\) , \(b \ne 0\) 時左邊 \(\ge 5\) , \(b = 0\) 時 \(a^2 = 3\) 無整數解。窮舉驗證:

[(a, b) for a in range(-10, 11) for b in range(-10, 11) if a*a + 5*b*b == 3]   # []

習題 3:sp.expand((2 + sp.sqrt(2))*(3 - sp.sqrt(2))) \(= 4 + \sqrt{2}\) ,形如 \(a + b\sqrt{2}\) ,故封閉。

習題 4:sp.minpoly(sp.sqrt(2) + sp.sqrt(5), x) → \(x^4 - 10x^2 + 1\) 。次數為 4:因 \(\mathbb{Q}(\sqrt2, \sqrt5)\) 的次數是 \(2 \cdot 2 = 4\) (塔式定理, \(\sqrt5 \notin \mathbb{Q}(\sqrt2)\) )。

習題 5(正則質數): \(p\) 正則 ⟺ \(p \nmid\) 所有 Bernoulli 數 \(B_2, B_4, \dots, B_{p-3}\) 的分子:

p = 37
nums = [abs(sp.bernoulli(k).p) for k in range(2, p - 2, 2)]
[37 % n == 0 for n in nums]   # 全 False → 37 是正則質數

習題 6: \(\alpha\) 滿足首一整係數 \(f\) ,則 \(-\alpha\) 滿足 \(f(-x)\) (仍首一整係數)、 \(\alpha^n\) 滿足結式 \(\operatorname{Res}(f(x), y - x^n)\) 之類的整係數首一多項式;或直接由代數整數環是環(封閉於乘法)論證。

習題 7:單位即 \(a^2 - 2b^2 = \pm 1\) 的解(Pell 方程)。遞推 \(x_{k+1} = 3x_k + 4y_k\) 、 \(y_{k+1} = 2x_k + 3y_k\) ,第一個大於 1 的單位是 \(3 + 2\sqrt2\) (來自 \(\sqrt2 \approx 1.4\) 的連分數)。

第 4 章:體論與 Galois 理論#

4.1 節(尺規作圖)#

習題 1: \(\sqrt2 + \sqrt3\) 由兩次開平方逐層加入,可作圖;

sp.minpoly(sp.sqrt(2) + sp.sqrt(3), x)   # x**4 - 10*x**2 + 1,次數 4 = 2²

習題 2:

sp.simplify(sp.cos(sp.pi/5) - (1 + sp.sqrt(5))/4)   # 0

\(\cos 36^\circ = \tfrac{1+\sqrt5}{4}\) 只用平方根,故正五邊形可作圖(Gauss–Wantzel: \(5\) 是費馬質數)。

習題 3:正 \(p\) 邊形可作圖 ⟺ \(\varphi(p) = p - 1\) 是 \(2\) 的冪(塔式定理:每次開平方使次數乘 \(2\) ):

[p for p in list(sp.primerange(3, 300)) if sp.factorint(p - 1) == {2: (p - 1).bit_length() - 1}]
# 3, 5, 17, 257, ...(費馬質數)

習題 4:sp.Poly(x**4 - 2, x).is_irreducible → True,次數 4 是 2 的冪,且 \(x^4-2\) 的根均實( \(\pm\sqrt[4]{2}\) 、 \(\pm i\sqrt[4]{2}\) ——注意有虛根),實際上 \(\sqrt[4]{2}\) 本身可作圖; \(\sqrt[6]{2}\) 的極小多項式 \(x^6 - 2\) 次數 6 非 2 的冪,不可作圖。

習題 5(挑戰): \(f = x^4 - 4x + 2\) 用 Eisenstein( \(p=2\) )不可約,故 \([\mathbb{Q}(\alpha):\mathbb{Q}] = 4\) ;但 sp.nroots 顯示 \(f\) 有兩個非實根,而可作圖數落在 \(\mathbb{R}\) 內的 2-塔中、必為實數,故實根 \(\alpha\) 不可作圖——「次數是 2 的冪」只是必要條件。

第 5 章:線性代數#

5.1 節(矩陣論起源)#

習題 1:

A = sp.Matrix([[1, 2], [3, 4]]); B = sp.Matrix([[0, 1], [1, 1]])
A*B, B*A   # 不相等

習題 2:取 \(A = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix}\) 、 \(B = \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}\) , \(AB = 0\) 但兩者非零——矩陣環有零因子,非整環。

習題 3:

A = sp.Matrix([[1, 2, 0], [3, 1, 2], [0, 1, 1]])
sp.simplify(A * A.adjugate() - A.det() * sp.eye(3))   # 零矩陣

習題 4: \(A = \begin{pmatrix} 1 & 1 \\ 0 & 1\end{pmatrix}\) ,A**10 得 \(\begin{pmatrix} 1 & 10 \\ 0 & 1 \end{pmatrix}\) ;歸納得 \(A^n = \begin{pmatrix} 1 & n \\ 0 & 1 \end{pmatrix}\) 。

習題 5:直接計算 \(2\times2\) 餘子矩陣: \(\operatorname{adj}(A) = \begin{pmatrix} d & -b \\ -c & a \end{pmatrix}\) ,再驗 \(A \cdot \operatorname{adj}(A) = (ad - bc) I\) 。

習題 6:

sp.linsolve((sp.Matrix([[1, 1], [2, 2]]), sp.Matrix([1, 3])), (x, y))   # EmptySet

係數矩陣秩 \(1 <\) 增廣矩陣秩 \(2\) ,故無解(Rouché–Capelli)。

第 6 章:表示論#

6.1 節(群特徵標)#

習題 1: \(C_4\) 交換,四個特徵標由 \(i \mapsto 1, i, -1, -i\) 給出,皆 1 維;群行列式 \(\prod_{\chi} \sum_g \chi(g) g\) 分解為四個線性因式:

C4 = sp.Matrix([[1, 1, 1, 1],
                [1, sp.I, -1, -sp.I],
                [1, -1, 1, -1],
                [1, -sp.I, -1, sp.I]])   # 行=群元素 g 的 x^g 列=特徵標
# Frobenius:det 對應四個線性因式的乘積(以變數 x, x², x³, x⁴ 計)

習題 2: \(V_4\) 四個元素皆 2 階,特徵標把每個元素映到 \(\pm 1\) ,共四個同態 \(V_4 \to \{\pm 1\}\) ,且自對耦 \(\widehat{V_4} \cong V_4\) (非退化配對)。

習題 3: \(S_4\) 的標準表示 = 置換表示減去平凡表示, \(\chi(\sigma) = \#\{k : \sigma(k) = k\} - 1\) :對類型 \((1^4), (2,1^2), (2,2), (3,1), (4)\) 分別為 \(3, 1, -1, 0, -1\) 。

習題 4: \(\chi(g) = \operatorname{tr}(\rho(g))\) ,而共軛 \(\rho(hgh^{-1}) = \rho(h)\rho(g)\rho(h)^{-1}\) 與 \(\rho(g)\) 有相同跡,故 \(\chi\) 是類函數。

習題 5(挑戰): \(6\times6\) 群行列式矩陣 \(M_{g,\chi} = \chi(g)\) (以符號變數 \(x_g\) 為權),sp.expand(sp.det(M)) 後按 Frobenius 公式應分解為次數 \(1,1,2\) 的三個不可約特徵多項式的冪( \(S_3\) 有維度 \(1, 1, 2\) 的表示)。

第 7 章:Grobner 基#

7.1 節(希爾伯特基定理與零點定理)#

習題 1:設 \(I \subseteq K[x]\) 非零,取 \(f \in I\) 次數最小;對任意 \(g \in I\) ,帶餘除法 \(g = qf + r\) , \(\deg r < \deg f\) 且 \(r = g - qf \in I\) ,由最小性 \(r = 0\) ,故 \(I = \langle f \rangle\) 。

習題 2: \(x^2, xy \in \langle x \rangle\) ,故 \(\sqrt{\langle x^2, xy \rangle} \subseteq \langle x \rangle\) ;反向 \(x^2 \in I\) 蘊含 \(x \in \sqrt I\) 。

習題 3:Rabinowitsch:在 \(\langle x^2, 1 - yx \rangle\) 中, \(y \cdot x^2 = x(yx) = x(1) = x\) (因 \(yx = 1\) ),故 \(x \in \langle x^2, 1-yx \rangle\) ,餘式為 0。

習題 4:

G = sp.groebner([x + y, y**2 - 1], x, y)
G.contains(sp.Integer(1))                     # False
sp.solve_poly_system([x + y, y**2 - 1], x, y)   # [(-1, 1), (1, -1)]:2 個複數點

習題 5: \(\mathbb{Q}[x,y]^G\) 的不變量是 \(x + y\) 與 \(xy\) (交換 \(x, y\) 不變的多項式由基本對稱式生成):

f = x**3 + y**3
sp.symmetrize(f, [x, y], formal=True)   # (s1**3 - 3*s1*s2, 0, [(s1, x + y), (s2, x*y)])

習題 6(挑戰):取 \(I = \langle x^2 + 1 \rangle \subseteq \mathbb{R}[x]\) , \(I \ne \mathbb{R}[x]\) 但 \(\mathbf{V}_{\mathbb{R}}(I) = \emptyset\) ( \(x^2 + 1\) 無實根)——弱零點定理需要代數閉性。

第 8 章:同調代數入門#

本書第 8 章各節未附習題,以下補充與正文配套的練習(正文檔案:8.2 正合序列與蛇引理、8.3 Ext 與 Tor、8.4 群同調)。

補充 1(蛇引理實例):對短正合列 \(0 \to \mathbb{Z} \xrightarrow{\times 2} \mathbb{Z} \to \mathbb{Z}/2 \to 0\) ,用 Snake 引理證 \(\operatorname{coker}(\times 2) = \mathbb{Z}/2\) 與 \(\ker(\times 2) = 0\) 的聯繫。驗證:

def Z_n(n):   # Z/nZ 的加法表
    return {(a, b): (a + b) % n for a in range(n) for b in range(n)}
[(a, 2*a % 2) for a in range(2)]   # ×2 映射的像只有 0

補充 2( \(\operatorname{Ext}\) 的計算): \(\operatorname{Ext}^1(\mathbb{Z}/n, \mathbb{Z}) \cong \mathbb{Z}/n\) 。由自由分解 \(0 \to \mathbb{Z} \xrightarrow{\times n} \mathbb{Z} \to \mathbb{Z}/n \to 0\) 與 \(\operatorname{Hom}(\mathbb{Z}, \mathbb{Z}) = \mathbb{Z}\) 得上鏈複形 \(\mathbb{Z} \xrightarrow{\times n} \mathbb{Z}\) ,餘核即 \(\mathbb{Z}/n\) 。

補充 3( \(\operatorname{Tor}\) 的計算): \(\operatorname{Tor}_1(\mathbb{Z}/m, \mathbb{Z}/n) \cong \mathbb{Z}/\gcd(m, n)\) :

sp.gcd(4, 6)   # 2:Tor_1(Z/4, Z/6) ≅ Z/2

補充 4(群同調): \(C_2\) 的標準複形給 \(H_1(C_2, \mathbb{Z}) = \mathbb{Z}/2\) 、 \(H_2(C_2, \mathbb{Z}) = 0\) ;驗證 \(H_{2k+1}(C_n, \mathbb{Z}) = \mathbb{Z}/n\) 、 \(H_{2k} = 0\) ( \(k \ge 1\) )的模式。

第 9 章:進階主題#

第 9 章各節未附習題,以下補充(正文:9.2 橢圓曲線、9.4 量子計算、9.5 專題實作)。

補充 1(橢圓曲線的群律):驗證 \(y^2 = x^3 - x + 1\) 上兩點的加法公式:

# P + Q 的斜率 m = (y2-y1)/(x2-x1),第三交點 (m²-x1-x2, m(x1-x3)-y1)
# 用 sp.solve 代入直線 y = m(x - x1) + y1 到曲線,確認第三根

補充 2(Shor 的序找尋):在 \(\mathbb{Z}_N^\times\) 中找 \(a\) 的階(即 Shor 需要的週期 \(r\) ):

def order_mod(a, N):
    r = 1
    while sp.Mod(a**r, N) != 1:
        r += 1
    return r
order_mod(3, 7)    # 6,即 φ(7):3 是 F_7^× 的本原根

補充 3(週期找尋與因數分解):若 \(r\) 偶且 \(a^{r/2} \not\equiv -1 \pmod N\) ,則 \(\gcd(a^{r/2} - 1, N)\) 給出非平凡因數。用 \(N = 15\) 、 \(a = 7\) ( \(r = 4\) )驗證: \(\gcd(49 - 1, 15) = 3\) 。

sp.gcd(7**2 - 1, 15)   # 3

回到 README