今天整理指數與對數這一家,EXP、LN、LOG、LOG10,再加上階乘 FACT 和幾個比較冷門的數學特殊函式:FACTDOUBLE、MULTINOMIAL、GAMMALN、SQRTPI、SUMSQ、SERIESSUM、ERF、ERFC。
我自己用最多的是 LN 和 LOG,通常是算「照這個成長率,幾年會翻倍」這類題目,這篇最後就做這個。階乘那一排、ERF 和 ERFC 我大概一年用不到一次,當工具書查就好。三角函式另外在 三角函式基本款 和 倒數與雙曲三角函式。
怎麼選
| 想做的事 | 用哪個 | 備註 |
|---|---|---|
| 算 e 的 x 次方 | EXP | 連續複利、指數衰減 |
| 以 e 為底的對數 | LN | EXP 的反函數 |
| 任意底數的對數 | LOG | 不寫底數就是 10 |
| 以 10 為底的對數 | LOG10 | 跟不帶底數的 LOG 結果一樣 |
| n 的階乘 | FACT | 約到 170 為止 |
| 隔一個乘一個 | FACTDOUBLE | n × (n−2) × (n−4) … |
| 分組方法數 | MULTINOMIAL | 多項式係數 |
| 超大階乘取對數 | GAMMALN、GAMMALN.PRECISE | 避免溢位 |
| 冪級數求和 | SERIESSUM | 用多項式逼近函數 |
| 誤差函數 | ERF、ERF.PRECISE | 與常態分布機率有關(見下方 ERF 一節) |
| 誤差函數的補數 | ERFC、ERFC.PRECISE | 常態分布尾端機率 |
| 圓周率開根號 | SQRTPI | 根號下 (數 × π) |
| 平方後加總 | SUMSQ | 算向量長度、離均差平方和的一部分 |
指數與對數
EXP
傳回歐拉數 e(約 2.71828)的指定次方。
語法:
e 的 1 次方
=TEXT(EXP(1), "0.0000")結果是 2.7183,也就是 e 本身。 是 0.3679,指數衰減常會用到負的指數。
LN
傳回以 e 為底的自然對數,EXP 的反函數。
語法:
- 值:必須大於 0,等於 0 或負數都是
#NUM!。
LN(EXP(1)) 應該回到 1
=TEXT(LN(EXP(1)), "0.0000")結果是 1.0000。LN(2) 約 0.6931,等一下的翻倍題會用到。
LOG
傳回指定底數的對數。
語法:
- 值:必須大於 0。
- 底數:選填,不寫就是 10。
以 4 為底,64 的對數
=LOG(64, 4)先手算:4 × 4 × 4 = 64,所以是 3 次方,函式也會給你 3。底數不寫的話, 是 3。
LOG10
傳回以 10 為底的對數,等於不寫底數的 LOG。
語法:
工程上的分貝(dB)是 10 × 功率比的 LOG10。功率放大 250 倍:
功率比 250 的分貝數
=TEXT(10*LOG10(250), "0.0000")結果是 23.9794 dB。我個人會直接寫 LOG10,因為一看就知道底數是 10,不用猜 LOG 的預設值。
階乘與排列組合
FACT
傳回階乘,n 的階乘是 1 × 2 × … × n。
語法:
- n:0 或正數,帶小數會被捨去小數部分,負數是
#NUM!。
6 個人排成一列有幾種排法:
6 的階乘
=FACT(6)先手算:6 × 5 × 4 × 3 × 2 × 1 = 720,函式也是 720。FACT(0) 是 1。階乘長得很快,約 170 就逼近試算表能表示的上限, 是 #NUM!,更大的階乘改用下面的 GAMMALN。
FACTDOUBLE
傳回雙階乘,也就是每隔一個數相乘。
語法:
7 的雙階乘
=FACTDOUBLE(7)先手算:7 × 5 × 3 × 1 = 105。偶數的話, 是 6 × 4 × 2 = 48。
MULTINOMIAL
傳回多項式係數,也就是把總數分成幾個固定大小的組別,有幾種分法。公式是 (各數總和)! ÷ (各數的階乘相乘)。
語法:
把 9 個人分成 2 人、3 人、4 人三組:
9 人分成 2、3、4 三組
=MULTINOMIAL(2, 3, 4)先手算:9! ÷ (2! × 3! × 4!) = 362880 ÷ 288 = 1260,函式也是 1260。
GAMMALN
傳回伽瑪函數絕對值的自然對數。對正整數 n,GAMMALN(n) 就是 (n−1)! 的自然對數,用在階乘大到 FACT 會溢位的時候。
語法:
- 值:必須大於 0。
GAMMALN(5) 是 4! 的自然對數
=TEXT(GAMMALN(5), "0.0000")4! 是 24,LN(24) 約 3.1781,兩邊一致。200 的階乘遠超過 FACT 能算的範圍,但取對數很簡單: 是 863.2320,意思是 200! 約為 e 的 863.2320 次方。
GAMMALN.PRECISE
跟 GAMMALN 同一個用途,語法也相同,名稱多了 .PRECISE 的是較新的寫法。
語法:
GAMMALN.PRECISE(5)
=TEXT(GAMMALN.PRECISE(5), "0.0000")結果是 3.1781,跟 GAMMALN 一樣。我習慣寫 GAMMALN,不過別人的舊檔案裡兩種都可能碰到。
其他數學函式
SQRTPI
傳回 (數 × π) 的平方根。
語法:
- 值:不能是負數,負數是
#NUM!。
根號 (2π)
=TEXT(SQRTPI(2), "0.0000")結果是 2.5066,常態分布的機率密度公式裡就有它。 是 1.7725。
SUMSQ
傳回一串數字平方後的總和。
語法:
- 值:數字、儲存格或範圍,可以給很多個。
直角三角形兩股長 3 和 4,斜邊平方就是兩邊平方相加:
3 和 4 的平方和
=SUMSQ(3, 4)先手算:9 + 16 = 25,函式也是 25,開根號 就是斜邊 5。範圍也可以,D2:D5 放 2、3、5、7:
D2:D5 的平方和
=SUMSQ(D2:D5)4 + 9 + 25 + 49 = 87。三維座標的向量長度也是這個寫法,1.5、2.5、3.5 放在 A2:C2, 是 4.5552。
SERIESSUM
計算冪級數的和:係數 × x 的冪次,逐項加總。
語法:
- x:代入的值。
- n:第一項的次方。
- m:每一項次方增加的量。
- 係數:一列或一欄的數字,第 1 個係數對應第 1 項。
公式是:第 i 個係數 × x 的 (n + (i − 1) × m) 次方,全部加起來。
拿 e 的泰勒展開來試試,e 的 x 次方 ≈ 1 + x + x²/2 + x³/6 + x⁴/24。A2 到 A6 依序放 1、1、1/2、1/6、1/24,x 代 1,次方從 0 開始、每項加 1:
用前 5 項逼近 e
=TEXT(SERIESSUM(1, 0, 1, A2:A6), "0.0000")結果是 2.7083。只算 5 項,跟真正的 e(2.7183)還差一點,項數越多越接近。
ERF
傳回誤差函數的值,常態分布裡「落在平均值上下幾個標準差內」的機率就是從它來的。
語法:
- 下限:只給這一個參數時,傳回從 0 積分到這個值的誤差函數。
- 上限:選填,兩個都給時,傳回介於下限和上限之間的積分。
ERF(1)
=TEXT(ERF(1), "0.0000")結果是 0.8427,跟下面的 ERFC(1) 加起來剛好是 1。兩個參數的寫法, 是 0.3222,也就是 ERF(1) 0.8427 減掉 ERF(0.5) 0.5205。
和常態分布的關係:資料落在平均值上下 1 個標準差內的機率是 ERF(1 ÷ SQRT(2)), 是 0.6827,也就是常聽到的 68%。2 個標準差改成 ERF(2/SQRT(2)),是 0.9545。實務上我一樣是用 NORM.S.DIST,這邊當作原理的小知識。
ERF.PRECISE
跟 ERF 同一個用途,名稱多了 .PRECISE。
語法:
ERF.PRECISE(1)
=TEXT(ERF.PRECISE(1), "0.0000")結果是 0.8427,跟 ERF(1) 一樣。
ERFC
傳回誤差函數的補數,也就是 1 減去 ERF。
語法:
ERFC(1)
=TEXT(ERFC(1), "0.0000")結果是 0.1573。ERFC(0) 是 1, 是 0.0047,越往右越小。
和常態分布的關係:標準常態分布中,超過平均值 1 個標準差的右尾機率是 0.5 × ERFC(1 ÷ SQRT(2)), 是 0.1587。實務上我直接用 NORM.S.DIST,不會自己拆成 ERFC。
ERFC.PRECISE
跟 ERFC 同一個用途,語法相同。
語法:
ERFC.PRECISE(1)
=TEXT(ERFC.PRECISE(1), "0.0000")結果是 0.1573。
實例:幾年會翻倍
最後做一個我最常算的題目。A2 放本金 8300,B2 放年利率 0.037(3.7%),C2 放年數 5。
先看兩種複利。一年算一次,是 A2*(1+B2)^C2;連續複利,就用 EXP:
連續複利 5 年後的本利和
=A2*EXP(B2*C2)結果是 9986.7131。一年算一次的結果是 9953.4096,連續複利略高一點。
接著是「年成長 3.7%,幾年會翻倍」。每年乘 1.037,要乘幾次才到 2 倍?也就是解 1.037 的 t 次方 = 2,兩邊取對數,t = LN(2) ÷ LN(1.037):
翻倍需要的年數
=LN(2)/LN(1+B2)結果是 19.0782 年。用 LOG 直接指定底數寫起來更短, 也是 19.0782。
如果目標不是 2 倍,是「本金 8300 要到 15000」:
本金到達 15000 需要的年數
=LOG(15000/A2, 1+B2)結果是 16.2886 年。這個公式的邏輯就是「目標倍數取對數,除以成長倍數取對數」,改數字就能重用。
試著把 B2 換成你自己的年成長率看看吧!
接下來可以
相關文章
查看所有文章三角函式基本款:SIN、COS、TAN、ATAN2 與角度弧度轉換
SIN、COS、TAN 和它們的反函數 ASIN、ACOS、ATAN、ATAN2,加上 RADIANS、DEGREES、PI 的角度弧度轉換。用斜坡高度和兩地經緯度距離(haversine)當實例。
倒數與雙曲三角函式:SEC、CSC、COT、SINH、COSH、TANH 與反函數
SEC、CSC、COT 三個倒數三角函式,雙曲的 SINH、COSH、TANH、SECH、CSCH、COTH,以及 ACOT、ASINH、ACOSH、ATANH、ACOTH 等反函數。用梯子長度和電線下垂量(懸鏈線)當實例。
多種幣別一起換成台幣:用 MAP 逐列查匯率與換算
用 MAP 同時讀取金額與幣別,把 USD、JPY、TWD 等資料換成台幣估值。TWD 直接用 1,區分空列、缺欄、錯誤幣碼與非數值金額,並說明動態匯率、四捨五入及歷史記帳的界線。
留言討論
共 0 則留言
