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
布尔可选

重定向

参见