模組:Complex Number/doc
外观
这是Module:Complex Number的文档页面
![]() | 此模块文档被引用於約5,300個頁面。 為了避免造成大規模的影響,所有對此模块文档的編輯應先於沙盒或測試樣例上測試。 測試後無誤的版本可以一次性地加入此模块文档中,但是修改前請務必於討論頁發起討論。 模板引用數量會自動更新。 |
本模組為Lua定義了一套複數(如虚数、四元數)運算的系統,可提供其他模組呼叫使用,而若要直接在條目中使用可透過Module:Complex Number/Calculate來完成。
模組內容
本模組有4套數學資料結構的定義以及對應的數學運算庫:
使用方法
- 初始化數學庫
local 自訂函數庫名稱 = require("Module:Complex Number").函數庫名稱.init()
- 例如:
local cmath = require("Module:Complex Number").cmath.init()
- 例如:
- 初始化指定數學結構的數字
local 變數名稱 = 自訂函數庫名稱.constructor("描述數字的字串")
- 例如:
local num1 = cmath.constructor("2+3i")
- 例如:
- 執行運算
- 例如:
local num1 = cmath.constructor("2+3i") local num2 = cmath.constructor("4+5i") print(num1 * num2)
- 輸出:-7+22i
- 或者使用函數庫內容:
local num1 = cmath.constructor("i") print(cmath.sqrt(num1))
- 輸出:0.70710678118655+0.70710678118655i
- 例如:
- 若需要在模板中使用,請參閱{{複變運算}}
原理
複數可分為實部和虛部,此特性可以透過Lua的table功能({real=..., imag=...,}
)來實現,同時透過複寫Metatables來完成其各運算子(如+
、-
、*
、/
)來實現複變的基本運算:
p.ComplexNumberMeta = {
__add = function (op1, op2)
return p.ComplexNumber(op1.real + op2.real, imag = op1.imag + op2.imag)
end,
--...
}
function p.ComplexNumber(real, imag)
local complexNumber = {real = op1.real + op2.real, imag = op1.imag + op2.imag}
setmetatable(complexNumber,p.ComplexNumberMeta)
return complexNumber
end
如此一來,只要是設定過Metatables的含實部和虛部的table都可以直接進行複變數的運算。
剩下的部分就是完善數學函數庫math.xxx
的各函數。
比較
函數庫 | 預設的math
|
.cmath
|
.qmath
|
.math
|
.bmath
|
.tagmath 位於Module:Complex Number/Calculate | |
---|---|---|---|---|---|---|---|
說明 | Lua預設提供的math程式庫 | 複數()專用程式庫 | 四元數()專用程式庫 | 預設math 的擴充,定義了上方兩個程式庫中的功能
|
簡單的布林代數 | 會運算成<math></math> 的程式庫
| |
函式庫初始化方式 | 無須初始化 | cmath = require("Module:Complex Number").cmath.init();
|
qmath = require("Module:Complex Number").qmath.init();
|
math = require("Module:Complex Number").math.init();
|
bmath = require("Module:Complex Number").bmath.init();
|
tagmath = require("Module:Complex Number/Calculate").tagmath.init();
| |
數字建構/初始化方式 | tonumber("10"); 10
|
cmath.toComplexNumber("1+i"); cmath.getComplexNumber(1,1);
|
qmath.toQuaternionNumber("i+j+k"); qmath.getQuaternionNumber(0,1,1,1);
|
tonumber("10"); 10
|
bmath.toBoolean("yes");
|
tagmath.toTagMath("a");
| |
四則運算 | 加法a + b
|
![]() |
![]() |
![]() |
lua原生支援 | 邏輯或 | 輸出 |
減法a - b
|
![]() |
![]() |
![]() |
lua原生支援 | ![]() |
輸出 | |
乘法a * b
|
![]() |
![]() |
![]() |
lua原生支援 | 邏輯與 | 輸出 | |
除法a / b
|
![]() |
![]() |
只能除實數 | lua原生支援 | 不存在 | 輸出 | |
模除a % b
|
![]() |
![]() |
以高斯符號定義 | lua原生支援 | 不存在 | ![]() | |
一元運算 | 相反數-a
|
![]() |
![]() |
![]() |
lua原生支援 | 邏輯非 | 輸出 |
tostring | ![]() |
![]() |
![]() |
lua原生支援 | ![]() |
![]() | |
e常數e
|
![]() |
![]() |
![]() |
![]() |
![]() |
輸出 | |
圓周率pi
|
![]() |
![]() |
![]() |
lua原生支援 | ![]() |
輸出 | |
虛數單位i
|
![]() |
![]() |
![]() |
![]() |
![]() |
輸出 | |
j單位j
|
![]() |
![]() |
![]() |
![]() |
![]() |
輸出 | |
k單位k
|
![]() |
![]() |
![]() |
![]() |
![]() |
輸出 | |
絕對值abs(a)
|
![]() |
![]() |
![]() |
lua原生支援 | ![]() |
輸出 | |
符号函数sgn(a)
|
![]() |
![]() |
![]() |
![]() |
![]() |
輸出 | |
共轭复数conjugate(a)
|
![]() |
![]() |
![]() |
原式輸出。 | ![]() |
輸出 | |
輻角arg(a)
|
![]() |
![]() |
![]() |
![]() |
![]() |
輸出 | |
平方根sqrt(a)
|
![]() |
![]() |
![]() |
![]() |
![]() |
輸出 | |
倒數inverse(a)
|
![]() |
![]() |
![]() |
![]() |
![]() |
輸出 | |
分數div(a,b)
|
![]() |
![]() |
![]() |
![]() |
![]() |
輸出 | |
數字部件 | 實部re(a)
|
![]() |
![]() |
![]() |
![]() |
![]() |
輸出 |
虛部im(a)
|
![]() |
![]() |
![]() |
恆為0 | ![]() |
輸出 | |
純量部 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() | |
向量部 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() | |
內積dot(a,b)
|
![]() |
![]() |
![]() |
與乘法相同 | ![]() |
輸出 | |
冪a ^ b
|
![]() |
只能pow(a,b) | 只能pow(a,b) | lua原生支援 | ![]() |
只能pow(a,b) | |
指對數函數 | 指數pow(a,b)
|
![]() |
![]() |
![]() |
lua原生支援 | ![]() |
輸出 |
自然對數log(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 | |
自然指數exp(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 | |
ciscis(a)
|
![]() |
![]() |
![]() |
![]() |
不存在 | 輸出 | |
高斯符號 | 地板floor(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 |
天花板ceil(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 | |
数值修约round(a)
|
![]() |
![]() |
![]() |
![]() |
不存在 | 即将到来 | |
三角函數 | 正弦sin(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 |
餘弦cos(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 | |
正切tan(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 | |
餘切cot(a)
|
![]() |
![]() |
![]() |
![]() |
不存在 | 輸出 | |
反三角函數 | 反正弦asin(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 |
反餘弦acos(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 | |
反正切atan(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 | |
反餘切acot(a)
|
![]() |
![]() |
![]() |
![]() |
不存在 | 輸出 | |
雙曲函數 | 雙曲正弦sinh(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 |
雙曲餘弦cosh(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 | |
雙曲正切tanh(a)
|
![]() |
![]() |
![]() |
lua原生支援 | 不存在 | 輸出 | |
雙曲餘切coth(a)
|
![]() |
![]() |
![]() |
![]() |
不存在 | 輸出 | |
反雙曲函數 | 雙曲反正弦asinh(a)
|
![]() |
![]() |
![]() |
![]() |
不存在 | 輸出 |
雙曲反餘弦acosh(a)
|
![]() |
![]() |
![]() |
![]() |
不存在 | 輸出 | |
雙曲反正切atanh(a)
|
![]() |
![]() |
![]() |
![]() |
不存在 | 輸出 | |
雙曲反餘切acoth(a)
|
![]() |
![]() |
![]() |
![]() |
不存在 | 輸出 |
其他函數庫
require("Module:Complex Number").cmath
- 複變函數庫
require("Module:Complex Number").qmath
- 四元數函數庫
require("Module:Complex Number").math
- 實數函數庫擴充
require("Module:Complex Number").bmath
- 布林代數函數庫
require("Module:Complex Number/Calculate").tagmath
- 輸出為
<math></math>
的運算庫 require("Module:Complex Number/Dual Number").dumath
- 二元數函數庫
require("Module:Complex Number/Dual Number").ducmath
- 二元複數函數庫
require("Module:Complex Number/Octonion").omath
- 八元數函數庫
require("Module:Complex Number/CayleyDickson").cdmath.init(math_lib)
- 將指定的函數庫
math_lib
套用凯莱-迪克森结构形成新的函數庫(無法自我嵌套) require("Module:Complex Number/CayleyDickson").sdmath
- 八元數套用凯莱-迪克森结构後的形成新的十六元數函數庫
require("Module:Complex Number/CayleyDickson").cdmathOctonion
- 預先套用凯莱-迪克森结构的八元數後的函數庫(可作為十六元數使用)
require("Module:Complex Number/CayleyDickson").cdmathSedenion
- 預先套用凯莱-迪克森结构的十六元數後的函數庫(可作為三十二元數使用)