内置函数参考
本页列出 Varlig Calc 内置的所有函数。调用函数时写出函数名,并在括号中填入参数,参数之间用逗号分隔:sqrt(16)、round(17.46, 0.05)。
- 函数名不区分大小写,因此
SQRT(16)也可以使用。 - 参数个数会被检查。
sqrt(4, 9)会显示错误,而不会忽略 9。 - 数字可以保留千位分隔符。逗号后面紧跟三位数字时用于千位分组,逗号后面跟空格时用于分隔参数,所以
max(1,000, 2,000)是 2,000,sqrt(1,024)是 32。 - 可以在同一行中对函数的结果进行舍入或换算,例如
sqrt(2) to 4 dp或abs(-5 km) in m。 - 在下表中找到函数名,再查看对应小节了解详情和示例。
许多函数还有对应的英文短语,例如 square root of 16;请参阅文字数学。要编写自己的函数,请参阅自定义函数。
所有函数
| 函数 | 含义 |
|---|---|
abs(x) |
绝对值;保留单位;对复数给出模 |
sign(x) |
−1、0 或 1 |
int(x), trunc(x) |
整数部分,向零取整 |
round(x), round(x, step) |
最接近的整数,或最接近的 step 倍数 |
floor(x), floor(x, step) |
向下舍入,朝负无穷方向 |
ceil(x), ceil(x, step) |
向上舍入,朝正无穷方向 |
sqrt(x), cbrt(x) |
平方根和立方根;单位的幂次能被整除时保留单位 |
exp(x), ln(x) |
自然指数和自然对数 |
log(x), log10(x), log2(x), logbase(x, b) |
对数 |
sin, cos, tan |
三角函数,参数为弧度,或 30° 这样的角度 |
sind, cosd, tand |
以度为单位的三角函数 |
asin, acos, atan |
反三角函数,结果为弧度 |
asind, acosd, atand |
反三角函数,结果为度 |
atan2(y, x) |
考虑象限的角度,单位为弧度 |
sinh, cosh, tanh, asinh, acosh, atanh |
双曲函数 |
factorial(n), fact(n) |
阶乘;也可写作 n! |
gcd(a, b), lcm(a, b) |
最大公约数和最小公倍数;精确计算,也适用于分数 |
combination(n, k), permutation(n, k) |
选取方式的数目 |
clamp(x, low, high) |
将值限制在上下限之内 |
hex(n), bin(n) |
以十六进制或二进制显示数字 |
random(), rand(), random(a, b), rand(a, b) |
随机数 |
complex(re, im), real, imag, conj, arg |
复数 |
sum, total, product, average, mean, avg, median, min, max, count, length, variance, stddev, stdev |
列表的总计和统计量(其中几个也接受分开的多个参数) |
sum(expr, var, lo, hi), summation(...), product(expr, var, lo, hi) |
随计数变量求和或求积 |
range(a, b), range(a, b, step) |
数字列表,包含两端 |
sort, reverse, unique, slice(list, start, end) |
重新排列列表,或从中选取 |
map(expr, var, list), filter(cond, var, list) |
对列表的每一项求值或进行判断 |
dot, cross, identity(n), shape, transpose, det, inverse, trace, rank |
向量与矩阵 |
solve_system(A, b), eigenvalues, qr, lu, svd |
线性方程组与矩阵分解 |
solve(equation, var, lo, hi) |
在两个边界之间以数值方式求解方程 |
differentiate(expr, var), derivative(expr, var) |
以公式形式给出导数 |
differentiate(expr, var, point), derivative(expr, var, point) |
某一点处的导数,结果为数字 |
integrate(expr, var, lo, hi) |
定积分,以数值方式计算 |
easter(year) |
西方教会的复活节(星期日) |
tyre_speed(width, aspect, rim, rotation) |
根据轮胎规格和车轮转速计算行驶速度 |
数字与计数
| 函数 | 参数与含义 |
|---|---|
abs(x) |
绝对值;保留量的单位;对复数给出模 |
sign(x) |
普通实数的符号:-1、0 或 1 |
int(x), trunc(x) |
整数部分,向零取整 |
sqrt(x) |
平方根;要求负数的复数根,请写成 sqrt(-16 + 0i) |
cbrt(x) |
立方根,负数也可以 |
factorial(n), fact(n) |
0 或更大的整数的阶乘;也可写作 n! |
gcd(a, b) |
两个精确数的最大公约数,结果不为负 |
lcm(a, b) |
两个精确数的最小公倍数,结果不为负 |
clamp(x, low, high) |
将值限制在 low 和 high 之间,三者须为同一类量;下限在前 |
permutation(n, k) |
从 n 项中选取 k 项的有序排列数 |
combination(n, k) |
从 n 项中选取 k 项的无序组合数 |
hex(x), bin(x) |
以十六进制或二进制显示数字 |
abs(-£45.20) 结果为 £45.20sign(-5) 结果为 -1int(7.8) 结果为 7sqrt(144 m^2) 结果为 12 mcbrt(-27) 结果为 -3factorial(5) 结果为 120gcd(1920, 1080) 结果为 120lcm(4, 6) 结果为 12clamp(115, 0, 100) 结果为 100clamp(£120, £0, £100) 结果为 £100.00combination(10, 2) 结果为 45permutation(8, 3) 结果为 336hex(255) 结果为 0xFFbin(10) 结果为 0b1010几个日常用法:gcd(1920, 1080) 说明 1920 × 1080 的屏幕是 16:9(1920 ÷ 120 比 1080 ÷ 120)。combination(10, 2) 是十个人中能组成的不同两人组的数量,permutation(8, 3) 则是八名选手分得金、银、铜牌的排法数量。
当值和两个限值衡量的是同一类量时,clamp 会保留金额、数量和时长的单位,因此 clamp(£120, £0, £100) 会把退款上限定为 £100.00。计算阶乘和选取方式数时,请使用整数,并且 k 不能大于 n。5! 是 factorial(5) 的简写。要求其他次方根,请使用短语 root 3 of 27;没有通用的 root(...) 函数。
舍入
round、floor 和 ceil 可以带一个可选的步长,舍入到该步长的倍数:
round(17.46, 0.05) 结果为 17.45ceil(23, 6) 结果为 24floor(7.8) 结果为 7ceil(23, 6) 会把 23 个鸡蛋向上取整为整盒,每盒 6 个。步长不是小数位数:round(17.456, 2) 会舍入到最接近的 2 的倍数,得到 18,而 round 上的提示会建议改写成 17.456 to 2 dp。要按有效数字舍入,请写 to 3 sf。有关恰好一半时的舍入、负数和金额,请参阅舍入。
三角函数与角度
| 函数族 | 含义 |
|---|---|
sin, cos, tan |
三角函数;普通数字按弧度计算 |
sind, cosd, tand |
普通数字按度计算的三角函数 |
asin, acos, atan |
反三角函数;结果带弧度单位 |
asind, acosd, atand |
反三角函数,返回度 |
atan2(y, x) |
考虑象限的角度,结果为表示弧度的普通数字 |
sinh, cosh, tanh |
双曲函数 |
asinh, acosh, atanh |
反双曲函数 |
sin(30°) 结果为 0.5cosd(60) 结果为 0.5tan(45°) 结果为 1sin(pi/2) 结果为 1asind(0.5) 结果为 30°asin(1) 结果为 1.5707963268 radasin(0.5) in degrees 结果为 30°atan2(-1, -1) * 180 / pi 结果为 -135cosh(0) 结果为 1sin、cos 和 tan 接受任何角度单位表示的角度,例如 30° 或 30 degrees。要以度为单位查看 asin、acos 或 atan 的结果,请像上面那样加上 in degrees,或者使用度数形式的函数。
atan2 先接受 y 值,并判断角度位于哪个象限,因此 atan2(-1, -1) 指向左下方(−135°),而单独使用 atan(1) 无法区分这一点。
双曲函数接受普通数字。反函数只接受其实数范围内的值;例如,asin(2) 会显示 Error: imaginary number。要得到复数结果,请参阅复数。
对数与指数
| 函数 | 含义 |
|---|---|
ln(x) |
自然对数 |
log(x), log10(x) |
以 10 为底的对数 |
log2(x) |
以 2 为底的对数 |
logbase(x, b) |
以 b 为底 x 的对数 |
exp(x) |
自然指数 |
log(1000) 结果为 3log10(1000000) 结果为 6log2(1024) 结果为 10logbase(81, 3) 结果为 4ln(exp(2)) 结果为 2exp(0) 结果为 1对数需要正数:log(0) 会显示 Error: ∞,log(-100) 会显示 Error: imaginary number。要计算复数对数,请把数字写成复数形式,例如 ln(-1 + 0i)。底数必须为正数,且不能为 1。对数、指数和双曲函数不接受单位或金额。
随机值
random number between 1 and 6 结果为 4random(1, 6) 结果为 2rand(1, 100) 结果为 57random() 结果为 0.4381930527rand() 结果为 0.9102746385random(0, 1) 结果为 0.2373052626random(a, b)和短语random number between a and b会给出从a到b的整数,包含两端。random()会给出一个大于或等于 0、小于 1 的小数。random(0, 1)是一个特例,作用相同。rand是random的另一个名称。- 边界必须是普通整数,小的在前,且在 64 位整数范围内。只给一个参数、给出两个以上参数、使用小数或边界顺序颠倒都会显示错误。
- 笔记每次重新计算时,Varlig 都可能抽取新的数字。如果后面的行需要使用同一个数字,请把抽取结果存入变量,例如
点数 = random(1, 6)。
列表与统计
average([12, 18, 9, 21]) 结果为 15median([3, 9, 4, 7, 5]) 结果为 5sum([£12.50, £8, £4.25]) 结果为 £24.75max(4, 9, 2) 结果为 9stddev([2, 4, 6]) 结果为 2sum(k, k, 1, 100) 结果为 5,050range(0, 20, 5) 结果为 [0, 5, 10, 15, 20]sort([3, 1, 2]) 结果为 [1, 2, 3]slice([10, 20, 30, 40], 1, 3) 结果为 [20, 30]map(x * 1.2, x, [£10, £25]) 结果为 [£12.00, £30.00]filter(x > 10, x, [4, 12, 18]) 结果为 [12, 18]sum(也可写作 total)、product、average(也可写作 mean 和 avg)、median、min、max、count、length、variance 和 stddev(也可写作 stdev)作用于列表,其中几个也接受分开的多个参数。没有百分位数函数。带四个参数的 sum、summation 和 product 会让计数变量从 lo 取到 hi,并对表达式求和或求积。reverse 和 unique 也接受列表。有关 slice 中的位置、样本统计量与总体统计量等更多内容,请参阅列表与统计。
向量、矩阵与微积分
dot([1, 2, 3], [4, 5, 6]) 结果为 32det([[2, 1], [1, 3]]) 结果为 5solve_system([[1, 1], [1, -1]], [10, 2]) 结果为 [6, 4]solve(x * 1.2 = 60, x, 0, 100) 结果为 50differentiate(x^2, x, 3) 结果为 6integrate(x^2, x, 0, 3) 结果为 9solve_system([[1, 1], [1, -1]], [10, 2]) 求出和为 10、差为 2 的两个数。solve(x * 1.2 = 60, x, 0, 100) 在 0 到 100 之间搜索,求出加上 20% 增值税后为 60 的税前价格。有关 cross、identity、shape、transpose、inverse、trace、rank、eigenvalues、qr、lu 和 svd,请参阅向量与矩阵。有关以公式形式给出的导数,以及求解器和积分器的限制,请参阅求和、解方程与微积分和高等数学:功能与限制。
复数
abs(3 + 4i) 结果为 5complex(3, 4) 结果为 3 + 4iconj(3 + 4i) 结果为 3 - 4ireal(3 + 4i) 结果为 3imag(3 + 4i) 结果为 4arg(z) 以弧度给出复数的辐角。请参阅复数。
日期与车辆
easter(2030) 结果为 April 21, 2030tyre_speed(205, 55, 16, 1000 rpm) in km/h 结果为 119.1103438682 km/heaster(year) 给出某一年西方教会的复活节(星期日),与短语 Easter 2030 得到的日期相同。可以直接从这个日期开始加减天数,例如 easter(2030) + 1 day。请参阅日期与日历。tyre_speed 依次接受以毫米为单位的轮胎宽度、以百分比表示的扁平比、以英寸为单位的轮辋尺寸,以及车轮的转速;请参阅烹饪、声音、屏幕与机械。