e ^ ( i * pi ) = -1
( i * j * k ) = -1 (四元數

  • (※)注意請勿使用{{#expr:數學式}}替代!會導致有使用複數運算的條目全數NaN
文档图示 模板文档[查看] [编辑] [历史] [清除缓存]

本模板為Help:计算功能的一個擴展,提供了一些Help:计算不支援的計算。

概要

本模板比Help:计算多了以下功能:

使用方法

本模板的第一參數為欲計算的運算式,關於運算式的語法詳見#語法一節。參數number class為指定運算時使用的數體。若使用其軟重定向版本{{計算}}則有第二參數可以使用,用途為指定輸出的小數位數。

其基礎語法為:

{{複變運算| 表达式 }}

{{計算| 表达式 }}

參數說明

  • 第一參數:要計算的數學式
  • |number class=:使用的数域,可以是:
    real实数,與Help:计算功能類似,但Help:计算不支援變數)
    complex複數
    quaternion四元數
    no calcmathtag(不計算,輸出對應數學式的LaTeX数学公式
  • |should math=:布林值,是否直接輸出適用於<math></math>LaTeX原始碼
  • |use math=:布林值,是否直接輸出完整的<math></math>数学公式
  • |useOtherModule=:布林值,是否允許載入其他模塊中返回數字的LUA數學函數或數學模板

語法

本節將說明本模板輸入的運算式之語法。

項目 語法 說明 範例
數字的表達
實數
+或-實數值
科學記號
+或-實數值e+或-科學記號值
含單位的數
+或-實數值單位
含常數單位
任何數值表達式常數或單位的表達式
數字的表達可分為實數表達、科學記號和含單位的數。
  • 實數表達即一般的實數;
  • 科學記號為一實數緊接著一個e和一個整數,例如實數值e整數值則代表實數值×10整數值
  • 另一個表達方式為一個實數值緊接著一個複變單位或角度單位,例如2i表示兩倍的虛數單位。此表達式不能與科學記號一同使用。能使用的單位包括ijk°π。其餘需使用運算子來表達。
{{複變運算|+2.735}} 2.735
{{複變運算|-2735e-3}} -2.735
{{複變運算|27.35e+3}} 27350
{{複變運算|2.735i}} 2.735i
{{複變運算|180°}} 3.14159...
{{複變運算|}} 6.28318...
{{複變運算|2⋅e}} 5.43656...
{{複變運算|2e}} Lua錯誤
計算失敗:
缺少運算子,
數字 [2, e]
無法運算。
四則運算與冪運算 運算式運算符運算式 依序以中綴表示法表達運算式即可。
{{複變運算|2+3}} 5
{{複變運算|2+3*5^2}} 77
{{複變運算|-2+3*5^2}} 73
函數(參數1,參數2...) 调用现有函数。所有函數都至少要傳入一個參數。
{{複變運算|factorial(5)}} 120
{{複變運算|sin(pi/6)}} 0.5
{{複變運算|abs(-5)}} 5
多組運算 運算式1;運算式2 僅會顯示最後一組運算的結果
{{複變運算|10;20}} 20
{{複變運算|2+3;2*3}} 6
{{複變運算|2+3;2*3;2^3}} 8
變數定義 變數名稱運算式 給特定名稱的變數賦值。需特別注意所有變數的範圍(Scope)皆相同(可想像所有變數皆為全域變數),包括函數中的參數,因此若函數外層已經定義了變數x則函數內部需避免使用同名變數x。
{{複變運算|x←5}} 5
{{複變運算|x←5;x+1}} 6
{{複變運算|x←5;3+7;x}} 5
數定義 函數名稱:參數1,參數2...函數運算式; 數的語法為以名稱起始並以冒號區隔函數名稱與定義(函數名稱可留空,但冒號不能省去),整個語法要以分號(;結尾。位於映射符號(前方為函數的變數或參數,後方為函數主體定義,即f : x f(x);。函數可以有多個變數,但僅能有單個輸出,即。同時函數語法不建議寫成嵌套結構,即不建議將函數定義內包含另一個函數的定義,但可以分開定義再行組合;此外,函數定義內不能包含分號,因為分號會視為函數的結尾。
{{複變運算|f:x↦x^2+1;(0); f(5)}} 26
{{複變運算|f:x↦x^2+1;(0) }} 1
{{複變運算|:x↦x^2+1;(1)}} 2
運算符優先序調整 (運算式優先算符運算式)運算符運算式 使用括號來令特定運算優先進行。
  • 2+3*5→17
  • (2+3)*5→25

自訂函數用法

具名函數

基本函數定義方式為「f : x f(x);」。

例如若要表達,則其應寫為「f : x x^2;

匿名函數

匿名函數的語法為「:參數1,參數2...函數運算式;

以上例而言,對應的匿名函數應寫為「: x x^2;

匿名函數可以被直接呼叫,例如「{{計算結果|:x↦x^2;(5)}}」→「

函數中的函數

函數中可以包含另一個函數,例如「{{計算結果|:x↦exprs(f:y↦y^2;,f(x)^2);(5)}}」→「

函數作為參數
部分函數是以函數作為參數,例如summation()product()和一些微積分函數。條件運算式(if())也有函數呼叫的版本iff()
  • 求和、求積與微積分函數
    求和函數(summation(start,end,function))、求積函數(summation(start,end,function))、微分(diff(function,x0))、積分(integral(a,b,function))、極限(limit(x0,way,function))皆須傳入一個匿名函數,作為其數列計算的依據。
    以求和函數summation(start,end,function)為例,若要表達從1到5的和,則代碼為:
    {{計算結果|summation(1, 5, :x↦x^2;)}}」→「
    • 求和/求積函數的變數
      一般求和/求積函數的變數通常是i、j或k,而在此運算系統中,i、j與k已被視作常數無法使用。若需要讓顯示出來的結果為i、j或k可在英文字母後方加「t」,如it、jt或kt,顯示時t會省去:
    {{計算結果|summation(1, 5, :it↦it^2;)}}」→「
  • 函數條件運算式(iff(條件,為真,為假)
    條件運算式除了給定條件外,其為真的結果與為假的結果要是一個無參數的匿名函數。無參數的匿名函數定義方式為「:nil函數運算式;
    例如「{{計算結果|x←3; iff(x>2, :nil↦5;, :nil↦10;)}}」→「
    例如「{{計算結果|x←1; iff(x>2, :nil↦5;, :nil↦10;)}}」→「
函數的遞迴
具名函數可以遞迴調用,但須注意遞迴需要消耗較多的效能。函數的遞迴需要給出初始條件與遞迴結果,因此需要使用條件運算式,若用if()會導致無窮呼叫而發生錯誤,因此需要使用到iff()
  • 以階乘為例,時定義為1(初始條件),其餘為
    例如「{{計算結果|f:n↦iff(n≤1, 1, :nil↦f(n-1)*n;);,f(5)}}」→「

範例

  • {{計算|:x,y↦x^2+y^2;(5,2)}}→29
    • 使用{{計算結果}}:
  • {{計算|maximum(2,5,7,6,9,999)}}→999
    • 使用{{計算結果}}:
  • {{計算|log(2,256)}}→8
    • 使用{{計算結果}}:
  • {{計算|sin(div(pi,6))}}→0.5
    • 使用{{計算結果}}:
  • {{計算|sin(pi/6)}}→0.5
    • 使用{{計算結果}}:
  • {{計算|cos(div(2⋅pi,3))}}→-0.5
    • 使用{{計算結果}}:
  • {{計算|factorial(5)}}→120

限制

本模板僅支援輸入數字(0-9)、已定義的運算子符號(&()+*-/÷:|~×°;=<>,%^)和半角英文字母(a-z及A-Z),其餘字元都會被忽略。

  • {{複變運算|2 ≈ 3}}→「Lua错误:計算失敗:缺少運算子,數字 [2, 3] 無法運算。」(被忽略,剩下「2<空白>3」而無法運算)
  • {{複變運算|²+₆}}→「Lua错误:計算失敗:加法運算子需要2個運算數,但只找到1個運算數。」(²被忽略,剩下「+」而無法運算)

參數

以下是该模板的模板数据,适用于可视化编辑器等工具。

複變運算模板数据

進行複變數的運算

模板参数[编辑模板数据]

此模板首选参数不换行的行内格式。

参数描述类型状态
運算式1

要計算的運算式

字符串必需
小數位數 (計算模板專用)2

使用{{計算}}模板時才支持這個參數。

数字可选
運算數字模式number class

要運算的數字模式,可以是實數、cmath(複數)、qmath(四元數)、no calc(不計算)、mathtag(以<math>輸出)或直接寫Module:模組名稱.運算庫來指定使用特定模組來運算。

推荐值
real cmath qmath no calc mathtag 實數 複數 四元數
默认值
cmath
字符串可选
使用<math>use math

是否使用<math>

默认值
no
布尔可选
是否以<math>原碼輸出should math

輸出結果字串是否轉換為<math>原碼格式輸出。若use math設定為是,則此參數會自動當成是。

默认值
no
布尔可选
是否可呼叫其他模組useOtherModule

是否可呼叫其他模組的函數。

默认值
no
布尔可选

重定向

參見