跳轉到

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{b} = \mathbf{b}_0 + J\, D\, \mathbf{1}, \]

其中 \(\mathbf{1}\) 是 \(m\) 維的全 1 向量。展開看: \(D\mathbf{1}\) 把金額排成列向量, \(JD\mathbf{1}\) 把每筆金額「撒回」它所屬的科目、並帶上借貸號誌——這一步正是「過帳」。第 1 章帳房裡的手工流程,在線性代數裡只是兩次矩陣乘法。

守恆式隨之而來:因為每行(每筆分錄)的帶號分量和為 0,即 \(\mathbf{1}^{\mathsf T}J = \mathbf{0}^{\mathsf T}\) ,故

\[ \mathbf{1}^{\mathsf T}\mathbf{b} = \mathbf{1}^{\mathsf T}\mathbf{b}_0 + \mathbf{1}^{\mathsf T}JD\mathbf{1} = 0 + 0 = 0, \]

試算表兩方永遠相等,不再需要逐筆重算。

二、多維彙總:部門矩陣與科目矩陣的乘積#

真正讓矩陣不可或缺的是交叉彙總。設有 \(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\) ):

\[ \mathbf{s}^{\mathsf T}M = \mathbf{0}^{\mathsf T}, \]

每一列(每個部門)各自守恆——部門帳也是複式簿記,只是座標多了一個部門軸。

例題 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\) 矩陣(帶號,貸方為負):

\[ M=\begin{pmatrix} 30{,}000 & 12{,}000\\ 15{,}000 & 6{,}000\\ 25{,}000 & 20{,}000\\ -18{,}000 & -9{,}000\\ -40{,}000 & -20{,}000\\ -12{,}000 & -9{,}000\end{pmatrix}. \]

(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}M = (30{,}000+15{,}000+25{,}000-18{,}000-40{,}000-12{,}000,\; 12{,}000+6{,}000+20{,}000-9{,}000-20{,}000-9{,}000) = (0,\,0), \]

兩個部門各自平衡。全公司 \(\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 = \begin{pmatrix} M_A \\ M_L \end{pmatrix}, \]

其中 \(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 章計量經濟的資料矩陣,都是「把經濟量排成矩陣」的同一動作。

練習#

  1. 三個部門的存貨餘額分別為 40,000、25,000、15,000,其他科目合計為:現金 30,000、應收 22,000、應付 (17,000)、資本 (80,000)、損益 (35,000)。請判斷此帳是否可能平衡(提示:資產合計與負債權益合計各為多少)。
  2. 寫出例題 2.2.1 中 \(M\) 的轉置 \(M^{\mathsf T}\) 的第一列,並說明 \(M^{\mathsf T}\) 的列對應什麼會計概念。
  3. 某分錄矩陣 \(J\) 為 \(5\times 4\) ,已知四筆分錄分別為:借現金/貸資本 20,000、借存貨/貸現金 8,000、借存貨/貸應付 5,000、借現金/貸收入 9,000。寫出 \(J\) 與 \(D\) ,並計算 \(JD\mathbf{1}\) 。
  4. 證明:若每筆分錄都平衡(每行帶號和為 0),則任意線性組合 \(\mathbf{b}_0 + JD\mathbf{1}\) 滿足 \(\mathbf{1}^{\mathsf T}\mathbf{b}=0\) (設 \(\mathbf{b}_0\) 已平衡)。
  5. 思考題:試算表軟體的「格子」與數學的「矩陣」有一個關鍵差異——格子可以是文字、公式或空。請討論:如果要對整份工作底稿做守恆檢驗,文字與空格應如何編碼?這個問題對應線性代數中什麼概念?

名詞速查表#

  • **分錄矩陣 \(J\) **: \(n\times m\) 矩陣,第 \(k\) 行為第 \(k\) 筆分錄的帶號科目指示。
  • **金額對角矩陣 \(D\) **:把各筆分錄金額放在對角線上,與 \(J\) 相乘即完成「金額分配」。
  • **交叉彙總矩陣 \(M\) **:列為科目、行為部門(或產品、期間)的餘額矩陣。
  • **號誌向量 \(\mathbf{s}\) **:標記科目借貸方向的 \(0/\pm 1\) 向量,左乘 \(M\) 即得守恆檢驗。
  • 資料一元化:同一矩陣同時支援科目別與部門別報表的性質。

(本節完)