跳到主要內容跳到頁尾

矩陣函式:MMULT、MINVERSE、MDETERM、MUNIT 與 SUMXMY2 系列

5 分鐘閱讀Lv.3 中級摘要與日期

用三家店的銷量與單位成本帶出矩陣乘法 MMULT,再整理反矩陣 MINVERSE、行列式 MDETERM、單位矩陣 MUNIT、ARRAY_CONSTRAIN,以及 SUMX2MY2、SUMX2PY2、SUMXMY2 三個平方和函式。

發布 更新

文章目錄

今天要整理 MMULT 這一組矩陣函式,包含 MINVERSE、MDETERM、MUNIT、ARRAY_CONSTRAIN,還有算平方和的 SUMX2MY2、SUMX2PY2、SUMXMY2。

坦白說,矩陣在我的日常工作中很少出現,會用到的多半是一個需求:「每家店賣了好幾種品項,每種品項成本不同,一次算出每家店的總成本」。這剛好就是矩陣乘法,所以先用這個情境帶出 MMULT,其他當工具書。

先看情境:三家店的總成本

三家店各賣紅茶、綠茶、奶茶,銷量放在 A1:D4,三種飲料每杯的成本放在 F2:F4:

店紅茶綠茶奶茶
一店371128
二店546129
三店189643

單位成本(F2:F4)依序是 12、9、21。

先手算一店:37 × 12 + 112 × 9 + 8 × 21 = 444 + 1008 + 168 = 1620。三家店各算一次、還要加起來,有點麻煩。MMULT 一個公式就能把三家店的結果排成一欄:

Google 試算表公式
fx

三家店的銷量矩陣乘以單位成本

=MMULT(B2:D4, F2:F4)

來看看結果:

店總成本
一店1620
二店1806
三店1983

這邊的規則是:第一個矩陣的欄數(3)必須等於第二個矩陣的列數(3),結果的大小是第一個的列數乘以第二個的欄數(3 × 1)。只算單店的話,SUMPRODUCT 也可以,MMULT 的好處是一次得到多列。

怎麼選

想做的事用哪個回傳
兩個矩陣相乘MMULT矩陣
反矩陣(解聯立方程式)MINVERSE矩陣
方陣的行列式,判斷有沒有反矩陣MDETERM單一數字
單位矩陣MUNIT矩陣
取左上角的幾列幾欄ARRAY_CONSTRAIN矩陣
兩組數字的平方差、平方和、差的平方和SUMX2MY2、SUMX2PY2、SUMXMY2單一數字

矩陣運算

MMULT

計算兩個矩陣的乘積。

語法:

  • 矩陣1 的欄數要等於矩陣2 的列數,否則會得到 #VALUE!。

範例見上一節。需要轉置的時候用 TRANSPOSE() 包起來。

MINVERSE

回傳方陣的反矩陣。

語法:

最直接的用途是解聯立方程式。上面的三家店,假設我手上只有「各店銷量」跟「各店總成本」(1620、1806、1983,放在 H2:H4),想反推三種飲料的單位成本:

Google 試算表公式
fx

用反矩陣反推單位成本

=ARRAYFORMULA(ROUND(MMULT(MINVERSE(B2:D4), H2:H4), 2))

在空白區輸入後,會往下展開三列 12、9、21,剛好是原本的成本。ROUND 用來處理浮點數尾數,例如 21.000000000000004;外層的 ARRAYFORMULA 讓四捨五入套用到完整陣列。本例若只寫 ROUND(MMULT(...),2),Google 試算表只會回傳第一格 12,後兩格不會展開。Excel 沒有 ARRAYFORMULA 這個函式;Microsoft 365 與 Excel 2021 的動態陣列會自動展開,不需要它。

小一點的例子,在空白工作表的 A1:B2 放 2 × 2 矩陣 {2, 1; 5, 3}:

Google 試算表公式
fx

2x2 矩陣的反矩陣

=MINVERSE(A1:B2)

結果是第一列 3、-1,第二列 -5、2。手算:行列式是 2 × 3 - 1 × 5 = 1,反矩陣就是對調對角線、對角線外變號,再除以 1。

矩陣沒有反矩陣(行列式為 0)時,MINVERSE 會回 #NUM!;如果給的不是方陣(列數與欄數不同),則是 #VALUE!。

MDETERM

回傳方陣的行列式。

語法:

Google 試算表公式
fx

2x2 矩陣的行列式

=MDETERM(A1:B2)

用同一個 {2, 1; 5, 3},結果是 1。三家店那個 3 × 3 的銷量矩陣, 是 -174869,不是 0,所以 MINVERSE 反得出來。

行列式是 0 就代表沒有反矩陣,意思是你的方程式裡有某一列其實是別列的組合,沒有唯一解。

MUNIT

回傳指定大小的單位矩陣,對角線是 1,其他是 0。

語法:

Google 試算表公式
fx

3x3 單位矩陣

=MUNIT(3)

會溢出成 3 × 3:

欄 1欄 2欄 3
100
010
001

任何矩陣乘單位矩陣都會等於它自己, 會原樣回傳銷量。我自己用它主要是做檢查,或是配合 MMULT 做比較。

ARRAY_CONSTRAIN

把陣列限制在指定的列數和欄數,從左上角開始取。

語法:

Google 試算表公式
fx

取銷量矩陣左上角 2 列 2 欄

=ARRAY_CONSTRAIN(B2:D4, 2, 2)

結果:

紅茶綠茶
37112
5461

它不屬於矩陣運算,但常跟 MMULT 這類會吐出整片結果的公式搭配,只取想要的那一角。

平方和

這三個函式的參數都是兩組同樣大小的數字,大小不同會出錯。下面一樣在空白工作表,用 5 天的預測與實際銷量:預測 40、55、38、62、47,放在 A1:A5,實際 37、60、35、66、47,放在 B1:B5。

SUMXMY2

兩組數字相減後,差的平方再加總,常用來量預測誤差。

語法:

Google 試算表公式
fx

預測與實際的差的平方和

=SUMXMY2(A1:A5, B1:B5)

先手算:差是 3、-5、3、-4、0,平方是 9、25、9、16、0,總和 59。再開根號可以算均方根誤差:

Google 試算表公式
fx

均方根誤差

=TEXT(SQRT(SUMXMY2(A1:A5, B1:B5) / 5), "0.0000")

結果是 3.4351。

SUMX2MY2

兩組數字各自平方後相減,再加總。

語法:

Google 試算表公式
fx

預測平方減實際平方的總和

=SUMX2MY2(A1:A5, B1:B5)

結果是 -637。注意它是 x² - y²,不是 (x - y)²,跟上一個不要搞混。

SUMX2PY2

兩組數字各自平方後相加,再加總。

語法:

Google 試算表公式
fx

預測平方加實際平方的總和

=SUMX2PY2(A1:A5, B1:B5)

結果是 24881。

這三個我在工作上都沒用過,但記得名字裡的 X2 是 x 的平方、Y2 是 y 的平方、M 是減、P 是加。SUMXMY2 的 XMY2 是「x 減 y 再平方」。

要加總平方可以看 指數、對數與特殊函式 裡的 SUMSQ。需要的時候回來查一下,就這樣!

分享:
#矩陣#MMULT#MINVERSE#陣列函式
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

八年工作經驗,跨不同業界解決數據需求。做過的案例都整理在作品集。

接下來可以

相關文章

查看所有文章

留言討論

共 0 則留言

訂閱電子報,新文章上線就通知你

免費,隨時可取消。

送出即表示同意服務條款與隱私權政策。