模块: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的模块文档。 此页面可能包含了模板的使用说明、分类和其他内容。 |
页面Module:Message box/mbox.css没有内容。
| 警告 | 此模块文档被引用于约13,000个页面。 为了避免造成大规模的影响,所有对此模块文档的编辑应先于沙盒或测试样例上测试。 测试后无误的版本可以一次性地加入此模块文档中,但是修改前请务必于讨论页发起讨论。 模板引用数量会自动更新。 |
本模块定义了一些可供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