Lua - 数学库


我们在科学和工程计算中经常需要数学运算,我们可以使用标准 Lua 库数学来利用它。数学库中可用的函数列表如下表所示。

先生。 库/方法和目的
1

数学.abs (x)

返回 x 的绝对值。

2

数学.acos (x)

返回 x 的反余弦(以弧度为单位)。

3

数学.asin (x)

返回 x 的反正弦值(以弧度为单位)。

4

数学.atan (x)

返回 x 的反正切(以弧度为单位)。

5

math.atan2 (y, x)

返回 y/x(以弧度为单位)的反正切,但使用两个参数的符号来查找结果的象限。(它还可以正确处理 x 为零的情况。)

6

数学.ceil (x)

返回大于或等于 x 的最小整数。

7

数学.cos (x)

返回 x 的余弦(假设以弧度为单位)。

8

数学.cosh (x)

返回 x 的双曲余弦。

9

数学.deg (x)

返回以度为单位的角度 x(以弧度给出)。

10

数学.exp (x)

返回值 e 次幂 x。

11

数学.floor (x)

返回小于或等于 x 的最大整数。

12

math.fmod (x, y)

返回 x 除以 y 所得的余数,该余数将商向零舍入。

13

数学.frexp (x)

返回 m 和 e,使得 x = m2e,e 是整数,并且 m 的绝对值在 [0.5, 1) 范围内(或者当 x 为零时为零)。

14

数学.巨大

值 HUGE_VAL,大于或等于任何其他数值的值。

15

math.ldexp(m, e)

返回 m2e(e 应该是整数)。

16

数学.log (x)

返回 x 的自然对数。

17 号

数学.log10 (x)

返回 x 以 10 为底的对数。

18

math.max(x, ...)

返回其参数中的最大值。

19

math.min(x, ...)

返回其参数中的最小值。

20

数学.modf (x)

返回两个数字,x 的整数部分和 x 的小数部分。

21

数学.pi

圆周率的值。

22

数学.pow(x, y)

返回 xy。(您还可以使用表达式 x^y 来计算该值。)

23

数学.rad (x)

返回以弧度表示的角度 x(以度为单位)。

24

math.random([m[,n]])

该函数是 ANSI C 提供的简单伪随机生成器函数 rand 的接口。当不带参数调用时,返回 [0,1) 范围内的统一伪随机实数。当使用整数 m 调用时,math.random 返回 [1, m] 范围内的统一伪随机整数。当使用两个整数 m 和 n 调用时,math.random 返回 [m, n] 范围内的统一伪随机整数。

25

数学.随机种子 (x)

将 x 设置为伪随机生成器的“种子”:相同的种子产生相同的数字序列。

26

数学.sin (x)

返回 x 的正弦值(假定以弧度为单位)。

27

数学.sinh (x)

返回 x 的双曲正弦值。

28

数学.sqrt (x)

返回 x 的平方根。(您还可以使用表达式 x^0.5 来计算该值。)

29

数学 tan (x)

返回 x 的正切(假定以弧度为单位)。

30

数学.tanh (x)

返回 x 的双曲正切。

三角函数

下面显示了使用三角函数的简单示例。

radianVal = math.rad(math.pi / 2)

io.write(radianVal,"\n")

-- Sin value of 90(math.pi / 2) degrees
io.write(string.format("%.1f ", math.sin(radianVal)),"\n")

-- Cos value of 90(math.pi / 2) degrees
io.write(string.format("%.1f ", math.cos(radianVal)),"\n")

-- Tan value of 90(math.pi / 2) degrees
io.write(string.format("%.1f ", math.tan(radianVal)),"\n")

-- Cosh value of 90(math.pi / 2) degrees
io.write(string.format("%.1f ", math.cosh(radianVal)),"\n")

-- Pi Value in degrees
io.write(math.deg(math.pi),"\n")

当我们运行上面的程序时,我们将得到以下输出。

0.027415567780804
0.0 
1.0 
0.0 
1.0 
180

其他常见的数学函数

下面显示了使用常见数学函数的简单示例。

-- Floor
io.write("Floor of 10.5055 is ", math.floor(10.5055),"\n")

-- Ceil
io.write("Ceil of 10.5055 is ", math.ceil(10.5055),"\n")

-- Square root
io.write("Square root of 16 is ",math.sqrt(16),"\n")

-- Power
io.write("10 power 2 is ",math.pow(10,2),"\n")
io.write("100 power 0.5 is ",math.pow(100,0.5),"\n")

-- Absolute
io.write("Absolute value of -10 is ",math.abs(-10),"\n")

--Random
math.randomseed(os.time())
io.write("Random number between 1 and 100 is ",math.random(),"\n")

--Random between 1 to 100
io.write("Random number between 1 and 100 is ",math.random(1,100),"\n")

--Max
io.write("Maximum in the input array is ",math.max(1,100,101,99,999),"\n")

--Min
io.write("Minimum in the input array is ",math.min(1,100,101,99,999),"\n")

当我们运行上面的程序时,我们将得到以下输出。

Floor of 10.5055 is 10
Ceil of 10.5055 is 11
Square root of 16 is 4
10 power 2 is 100
100 power 0.5 is 10
Absolute value of -10 is 10
Random number between 1 and 100 is 0.22876674703207
Random number between 1 and 100 is 7
Maximum in the input array is 999
Minimum in the input array is 1

上面的例子只是一些常见的例子,我们可以根据需要使用数学库,所以尝试使用所有的函数来更加熟悉。