薛昭雄來函暨林開亮回覆
梁教授:
頃閱數學傳播第 170 期 (2019 年 6 月) 文章“解常係數線性微分方程和遞推關係的新方 法 — 秦九韶和亥維賽的遺產”, 作者為林開亮先生。 這是一篇非常好的科普文章, 值得推介給 有興趣的讀者。
然而, 在第五節: 解整數同餘方程的求一術中, 作者提到
“如解方程
250x≡ 1 (mod 2017), (1) 你可能就無計可施了!”
本人覺得上面的敘述值得商榷, 因為 (1) 之解可用矩陣方法 (不必利用整數之帶餘除法), 請見文獻 [1] 及 [2]。 在 [2] 中 (請參閱 6.5 節) 已將 [1] 之方法推廣至求 gcd(a, b), a, b 為正 整數及求解線性不定方程 ax + by = c, 其中 a, b 與 c 均表非零整數且 gcd(a, b) | c。
下面是(1) 式之解之說
250 1 2017 0
將第一列乘(−8)
−−−−−−−−→
加到第二列
250 1 17 −8
將第二列乘(−15)
−−−−−−−−−→
加到第一列
−5 121 17 −8
將第一列乘(+3)
−−−−−−−−→
加到第二列
−5 121 2 355
將第二列乘(+3)
−−−−−−−−→
加到第一列
1 1186 2 355
即得 x ≡ 1186 (mod 2017)。
參考文獻
1. John R. Silvester, A matrix method for solving linear congruences. Math. Mag. 53(2) (1980), 90-92.
2. Richard S. Millman, Peter J. Shiue and Eric Brendan Kahn, Problems and Proofs in Numbers and Algebra, Springer International Publishing Switzerland, 2015.
薛昭雄 美國內華達州立大學教授
91
答薛昭雄教授 — 並附評論與反思
尊敬的薛教授:
謝謝您對拙文 [1] 的評論和建議。 特別感謝您指出的第 3 條意見, 因為我那裡沒有表達清 楚本意, 可能會讓讀者誤解。 第5節的註腳5, 本意就是建議讀者用求一術解同餘方程 250x ≡ 1 (mod 2017), 正如您在來信中所指出的那樣。 對於您提的其他三條意見, 我在關於中國古代數 學史的通俗報告 [2] 中也曾提到, 但只是點到為止, 未詳細展開。 謝謝您告訴我相關文獻, 這是 我之前沒有注意到的。
此外, 對於 [1], 我還有一些評論與反思, 想與您及其他讀者分享, 如下。 請您批評指正!
[1]探討微分方程
P (D)u = f
的求解, 其中 P 是一個複係數多項式, f 是一個擬多項式1, u 是未知函數。 也許應該指出, 只 要 f 連續, 就可以通過累次積分求出 u。 道理在於, 根據代數基本定理, P (D) 可以分解為線性 因數的乘積 (不妨設 P 的首項係數等於 1):
P (D) =
#n i=1
(D− λi), 若對 k = 1, . . . , n, 令 uk= (D− λk)uk−1, 而 u0 = u,則
un=
#n i=1
(D− λi)u0 = P (D)u,
於是, 為了求解方程 P (D)u = f, 我們只需對 k = n, n − 1, . . . , 1, 逐一求解 (D− λk)uk−1 = uk,
其中 un = f。 注意到, 每個方程都是一階線性微分方程, 都可直接求解。 作為例子, 我們來看 k = n的情況, 此時我們要求解的是
(D− λn)un−1 = f, 根據一階線性微分方程的基本結果 (下面也有推導),
un−1 = eλx
e−λxf.
1形如 eλxf (x) (其中 f (x) 為多項式) 的函數, 稱為擬多項式。 當 λ = 0 時, 我們得到真正的多項式 f (x)。
原則上據此可以依次求出 un−1, . . ., u0 = u。 不過, 這個方法的缺陷在於, 必須確定 P (D) 的因數分解; 這在通常情況下是很難辦到的。 在 f 為多項式或擬多項式的情形下, Euler 曾提 出待定係數法來求解, 這是通常教科書裡會介紹的方法。 Oliver Heaviside 則發展了運算元法, 其基礎則是無窮級數。2
[1]指出, 在 f 為擬多項式的情形, 這本質上可歸結為一個多項式同餘方程的求解, 而它可 以通過直接應用秦九韶的求一術來實現。
其實這篇文章還有許多可以改進的地方, 這裡我特別想指出的有五點。
第一 : [1] 建議的用求一術求解常係數線性微分方程或差分方程其實有一個平行的數論版本, 這就是著名的 RSA 解密算法(參見 [3, 4, 5]):
定理1 : [RSA 解密算法] 設 b, k, m 是給定的整數, m 是正整數, φ(m) 是其歐拉函數。
gcd(b, m) = 1 且 gcd(k, φ(m)) = 1.
則下述步驟, 給出同餘式
xk ≡ b (mod m) 的解。
用求一術解關於 u 的同餘方程
ku≡ 1 (mod φ(m)), 得到 u, 然後令 x = bu (mod m)。
第二 : [1] 第 8 節的第 (15) 式 (也見第 11 節練習 2) 其實有個名稱, 叫 “指數平移定理”
(Exponential Shift Theorem):
定理2 : [指數平移定理] 設
P (D) = an(x)Dn+ an−1(x)Dn−1+· · · + a1(x)D + a0(x),
其中 ai(x) 是區間 I 上的函數, D 是對 x 的求導運算元。 設 λ(x) 是區間 I 上的光滑函數,
2另一種處理方式是 Laplace 變換, 但正如
Gian-Carlo Rota在 Ten lessons I wish I had learned before I started teaching differential equations一文中指出的 (見 Lesson nine: Motivate the Laplace transform.)
Ordinarily, we motivate the Laplace transform by appealing to initial value problems for linear differ- ential equations with constant coefficients. But this motivation is rather thin: taking inverse Laplace transforms is no joke and initial value problems can be solved in other ways. I do not know how to properly motivate the Laplace transform· · ·
則在 I 上的 n 次可導函數空間上, 成立以下運算元等式:
e−λ(x)P (D)eλ(x) = P (D + λ(x)), 其中
P (D + λ(x)) = an(x)(D+λ(x))n+an−1(x)(D+λ(x))n−1+· · ·+a1(x)(D+λ(x))+a0(x).
特別地, 對 λ(x) = λx (此處 λ 為常數), 我們有
e−λxP (D)eλx= P (D + λ).
注意, 如同正文中一樣, 此處 e−λ(x) 與 e−λ(x) 均表示由各自決定的左乘運算元, P (D) 中的各個係數 ai(x) 也是如此理解。 更值得注意的是, (D + λ(x))k 是運算元 D + λ(x) 的 k 次冪, 因此要作為運算元的複合來理解, 不能視為普通的 (交換) 二項式展開。 例如, 計算 (D + x)2, 我們有
(D + x)2 = (D + x)(D + x)
= D2+ Dx + xD + x2
= D2+ (xD + 1) + xD + x2
= D2+ 2xD + x2+ 1, 其中我們用到了著名的對易關係
Dx− xD = 1,
它只不過是求導的 Leibniz 法則的直接應用 : 對任意的可導函數 f 有
Dx(f ) = D(x· f) = D(x) · f + x · D(f) = f + xD(f) = (1 + xD)f.
定理2的證明: 根據上述解釋, 我們只要證明對 P (D) = Dk, k = 0, 1, . . . , n 的情況證明即 可, 事實上不難發現, 只要證明 P (D) = D 的情況, 此時任取一個可導函數 f, 計算
(e−λ(x)Deλ(x))f = (e−λ(x)D)(eλ(x)f )
= (e−λ(x))D(eλ(x)f )
= (e−λ(x))(eλ(x)λ(x)f + eλ(x)Df )
= λ(x)f + Df
= (D + λ(x))f.
這個定理的一個直接應用是, 求解原文第 9 節中的廣義特徵方程 (見 [1, p. 71 ] (17) 式) (D− λ)my = 0, 容易看出, 在變數替換 y = eλxz 下, 上述方程等價於 Dmz = 0, 後一個方 程推出 z 的通解是次數小於 m 的多項式, 從而 y 具有形式
y = eλx(Cm−1xm−1 + Cm−2xm−2+· · · + C0), 即 y 為次數小於 m 的擬多項式。
此外, 該定理還可以倒過來應用, 即我們利用
eλ(x)P (D + λ(x))e−λ(x) = P (D) 來求解一個形如
P (D + λ(x))y = f 的方程。 容易看出在變數替換 y = e−λ(x)z 下, 只需要求解方程
P (D)z = eλ(x)f.
以下給出兩個例子:
例1: 求解 (D + λ(x))y = f , 根據前面的說明, 令 y = e−λ(x)z, 只需要求解方程 Dz = eλ(x)f。 積分得 z =
eλxf , 從而
y = e−λ(x)z = e−λ(x)
eλ(x)f,
這就是我們在討論一階線性微分方程 y+ py = q 時所得到的通解公式的等價表達。
例2: 前面我們已經算出 (D + x)2 = D2+ 2xD + x2+ 1, 於是可以討論方程 (D2 + 2xD + x2+ 1)y = f (x).
在變數替換 y = e−12x2z 下, 只需要求解方程
D2z = e12x2f.
連續積分兩次可得 z, 進而得出 y = e−12x2z。
第三: [1] 建議的方法可以直接引出關於矩陣微分方程 X = AX
的基本結果, 因為在 Jordan 標準型下, 這個方程組 (經過變數替換 X = P Y ) 約化為多個以 下形式的獨立方程:
Y = J Y,
其中 J 是(由 A 確定的) 一個 m 階 Jordan 塊。 當把這樣的方程明確寫出來之後, 不難發現 Y = (y1, . . . , ym)T 可以直接求解, 因為 yi 滿足 yi+1= (D− λ)yi, i = 1, . . . , m− 1, 從而 ym = (D− λ)m−1y1,而 (D − λ)ym= 0, 從而 (D − λ)m−1y1 = 0, 根據上面介紹的結果可 以確定 y1 的通解為
y1 = eλx
c0+ c1x + c2x2
2! +· · · + cm−1
xm−1 (m− 1)!
, 其中 c0, . . . , cm−1 為任意複數。 從而 Y 的通解為
Y = eλx
⎛
⎜⎜
⎜⎜
⎜⎜
⎜⎜
⎝
1 x x2!2 · · · (m−1)!xm−1 0 1 x . .. xm−2
(m−2)!
0 . .. ... ... ...
. .. ... ... ... x . .. ... ... ... 1
⎞
⎟⎟
⎟⎟
⎟⎟
⎟⎟
⎠
⎛
⎜⎜
⎜⎜
⎜⎜
⎜⎝ c0 c1 c2 ... cm−1
⎞
⎟⎟
⎟⎟
⎟⎟
⎟⎠
= Λ(x)· C,
其中 C = (c0, . . . , cm−1)T ∈ Cm。 注意, 矩陣 Λ(x)恰好是矩陣 xJ 的指數函數 Λ(x) = exp(xJ ), 這裡
J =
⎛
⎜⎜
⎜⎜
⎜⎜
⎜⎝
λ 1 0 · · · 0 0 λ 1 . . . 0 0 . . . ... ... 0 ... . . . ... ... 1 0 0 0 0 λ
⎞
⎟⎟
⎟⎟
⎟⎟
⎟⎠
是原始的 Jordan 塊。 大多數常微分方程的教科書的處理過於複雜, 他們往往先定義以方陣 A 為變數的指數函數 exp(A), 然後直接用公式 X = exp(At)C 給出方程 X = AX 的通解, 正如上面所指出的, 其實完全可以不提矩陣指數的分析概念。3事實上, [6] 就是先給出代數處理, 再介紹矩陣指數方法。 不過, 這些作者並未指出, 可以用以上更簡單的方法來求 Y = J Y , 他 們所用的仍然是待定係數法(見 [6, p.120])。
第四: 我們回顧一下上述求解思路, 會發現上述方法可用于求解形如 P (A)v = b
的方程, 其中 A 是某複綫性空間 V 上的線性運算元, b, v 分別是 V 上的已知向量與未知向 量, P 是一個給定的複係數多項式。
3甚至可以由此來定義指數函數。
求解的基本假定是: 設 b 有零化多項式 g(x)。 於是 b 落在空間 ker g(A), 設 g(x) = (x − λ1)m1· · · (x − λs)ms 完全分解, 則根據正文 p.72 定理 3 (即 [5, 定理5.2.1]), ker g(A) 有直 和分解:
ker g(A) = ker(A− λ1)m1⊕ · · · ⊕ ker(A − λs)ms
從而 b = b1+· · · + bs, 其中 bi ∈ ker(A − λi)mi, i = 1, . . . , s。 根據線性性質, 為求解方程 P (A)v = b,我們只需要對每個 bi, 求解方程 P (A)v = bi。 換言之, 我們可以不妨假定 b 滿足 (A− λ)mb = 0,即 b 是 A 的屬於特徵值 λ 的廣義特徵向量。
於是, 我們考慮多項式同餘方程
P (x)U (x)≡ 1 (mod (x − λ)m).
若 P (λ) = 0, 則上述方程有解, 並且可由求一術得到 U(x); 從而令 v = U(A)b 即可。
若 P (λ) = 0, 則不妨設 P (x) = (x − λ)nQ(x), 其中 Q(λ) = 0。 我們可以分兩步來求 解, 先解方程
(A− λ)nu = b,
若它無解, 則原方程無解; 若它有解 u, 再用求一術求解 Q(A)v = u。 注意向量 u 滿足 (A− λ)m+nu = (A− λ)m((A− λ)nu) = (A− λ)mb = 0,
而 Q(λ) = 0, 所以可以用求一術解出Q(A)v = u的解v, 並且它滿足 (A − λ)n(Q(A)v) = (A− λ)nu = b, 即 P (A)v = b。
綜上可見, 特解之所以能夠產生, 主要是因為, 在最簡單的情況, b 是 A 的廣義特徵向量 (而在更一般的情況, b 是 A 的不同的廣義特徵向量之和)。 例如, 當 A = D 是微分運算元時, 非齊次項 b 是 D 的廣義特徵函數, 即擬多項式 (參見前文對定理2的第一個應用)。 參見 [1, p.71] 的評注 1。
第五: 正如求一術可以推廣到求解同餘方程組, 這裡的方法也可以推廣到求解常係數線性微分 方程組與常係數線性遞推關係組。 我們只對於常微分方程組的情形, 說明大致思路。 這一點已經 為 Bourbaki 寫進他們的實變函數著作, 參見 Bourbaki [8] 第 4 章第 2.9 節。
設我們考慮的方程組形如
AX = b,
其中 A = (aij)m×n, 而每個元素 aij = aij(D) 是關於 t 的求導運算元 D = dtd 的多項式, b = (f1, . . . , fm)T, 各個fi 是 t 的已知向量值函數, X = (x1(t), . . . , xn(t))T 是未知向量值 函數。
求解思路如下, 設 D 為未定元 λ, 將 A 視為多項式環 R = C[λ] 上的矩陣, 根據主理 想整環矩陣的一個基本結果 (Smith 標準型), 我們知道, 存在可逆矩陣 P ∈ GL(m, R), Q ∈ GL(n, R) 使得
P AQ = Λ = diag[d1(λ), d2(λ), . . . , dr(λ), 0, . . . , 0], 其中 d1(λ), d2(λ), . . . , dr(λ) 為首一多項式, 且 d1(λ)| d2(λ)| · · · | dr(λ)。
在這個等式中將未定元 λ 替換為 D, 得到
P AQ = Λ = diag[d1(D), d2(D), . . . , dr(D), 0, . . . , 0], (其中 P, A, Q 我們用了同一個記號, 以避免符號複雜。)
注意到, 從 AX = b 可以得到方程
P AX = P b, 若我們令 Y = Q−1X, 則它等價於
ΛY = P b.
注意到, 由於 Λ 是對角矩陣, 所以上述方程可以變數分離為關於每個 yi 的方程, 如果這樣的方 程我們可以逐一判定它是否可解 (注意到若 P b 是多項式或擬多項式, 則用 [1] 介紹的方法即 可求解)。 在最理想的情況, 我們可以求出各個 yi, 從而定出 Y 。 現在我們要進一步求出 X。 注 意到, 從 Y = Q−1X 不難得到 X = QY , 現在 X 滿足 P AX = P b, 由 P 可逆不難推出 X 滿足原來的方程 AX = b。
以上方法的一個數論版本可用於求解線性丟番圖方程組, 見[2]。