跳到主要內容跳到頁尾

指數、對數與階乘:EXP、LN、LOG、FACT、GAMMALN 與 SERIESSUM

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

EXP、LN、LOG、LOG10 的指數對數家族,加上 FACT、FACTDOUBLE、MULTINOMIAL、GAMMALN、SQRTPI、SUMSQ、SERIESSUM、ERF、ERFC 等數學特殊函式。用連續複利和幾年翻倍當實例。

發布 更新

文章目錄

今天整理指數與對數這一家,EXP、LN、LOG、LOG10,再加上階乘 FACT 和幾個比較冷門的數學特殊函式:FACTDOUBLE、MULTINOMIAL、GAMMALN、SQRTPI、SUMSQ、SERIESSUM、ERF、ERFC。

我自己用最多的是 LN 和 LOG,通常是算「照這個成長率,幾年會翻倍」這類題目,這篇最後就做這個。階乘那一排、ERF 和 ERFC 我大概一年用不到一次,當工具書查就好。三角函式另外在 三角函式基本款 和 倒數與雙曲三角函式。

怎麼選

想做的事用哪個備註
算 e 的 x 次方EXP連續複利、指數衰減
以 e 為底的對數LNEXP 的反函數
任意底數的對數LOG不寫底數就是 10
以 10 為底的對數LOG10跟不帶底數的 LOG 結果一樣
n 的階乘FACT約到 170 為止
隔一個乘一個FACTDOUBLEn × (n−2) × (n−4) …
分組方法數MULTINOMIAL多項式係數
超大階乘取對數GAMMALN、GAMMALN.PRECISE避免溢位
冪級數求和SERIESSUM用多項式逼近函數
誤差函數ERF、ERF.PRECISE與常態分布機率有關(見下方 ERF 一節)
誤差函數的補數ERFC、ERFC.PRECISE常態分布尾端機率
圓周率開根號SQRTPI根號下 (數 × π)
平方後加總SUMSQ算向量長度、離均差平方和的一部分

指數與對數

EXP

傳回歐拉數 e(約 2.71828)的指定次方。

語法:

Google 試算表公式
fx

e 的 1 次方

=TEXT(EXP(1), "0.0000")

結果是 2.7183,也就是 e 本身。 是 0.3679,指數衰減常會用到負的指數。

LN

傳回以 e 為底的自然對數,EXP 的反函數。

語法:

  • 值:必須大於 0,等於 0 或負數都是 #NUM!。
Google 試算表公式
fx

LN(EXP(1)) 應該回到 1

=TEXT(LN(EXP(1)), "0.0000")

結果是 1.0000。LN(2) 約 0.6931,等一下的翻倍題會用到。

LOG

傳回指定底數的對數。

語法:

  • 值:必須大於 0。
  • 底數:選填,不寫就是 10。
Google 試算表公式
fx

以 4 為底,64 的對數

=LOG(64, 4)

先手算:4 × 4 × 4 = 64,所以是 3 次方,函式也會給你 3。底數不寫的話, 是 3。

LOG10

傳回以 10 為底的對數,等於不寫底數的 LOG。

語法:

工程上的分貝(dB)是 10 × 功率比的 LOG10。功率放大 250 倍:

Google 試算表公式
fx

功率比 250 的分貝數

=TEXT(10*LOG10(250), "0.0000")

結果是 23.9794 dB。我個人會直接寫 LOG10,因為一看就知道底數是 10,不用猜 LOG 的預設值。

階乘與排列組合

FACT

傳回階乘,n 的階乘是 1 × 2 × … × n。

語法:

  • n:0 或正數,帶小數會被捨去小數部分,負數是 #NUM!。

6 個人排成一列有幾種排法:

Google 試算表公式
fx

6 的階乘

=FACT(6)

先手算:6 × 5 × 4 × 3 × 2 × 1 = 720,函式也是 720。FACT(0) 是 1。階乘長得很快,約 170 就逼近試算表能表示的上限, 是 #NUM!,更大的階乘改用下面的 GAMMALN。

FACTDOUBLE

傳回雙階乘,也就是每隔一個數相乘。

語法:

Google 試算表公式
fx

7 的雙階乘

=FACTDOUBLE(7)

