2.2 試算表與矩陣運算#
本章導言#
2.1 節把試算表變成了一個向量,本節要完成下一步:把「編製試算表」這件人工工作,變成一連串矩陣乘法。驅動這一步的還是實務:一家現代集團有數千個總帳科目、數十個部門、數種產品線,管理層要的不是一張總表,而是「每個部門 × 每類科目」的交叉彙總。人工小計一旦超過兩個維度就必然出錯,而矩陣運算把這件事變成機械化的算術——會計是第一個大規模使用矩陣的行業之一,比物理學家更早。
一、試算表是向量,過帳是矩陣乘法#
設有 \(n\) 個科目、 \(m\) 筆分錄。把每筆分錄寫成帶號向量(借 \(+1\) 、貸 \(-1\) ),排成 \(n \times m\) 的分錄矩陣 \(J\) (第 \(k\) 行是第 \(k\) 筆分錄),金額放進對角矩陣 \(D = \operatorname{diag}(a_1,\ldots,a_m)\) ,則期初餘額 \(\mathbf{b}_0\) 與期末餘額 \(\mathbf{b}\) 之間有
其中 \(\mathbf{1}\) 是 \(m\) 維的全 1 向量。展開看: \(D\mathbf{1}\) 把金額排成列向量, \(JD\mathbf{1}\) 把每筆金額「撒回」它所屬的科目、並帶上借貸號誌——這一步正是「過帳」。第 1 章帳房裡的手工流程,在線性代數裡只是兩次矩陣乘法。
守恆式隨之而來:因為每行(每筆分錄)的帶號分量和為 0,即 \(\mathbf{1}^{\mathsf T}J = \mathbf{0}^{\mathsf T}\) ,故
試算表兩方永遠相等,不再需要逐筆重算。
二、多維彙總:部門矩陣與科目矩陣的乘積#
真正讓矩陣不可或缺的是交叉彙總。設有 \(p\) 個部門、 \(n\) 個科目,令矩陣 \(M\) 的 \((i,j)\) 元素為「部門 \(j\) 在科目 \(i\) 上的餘額」。管理層常要兩種總和:
- 各科目全公司合計: \(\mathbf{t} = M\,\mathbf{1}_p\) ( \(n \times p\) 乘 \(p \times 1\) ),得到 \(n\) 維向量,即傳統試算表;
- 各部門總額: \(\mathbf{g} = \mathbf{1}_n^{\mathsf T}M\) ( \(1 \times n\) 乘 \(n \times p\) ),得到 \(p\) 維行向量,即部門別損益表。
一個矩陣 \(M\) 同時供養兩張報表,這就是「資料一元化」的數學根據。更進一步,若想看「每個部門分別的資產=負債+權益」,只需在 \(M\) 左乘號誌向量 \(\mathbf{s}^{\mathsf T}\) (借方科目 \(+1\) 、貸方科目 \(-1\) ):
每一列(每個部門)各自守恆——部門帳也是複式簿記,只是座標多了一個部門軸。
例題 2.2.1#
某公司兩個部門(甲、乙)期末科目餘額如下(單位:元):
| 科目 | 甲部門 | 乙部門 | 全公司合計 |
|---|---|---|---|
| 現金 | 30,000 | 12,000 | 42,000 |
| 應收帳款 | 15,000 | 6,000 | 21,000 |
| 存貨 | 25,000 | 20,000 | 45,000 |
| 應付帳款 | (18,000) | (9,000) | (27,000) |
| 業主資本 | (40,000) | (20,000) | (60,000) |
| 損益(收入減費用) | (12,000) | (9,000) | (21,000) |
(1) 以 \(M\) 表之, \(M\) 為 \(6\times 2\) 矩陣(帶號,貸方為負):
(2) 各科目合計: \(\mathbf{t} = M\mathbf{1}_2 = (42{,}000,\;21{,}000,\;45{,}000,\;-27{,}000,\;-60{,}000,\;-21{,}000)^{\mathsf T}\) ,此即第三欄。
(3) 守恆檢驗:取 \(\mathbf{s}^{\mathsf T}=(1,1,1,1,1,1)\) ,
兩個部門各自平衡。全公司 \(\mathbf{s}^{\mathsf T}\mathbf{t} = 42{,}000+21{,}000+45{,}000-27{,}000-60{,}000-21{,}000=0\) ✓。
(4) 資產負債結構:若號誌分資產負債兩段 \(\mathbf{s}_{A}^{\mathsf T}=(1,1,1,0,0,0)\) 、 \(\mathbf{s}_{L}^{\mathsf T}=(0,0,0,1,1,1)\) ,則資產合計 \(\mathbf{s}_{A}^{\mathsf T}M\mathbf{1}_2 = 108{,}000\) ,負債+權益+損益合計 \(\mathbf{s}_{L}^{\mathsf T}M\mathbf{1}_2 = 108{,}000\) ,兩端相等——會計方程在矩陣層次上重現。
三、從矩陣到電腦:試算表的數位血統#
1979 年 VisiCalc、1983 年 Lotus 1-2-3 之所以能在會計師事務所率先普及,正因為試算表的「格子+公式」結構天生就是矩陣:一格一格的數是矩陣元素,欄列總和是矩陣乘向量,跨表引用是矩陣的分塊。會計師不需要學過線性代數,就已經在用它。這是本書反覆出現的主題的又一例:實務工具往往先於理論被使用,理論的價值是把隱含的正確性說成定理(2.3 節的秩與零空間)。
再舉一個實務細節:報表的「層級彙總」也是分塊矩陣。若把 \(M\) 依科目類別切塊
其中 \(M_A\) 是資產類、 \(M_L\) 是負債與權益類,則資產負債表只需讀 \(M_A\mathbf{1}_p\) 與 \(M_L\mathbf{1}_p\) 兩塊、損益表只需讀 \(M_{I}\mathbf{1}_p\) ——同一份資料按列切塊,就是按報表分流。手寫時代會計師把總帳「分頁」的習慣,本質上是在做分塊矩陣的動作;理解了這一點,也就理解了為何科目編碼(第一碼代表類別)是所有會計系統的第一行設計。
前因後果與驅動關係#
- 實務驅動:十九世紀鐵路公司與大型銀行的帳目規模,逼出了「分部彙總、再總彙總」的層狀結構;二戰後電子計算機的第一批商業應用(1951 年 Lyons 公司的 LEO 電腦做茶餅與薪資結算)正是矩陣式的會計彙總。需求的形狀決定了工具的形狀。
- 理論的回饋:一旦過帳寫成 \(J D \mathbf{1}\) ,錯誤分類立刻可定位——若 \(\mathbf{b}\) 不平衡,差額向量 \(J D\mathbf{1}\) 的非零分量就指向出錯科目,偵錯從「翻帳本」升級為「解線性方程」(第 3 章的主題)。
- 跨章接點:本節的 \(J\) 就是 2.3 節的分錄矩陣(將進一步求秩與零空間);部門矩陣的「各自守恆」思想在 10.2 節合併報表中被推向母子公司多層結構;7.2 節的差異分解也是把一個總差額按矩陣維度拆開。
- 兄弟書接點:《管理的數學》第 3 章線性規劃的係數矩陣,其「資源流量不超過供給」的約束形式與本節守恆式同構;《經濟的數學》第 3 章的供需矩陣、第 10 章計量經濟的資料矩陣,都是「把經濟量排成矩陣」的同一動作。
練習#
- 三個部門的存貨餘額分別為 40,000、25,000、15,000,其他科目合計為:現金 30,000、應收 22,000、應付 (17,000)、資本 (80,000)、損益 (35,000)。請判斷此帳是否可能平衡(提示:資產合計與負債權益合計各為多少)。
- 寫出例題 2.2.1 中 \(M\) 的轉置 \(M^{\mathsf T}\) 的第一列,並說明 \(M^{\mathsf T}\) 的列對應什麼會計概念。
- 某分錄矩陣 \(J\) 為 \(5\times 4\) ,已知四筆分錄分別為:借現金/貸資本 20,000、借存貨/貸現金 8,000、借存貨/貸應付 5,000、借現金/貸收入 9,000。寫出 \(J\) 與 \(D\) ,並計算 \(JD\mathbf{1}\) 。
- 證明:若每筆分錄都平衡(每行帶號和為 0),則任意線性組合 \(\mathbf{b}_0 + JD\mathbf{1}\) 滿足 \(\mathbf{1}^{\mathsf T}\mathbf{b}=0\) (設 \(\mathbf{b}_0\) 已平衡)。
- 思考題:試算表軟體的「格子」與數學的「矩陣」有一個關鍵差異——格子可以是文字、公式或空。請討論:如果要對整份工作底稿做守恆檢驗,文字與空格應如何編碼?這個問題對應線性代數中什麼概念?
名詞速查表#
- **分錄矩陣 \(J\) **: \(n\times m\) 矩陣,第 \(k\) 行為第 \(k\) 筆分錄的帶號科目指示。
- **金額對角矩陣 \(D\) **:把各筆分錄金額放在對角線上,與 \(J\) 相乘即完成「金額分配」。
- **交叉彙總矩陣 \(M\) **:列為科目、行為部門(或產品、期間)的餘額矩陣。
- **號誌向量 \(\mathbf{s}\) **:標記科目借貸方向的 \(0/\pm 1\) 向量,左乘 \(M\) 即得守恆檢驗。
- 資料一元化:同一矩陣同時支援科目別與部門別報表的性質。
(本節完)