模組:Complex Number/Functions/doc
跳至導覽
跳至搜尋
File:Lua Gamma Function in Chinese Wiki.svg伽瑪函數的實作方式
此頁面為 Module:Complex Number/Functions 的說明文件
頁面Module:Message box/mbox.css沒有內容。
| File:Edit-copy green.svg | 此頁面是Module:Complex Number/Functions的[[Wikipedia:模板文件頁模式|Template:NSPN]]。 此頁面可能包含了模板的使用說明、分類和其他內容。 |
腳本錯誤:沒有「High-use」這個模塊。
本模組定義了一些可供Module:Complex_Number系列模組使用的擴充函數。
使用條件[編輯]
要能使用此函數,必須先輸入一個數字類別資料結構以及其專用的math程式庫
- 數字類別資料結構必須包含下列成員函數:
- 專用的math程式庫必須包含下列成員:
使用方法[編輯]
- 初始化任何符合此擴充函數庫使用條件的數學庫
local 自訂函數庫名稱 = require("Module:Complex Number").函數庫名稱.init()- 以Module:Complex Number的cmath為例:
local cmath = require("Module:Complex Number").cmath.init()
- 以Module:Complex Number的cmath為例:
- 初始化本擴充函數庫
自訂函數庫名稱 = require("Module:Complex Number/Functions")._init(自訂函數庫名稱, 函數庫對應的數字建構函式)- 以上述之Module:Complex Number的cmath為例:
cmath = require("Module:Complex Number/Functions")._init(cmath, cmath.constructor)
- 以上述之Module:Complex Number的cmath為例:
- 使用擴充函數庫中的函數
- 例如:
print(cmath.factorial(5), cmath.sec(cmath.pi/4))- 輸出:120 1.4142135623731
- 例如:
模組中的函數[編輯]
三角函數擴充[編輯]
- 擴充了原本未定義的三角函數
- 功能
- 輸入一個複數x,回傳其指定三角函數的值
range(x,min,max)[編輯]
- 功能
- 只取函數的某一段
- 若x位於min,max區間內,則回傳x,否則回傳NaN
統計函數[編輯]
- 功能
- 輸入一系列數字,回傳其指定的統計值
diff(function, x0)[編輯]
integral(a, b, function, step)[編輯]
- 功能
- 輸入一個函數,計算從a到b的定積分,並以step為求黎曼和的間距
- 實作方式
- en:Boole's_rule
limit(x0, way, function)[編輯]
- 功能
- 輸入一個函數,計算從way方向向x0逼近的極限。
- 其中,way=1為右極限、way=-1為左極限、way=0為不分方向的極限,若左極不等於右極回傳NaN
條件式[編輯]
- 常數條件輸入
- if(條件, 為真時, 為假時)、ifelse(條件1, 條件1為真, 條件2, 條件2為真, ... ,皆為假)
- 代表條件在傳入函數時已經完成計算
- 函數條件輸入
- iff(條件函數, 為真時, 為假時)、ifelsef(條件函數1, 條件1為真, 條件函數2, 條件2為真, ... ,皆為假)
- 代表條件在傳入函數時尚未計算,判斷的當下才計算。所傳入的函數需要是無參數函數,若有參數也只會被忽略。用於定義遞迴下的條件
factorial(x)[編輯]
binomial(n,k)[編輯]
- 功能
- 計算二項式係數
- 也可以理解為從n個元素中取出k個元素的方法數
gcd(a,b,c,...)[編輯]
lcm(a,b,c,...)[編輯]
- 功能
- 計算a,b,c,....等數字的最小公倍數,支援複數。
- 實作方式
- 最小公倍數#計算方法
gamma(x)[編輯]
- 功能
- 輸入一個複數x,回傳其Γ函數值
- 精確度
- 有效數字14位
- 運算效率
- 平均一次運算耗時約0.3582毫秒(3.6×10−4 s、一秒可計算2,700+次),測試於2018年11月19日 (一) 06:39 (UTC)、2022年4月12日 (二) 17:54 (UTC)。
- 實作方式
- 共分成4個部分
- 中間藍色部分是利用從零展開倒數伽瑪函數的泰勒級數定義
- 展開至前30項
- <math>\frac{1}{\Gamma(z)} = z + \gamma z^2 + \left(\frac{\gamma^2}{2} - \frac{\pi^2}{12}\right)z^3 + \cdots</math>
- <math>a_n = \frac{{a_2 a_{n-1} - \sum_{j=2}^{n-1} (-1)^j \, \zeta(j) \, a_{n-j}}}{n-1}</math>[1]
- 兩側橘紅色部分是利用中間藍色代Γ函數的遞迴關係式定義,並用For迴圈實作
- <math> \Gamma(x+1)=x\Gamma(x)</math>
- <math> \Gamma(x-1)=\frac{\Gamma(x)}{x-1}</math>
- 上下的綠色部分則是使用Robert H. Windschitl (2002) 所提出的公式近似
- <math>\Gamma(z) \approx \sqrt{\frac{2 \pi}{z} } \left( \frac{z}{e} \sqrt{ z \sinh \frac{1}{z} + \frac{1}{810z^6} } \right)^{z}</math>[2]
- 最後黃色部分則是使用帶有斯特靈級數的斯特靈公式近似
- <math>
- 中間藍色部分是利用從零展開倒數伽瑪函數的泰勒級數定義
n!=\sqrt{2\pi n}\left({n\over e}\right)^n \left( 1 +{1\over12n} +{1\over288n^2} -{139\over51840n^3} -{571\over2488320n^4} + \cdots \right). </math>[3]
參考文獻[編輯]
- ↑ Wrench, J.W. (1968). Concerning two series for the gamma function. Mathematics of Computation, 22, 617–626. and
Wrench, J.W. (1973). Erratum: Concerning two series for the gamma function. Mathematics of Computation, 27, 681–682. - ↑ package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
- ↑ package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found