§29-1 分割與 Riemann–Stieltjes 和
要把一段區間「切成許多小段」寫成數學語言,需要哪些資料?切得更細這件事又該怎麼比較?而在每一小段上取代表值時,取哪一點會不會影響答案?
先把「切法」講清楚
家裡的電表只會往前走,數字從不倒退。抄表員來的時候,他不看電表現在停在幾度,他看的是「這一次的讀數減掉上一次的讀數」。
如果電價分時段——白天一個價、深夜另一個價——帳單就不能拿單一價格乘上整個月的總度數。得把一個月切成幾段,每一段算「那一段的電價乘上那一段走掉的度數」,最後全部加起來。這裡有一件事值得停下來看:每一段的份量不是它有幾天,而是電表在那一段走了多少格。兩段一樣長的日子,一段整天開著冷氣、一段全家出門,算出來的份量差得很遠。
帳單的算法裡其實藏著兩個可以分開處理的問題:一個月要怎麼切,以及每一段該算多重。本篇先把「怎麼切」寫成一個可以逐條檢驗的東西,再把「每一段算多重」交給一個可以自由挑選的函數——挑不同的函數,同一段時間就會被算出不同的份量。
這張圖在說「一個切法」需要哪些資料:一串由左到右的點,最左邊那個必須是區間的左端點、最右邊那個必須是右端點,而且總共只有有限多個。點一旦定下來,子區間也就跟著定下來了——相鄰兩點之間夾出來的那一段(藍色加粗的就是其中一段),不必另外指定。
Call Q a refinement of P, written P ≤ Q, when every partition point of P is also a partition point of Q.
這張圖在說加細到底做了什麼動作:虛線把上下兩排的舊分割點對齊,每一個都落在原來的位置上,下面那排只是額外多了三根藍線。所以加細永遠不會把某一段變長——新點只會把舊的子區間再切開,切不到的那幾段原樣保留。「挪動一個分割點」不在允許的動作之內。
這張圖在說為什麼「任兩個分割都有共同的加細」這件事不必費力去證:P 與 R 誰也不是誰的加細(各自那個中間點對方都沒有),可是把兩邊的分割點倒進同一個集合,得到的第三條線同時含住了上面兩條的每一個點。這個動作對任何兩個分割都做得出來,用到的只有「分割點只有有限多個」。
S(P; f, g) = Σ f(ξₖ)·[g(xₖ) − g(xₖ₋₁)],
the sum running from k = 1 to n.
Taking g(x) = x reduces it to the Riemann sum Σ f(ξₖ)(xₖ − xₖ₋₁).
S(P; f, g) = 0.25 × 1 + 2.25 × 1 = 2.5。
反例(針對「S(P; f, g) 是由 P 決定的一個數」這個誤讀):同一個 P、同樣兩個函數,改挑 ξ₁ = 1、ξ₂ = 2,得
S(P; f, g) = 1 × 1 + 4 × 1 = 5。
兩個數都有資格叫做「對應 P 的 Riemann–Stieltjes 和」,而 2.5 ≠ 5。
這張圖在說 29.1 把什麼東西鬆綁了:兩排長條的高完全一樣(同一個 f、同一個分割、同一組中間點),差別只在寬。右邊那排的寬畫的是 g 在該段的增量,不是子區間在數線上的長度——第二段被算得特別重,第一段與第三段幾乎不計。左邊是 g(x) = x 的情形,權重退化成長度,於是每一條的面積就是熟悉的「高乘寬」。
- 場地:J = [0, 2]、f(x) = 1 對每個 x 都成立。任取一個分割 P = (x₀, ⋯, xₙ)、任取一組中間點。因為 f 恆等於 1,每一項的代表值都是 1,中間點根本沒進到式子裡。
- 於是和只剩下一串增量相加:
S(P; f, g) = Σ [g(xₖ) − g(xₖ₋₁)]。
相鄰兩項裡的 g(xₖ) 一個帶正號、一個帶負號,逐項對消,最後只剩兩端:
S(P; f, g) = g(b) − g(a)。
由於中間所有的分割點都消掉了,這個值與切法無關、也與中間點無關——三個 g 的答案因此各自是一個固定的數。 - 第一個 g:g(x) = x。每一項的增量是子區間的長度,和就是全部長度相加,也就是 g(2) − g(0) = 2。拿 P = (0, 0.5, 1.7, 2) 實算:0.5 + 1.2 + 0.3 = 2,對上了。
- 第二個 g:g(x) = 5 對每個 x 都成立。任何一段的增量都是 5 − 5 = 0,所以和恆為 0;用第 2 步的式子看也一樣,g(2) − g(0) = 0。權重全部歸零,被積的是什麼都量不到。
- 第三個 g:g 在 [0, 1) 上取 0、在 [1, 2] 上取 7。第 2 步給 g(2) − g(0) = 7 − 0 = 7。細看是哪一段扛下這個 7:拿 P = (0, 0.5, 1.7, 2),三段的增量依序是 0、7、0,只有跨過 1 的中間那段不為零。換 P = (0, 1, 2) 再算一次:g(1) − g(0) = 7、g(2) − g(1) = 0,和還是 7,只是扛它的換成了第一段。
- 三個答案並排:2、0、7。f 從頭到尾都是同一個常數函數,一次也沒換過。
這張圖在說例 1 的三個答案是怎麼來的:和等於 g 右端點的值減左端點的值,所以只要看每張小圖的兩端差多少就夠了。左圖從 0 爬到 2,中圖從頭到尾停在 5(差為零),右圖在 x = 1 一口氣從 0 跳到 7(實心點是跳完之後的值)。三張圖的差異全在 g,被積的那個常數函數一次都沒換。
- 場地:J = [0, 1]、f(x) = x、g(x) = x。把 J 分成 n 等分,分割點是 xₖ = k/n,每一段的增量都是 1/n。
- 中間點全取左端,也就是 ξₖ = xₖ₋₁ = (k − 1)/n:
S = Σ ((k − 1)/n)·(1/n)
= (1/n²)·[0 + 1 + ⋯ + (n − 1)]
= (1/n²)·n(n − 1)/2 = (n − 1)/(2n)。 - 中間點全取右端,也就是 ξₖ = xₖ = k/n:
S = (1/n²)·[1 + 2 + ⋯ + n]
= (1/n²)·n(n + 1)/2 = (n + 1)/(2n)。 - 兩者相減:(n + 1)/(2n) − (n − 1)/(2n) = 2/(2n) = 1/n。這兩個和用的是同一個分割,差別只在中間點怎麼挑。
- 代數字看:n = 8 時左端給 7/16 = 0.4375、右端給 9/16 = 0.5625,相差 1/8。n = 100 時是 0.495 與 0.505,相差 0.01。
- 切得更細確實有幫助:由 §6-3 的 6.6 Archimedean 性質(任給一個實數,都有自然數比它大),把 1/ε 送進去就得到一個 n 使 1/n < ε。所以差距要多小有多小。可是「要多小有多小」不等於「是零」:n 一旦固定下來,這兩個和就實實在在相差 1/n。
- 中間點還可以挑得更任性——每一段各挑各的,左一段取左端、右一段取右端。這樣得到的和落在剛才那兩個數之間,而且有無限多種。S(P; f, g) 這個寫法指的不是一個數,是一整批數。
這張圖在說例 2 的 1/8 是怎麼跑出來的:兩邊切的是同一個八等分,斜線也是同一條 f(x) = x,差別只在每一條長條的高是取自該段的左端還是右端。左邊第一段的高是零(整條不見了),右邊最後一段的高是 1——兩排長條其實只差在頭尾各一階,那一階的面積正是 1 × (1/8)。段數加倍,那一階就減半,可是它從來不會變成零。
本篇把「切法」寫成了分割:有限多個點、兩端釘死,而加細只准加點不准挪點,於是任兩個分割都有共同的加細,加細後的子區間只會變短。Riemann–Stieltjes 和則把每一項寫成「代表值乘上該段的權重」,權重由 g 的增量給出——例 1 的三個 g 分別給出 2、0、7,例 2 則讓同一個分割給出了兩個不同的和。下一篇要把「越切越細會逼近同一個數」寫成一個禁得起檢驗的定義。先起來走一走、倒杯水,伸個懶腰再回來。
順帶一提:每個分割都是自己的加細——嚴格說起來,什麼都不做也算「切得更細」,只是切了零刀。