化用賈憲三角 ∗ 妙算冪和
王 猷
摘要: 正整數 [註
1
] 的冪和似乎是個永恆的話題, 眾述紛紜。 本文致力於介紹一種便 捷的算法 [1], 並且創作出一款優雅的證明。 此算法屬線性代數型, 其特色在於無需 遞推。 令人驚訝的是, 冪和竟然與 「賈憲三角」 有著密切的關係!1. 緒論
開門須見山。 本文之核心乃下述定義及定理。
定義: 所謂 「前 n 個正整數的 p 次冪和」, 是指 Sp(n) =
Xn m=1
mp = 1p+ 2p+ · · · + np, p∈ N. (1)
定理: 冪和 Sp(n) 是關於 n 的、 缺常數項的 p + 1 次多項式, 即 Sp(n) =
Xp+1 q=1
aqnq = aTn, (2) 這裡
a=h
a1 a2 · · · ap+1 iT
, n=h
n n2 · · · np+1 iT
; 並且向量 a 滿足方程
1 0
− 20 3
0
· · · (−1)p−1 p0
(−1)p p+10
2 1
− 31
· · · (−1)p−2 p1
(−1)p−1 p+11
3 2
· · · (−1)p−3 p2
(−1)p−2 p+12 . .. ... ...
0
p−1p− p+1p−1
p+1 p
a1 a2 a3 ...
ap ap+1
=
0 0 0 ...
0 1
, (3)
∗ 在歐美稱作 「巴斯卡三角形」
(Pascal’s triangle)
。[
註1]
本文約定:
正整數集Z
+= {1, 2, 3, . . .},
自然數集N = {0, 1, 2, . . .}
。81
其中p q
= p!
q!(p − q)! 為二項式係數。
我們把位於 (3) 式左邊的那個矩陣作U[註
2
], 其代表元素為uij =
(−1)j−i
j i− 1
, 當 i ≤ j;
0, 當 i > j.
(4)
再者, 記 [0 · · · 0 1
| {z }
p+1
]T = e. 於是, 可將 (3) 式簡寫為
Ua= e. (3′)
如果您很細心的話, 想必已經發現了:
(i) 祇要將 U 轉置, UT 中的所有非零元素便構成了缺一層斜邊的、 正負項交錯的賈憲三角;
(ii) e 是 Rp+1 的標準基底向量 (standard basis vectors) 之一。
2. 證明
不證明, 未可信!
筆者思索出的證明分為三個步驟, 請跟我來——
第一步 縮和 (telescoping sum)
由二項式定理, 有
(m − 1)r+1= Xr+1 q=0
r + 1 q
(−1)r+1−qmq
=hXr
q=0
r+ 1 q
(−1)r+1−qmq i
+ mr+1,
移項[註
3
], 得Xr q=0
(−1)r−qr + 1 q
· mq = mr+1− (m − 1)r+1. (5)
在 (5) 式中依次令 m = 1, 2, · · · , n, 一舉獲得 n 個等式。 纍加諸式, 縮和其右端, 列豎式如
[
註2] Upper triangular matrix,
上三角陣。[
註3]
注意, Σ -
和式中的各項皆須變號,
即改(−1)
r+1−q 為(−1)
r−q 。下: Pr
q=0(−1)r−q r+1q
· 1q = 1r+1 − 0r+1 Pr
q=0(−1)r−q r+1q
· 2q = 2r+1 − 1r+1 ... ... ... +) Pr
q=0(−1)r−q r+1q
· nq = nr+1− (n − 1)r+1 Pr
q=0(−1)r−q r+1q
· Sq(n) = nr+1− 0r+1 由此, 我們得出重要的等式
Xr q=0
(−1)r−qr + 1 q
· Sq(n) = nr+1. (6)
第二步 佈陣 [
註4]
將 (6) 式左邊寫為兩個 r + 1 維向量相乘的形式, 得
"
(−1)r
r+ 1 0
(−1)r−1
r+ 1 1
· · ·
r+ 1 r
#
S0(n) S1(n)
...
Sr(n)
= nr+1. (6′)
在 (6′) 式中依次令 r = 0, 1, · · · , p, 總共得到 p + 1 個等式。 合併眾式如下:
1 0
− 20 2
1
0
3 0
− 31 3
2
... ... ... . ..
(−1)p−1 p0
(−1)p−2 p1
(−1)p−3 p2
· · · p−1p (−1)p p+10
(−1)p−1 p+11
(−1)p−2 p+12
· · · − p+1p−1 p+1
p
S0(n) S1(n) S2(n)
... Sp−1(n)
Sp(n)
=
n n2 n3 ... np np+1
.
(7) 我們把位於 (7) 式左邊的那個矩陣記作 L[註
5
], 顯然其轉置LT = U. (8)
再者, 記[S0(n) S1(n) · · · Sp(n)]T = s 。 於是, 可將 (7) 式簡寫為
Ls= n. (7′)
[
註4]
構造矩陣。[
註5] Lower triangular matrix,
下三角陣。第三步 抽矢 [
註6]
顯而易見, L 的行列式 det L = (p + 1)! 6= 0, 故 L 可逆。 以其逆 L−1 同時左乘 (7′) 式 兩邊, 得
s= L−1n, (9)
從而
Sp(n) = row(s, p + 1) = row(L−1, p+ 1) n. [註
7
] 可見, 前述 aT = row(L−1, p+ 1)。 至此 (2) 式得證!另外, 由於 L−1L= E[註
8
], 因而row(L−1, p+ 1)L = row(E, p + 1).
把 row(L−1, p+ 1) = aT 及 row(E, p + 1) = [0 · · · 0 1
| {z }
p+1
] = eT 代入上式, 得
aTL= eT. (10)
最終, 我們有
Ua(8)= LTa= LT(aT)T = (aTL)T (10)= (eT)T = e.
至此 (3′) 式得證, 亦即 (3) 式成立!
3. 實驗
算法得以證明, 僅肯定了其正確性; 至於其實用性, 目前尚無法評價。 讓我們以 S9(n) 為 試金石, 看看此算法到底靈也不靈!
值得補充的是, 如若果真按照 (4) 式來計算 U 中的各個元素, 那定然使人難耐其繁, 好在 二項式係數具有一條可愛的性質:
p q
=p − 1 q
+p − 1 q− 1
. (11)
其證明極易, 故不贅言。 事實上, 賈憲三角正是據此而作成的 (可參閱 [3])。
[
註6]
在矩陣中抽取(
行/
列)
向量。 矢,
原義為 「箭」,
此處指 「矢量」——
向量的別稱。[
註7] row(M, r)
表示抽取矩陣M
的第r
行。[
註8] E = diag[1 · · · 1
| {z }
p+1
]
為單位矩陣。另外, 為了便於行文, 我們引進兩個名詞: 「上斜層, 下斜層」。 稱呼 r 階方陣的主對角線為 第 1 上 (下) 斜層, 緊貼於第 1 上 (下) 斜層上 (下) 方的副對角線為第 2 上 (下) 斜層, 以此類 推, 直至第 r 上 (下) 斜層——方陣右上 (左下) 角的單個元素。
以下, 我們就來陳述 S9(n) 的演算流程。 對照前文所給出的定理、 公式及下面這個方程, 各道工序都是易於理解的。
1 −1 1 −1 1 −1 1 −1 1 −1
2 −3 4 −5 6 −7 8 −9 10
3 −6 10 −15 21 −28 36 −45 4 −10 20 −35 56 −84 120 5 −15 35 −70 126 −210
6 −21 56 −126 252 7 −28 84 −210
0
8 −36 1209 −45 10
a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
=
0 0 0 0 0 0 0 0 0 1
(A) 指定冪次 p = 9。
(B1) 製作 p + 1 階方陣 U0, 使之符合下列要求:
• 首行的所有元素均為 1;
• 屬於主對角線的諸元素, 從左至右依次為 1, 2, · · · , p + 1 ;
• 主對角線上方的其餘元素, 皆等於各自的左鄰元與左上鄰元之和;[註
9
]• 主對角線下方的所有元素均為 0。
(B2) 在 U0 中, 將序號為偶數的 「上斜層」 全部冠以負號, 於是生成方陣 U。
(C) 採用 「逆向代入法」(backward substitution) 求解方程 Ua = e, [註
10
] 從而解出向量 a。(D) 以 n 的降冪為序, 展示 Sp(n) = aTn。
上述流程完全是機械化的, 因而可以利用數學軟體來實現。 筆者所用的是著名的 Maple 8, 該軟體具有強大的符號運算功能。 下面, 請您瀏覽這段 Maple 程式, 它結構清晰, 一目了然。
[
註9]
依據(11)
式。[
註10]
因為U
是行-
階梯形矩陣。> with(LinearAlgebra): > end do:
> p:=9: > end do:
> r:=p+1: > for j from 1 to r do
> m:=Vector(r): > for i from 1 to j do
> U:=Matrix(r,shape=triangular): > U[i,j]:=(-1)^(j-i)*U[i,j]:
> for j from 1 to r do > end do:
> m[j]:=n^j: > end do:
> U[1,j]:=1: > E:=IdentityMatrix(r):
> U[j,j]:=j: > e:=Column(E,r):
> end do: > a:=BackwardSubstitute(U,e):
> for j from 3 to r do > S:=DotProduct(a,m):
> for i from 2 to j-1 do > S:=sort(S);
> U[i,j]:=U[i,j-1]+U[i-1,j-1]:
激活 Maple 8, 在其工作窗口中輸入並執行以上程式, 一眨眼, 聰明的 Maple 便算出了 下述結果。
S := 1
10n10+ 1
2n9+3
4n8 − 7
10n6+ 1
2n4− 3 20n2
即使將源程式的第二行改為 p := 500 : , 且以低檔電腦執行之, 耗時也不過 20秒而已。 算法如 此快速, 其實用性毋庸置疑!
4. 猜想
猜想, 起源於觀察。
欲全面觀察各次冪和, 最佳途徑莫過於求出 (9) 式中之 L−1, 因為它的第 q + 1 行給出 了 Sq(n) 的係數。 下面, 我們就用 Maple 來計算 14 階的 L−1。 為此, 將源程式的第二行改成 p := 13 : , 並將其末尾四行替換成左下方的兩行[註
11
]。> L:=Transpose(U):
> L1:=ForwardSubstitute(L,E); L1 :=
14 × 14 Matrix Data Type: anything Storage: rectangular Order: Fortran order
[
註11]
在程式中以L1
表示L
−1。執行修改後的程式, 輸出如右上方所示——狡猾的 Maple 不直接顯示超過 10 階的矩陣, 解決辦法是分塊顯示。 例如, 指令 SubMatrix(L1, 8..14, 1..7); 可用來顯示 L1 左下角的 7 × 7 子塊, 餘者仿此。 人工拼接這些子塊, 得到
L−1 =
1
1 2
1 2 1
6
1 2
1 3
0 14 12 14
−301 0 13 12 15 0 −121 0 125 12 16
1
42 0 −16 0 12 12 17
0 121 0 −247 0 127 12
−301 0 29 0 −157 0 23 0 −203 0 12 0 −107 0
5
66 0 −12 0 1 0 −1
0 125 0 −118 0 116 0
−2730691 0 53 0 −3310 0 227 0 −691420 0 6512 0 −14320 0
0
1 8 1 2
1 9 3 4
1 2
1 10
0 56 12 111
−118 0 1112 12 121 0 −116 0 1 12 131
143
28 0 −14360 0 1312 12 141
不難發現, 在 L−1 中:
(i) 第 1 下斜層 (即主對角線) 的第 r 個元素為 1
r (r = 1, 2, · · · , 14);
(ii) 第 2 下斜層的所有元素皆為 1 2;
(iii) 第 3–14 下斜層的符號特徵可以列表如下——Eureka! 週期性!
下斜層 3rd 4th 5th 6th 7th 8th 9th 10th 11th 12th 13th 14th
符號 + 0 − 0 + 0 − 0 + 0 − 0
掌握了以上三條線索, 順藤摸瓜, 筆者提出下述猜想——
猜想: 對於任意 p ∈ N, 冪和多項式
Sp(n) = ap+1np+1+ apnp+ · · · + a1n 之係數滿足下列條件:
ap+1 = 1
p+ 1, ap = 1
2; (12a)
sgn ap−q = sinqπ
2 (q = 1, 2, · · · , p − 1).[註
12
] (12b)事實上, (12a) 式是容易證明的, 祇需解出方程 (3) 底端的兩行
p p− 1
ap−p + 1 p− 1
ap+1= 0
p + 1 p
ap+1= 1 即可。 至於 (12b) 式, 就留與諸位研究吧。
5. 結語
本文所介紹的冪和算法, 屬於 H. J. Schultz [1]。 他在推測[註
13
](2) 式成立的基礎上, 用「未定係數法」 導出了方程 (3)。 無疑, 如此推導存在著漏洞。 儘管該漏洞可以被彌補: 用 「縮和 法 + 數學歸納法」, 證明 (2) 式並非很困難 (可參閱 [2])——但是打了補丁的方案畢竟 「真而 不美」。
創作一款 「真而美」 的證明! 這, 便是筆者的初衷。 之後, 筆者收穫了稱心如意的證明, 進 而編程解決了冪和多項式的係數計算問題。 不料, 卻又引出了更為複雜的係數結構問題, 可謂
「庸人自擾」。 然而, 「探索無止境」, 這不恰是數學的魅力所在嘛!