先手算:7 × 5 × 3 × 1 = 105。偶數的話, 是 6 × 4 × 2 = 48。

MULTINOMIAL

傳回多項式係數,也就是把總數分成幾個固定大小的組別,有幾種分法。公式是 (各數總和)! ÷ (各數的階乘相乘)。

語法:

把 9 個人分成 2 人、3 人、4 人三組:

Google 試算表公式
fx

9 人分成 2、3、4 三組

=MULTINOMIAL(2, 3, 4)

先手算:9! ÷ (2! × 3! × 4!) = 362880 ÷ 288 = 1260,函式也是 1260。

GAMMALN

傳回伽瑪函數絕對值的自然對數。對正整數 n,GAMMALN(n) 就是 (n−1)! 的自然對數,用在階乘大到 FACT 會溢位的時候。

語法:

  • 值:必須大於 0。
Google 試算表公式
fx

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 的是較新的寫法。

語法:

Google 試算表公式
fx

GAMMALN.PRECISE(5)

=TEXT(GAMMALN.PRECISE(5), "0.0000")

結果是 3.1781,跟 GAMMALN 一樣。我習慣寫 GAMMALN,不過別人的舊檔案裡兩種都可能碰到。

其他數學函式

SQRTPI

傳回 (數 × π) 的平方根。

語法:

  • 值:不能是負數,負數是 #NUM!。
Google 試算表公式
fx

根號 (2π)

=TEXT(SQRTPI(2), "0.0000")

結果是 2.5066,常態分布的機率密度公式裡就有它。 是 1.7725。

SUMSQ

傳回一串數字平方後的總和。

語法:

  • 值:數字、儲存格或範圍,可以給很多個。

直角三角形兩股長 3 和 4,斜邊平方就是兩邊平方相加:

Google 試算表公式
fx

3 和 4 的平方和

=SUMSQ(3, 4)

先手算:9 + 16 = 25,函式也是 25,開根號 就是斜邊 5。範圍也可以,D2:D5 放 2、3、5、7:

Google 試算表公式
fx

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:

Google 試算表公式
fx

用前 5 項逼近 e

=TEXT(SERIESSUM(1, 0, 1, A2:A6), "0.0000")

結果是 2.7083。只算 5 項,跟真正的 e(2.7183)還差一點,項數越多越接近。

ERF

傳回誤差函數的值,常態分布裡「落在平均值上下幾個標準差內」的機率就是從它來的。

語法:

  • 下限:只給這一個參數時,傳回從 0 積分到這個值的誤差函數。
  • 上限:選填,兩個都給時,傳回介於下限和上限之間的積分。
Google 試算表公式
fx

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。

語法:

Google 試算表公式
fx

ERF.PRECISE(1)

=TEXT(ERF.PRECISE(1), "0.0000")

結果是 0.8427,跟 ERF(1) 一樣。

ERFC

傳回誤差函數的補數,也就是 1 減去 ERF。

語法:

Google 試算表公式
fx

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 同一個用途,語法相同。

語法:

Google 試算表公式
fx

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:

Google 試算表公式
fx

連續複利 5 年後的本利和

=A2*EXP(B2*C2)

結果是 9986.7131。一年算一次的結果是 9953.4096,連續複利略高一點。

接著是「年成長 3.7%,幾年會翻倍」。每年乘 1.037,要乘幾次才到 2 倍?也就是解 1.037 的 t 次方 = 2,兩邊取對數,t = LN(2) ÷ LN(1.037):

Google 試算表公式
fx

翻倍需要的年數

=LN(2)/LN(1+B2)

結果是 19.0782 年。用 LOG 直接指定底數寫起來更短, 也是 19.0782。

如果目標不是 2 倍,是「本金 8300 要到 15000」:

Google 試算表公式
fx

本金到達 15000 需要的年數

=LOG(15000/A2, 1+B2)

結果是 16.2886 年。這個公式的邏輯就是「目標倍數取對數,除以成長倍數取對數」,改數字就能重用。

試著把 B2 換成你自己的年成長率看看吧!

分享:
#指數#對數#階乘#連續複利
喜特先生 Mr. Sheet

喜特先生 Mr. Sheet

數據分析師/商業分析師

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

接下來可以

相關文章

查看所有文章

留言討論

共 0 則留言

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

免費,隨時可取消。

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