Lua - 数学库

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

Sr.No.Library/Method&目的
1

math.abs(x)

返回x的绝对值.

2

math.acos(x)

返回x的弧余弦值(以弧度表示).

3

math.asin(x)

返回x的弧正弦(以弧度表示).

4

math.atan(x)

返回x的反正切(以弧度表示).

5

math.atan2(y,x)

返回y/x的弧切线(以弧度表示),但使用两个参数的符号来查找结果的象限. (它也正确处理x为零的情况.)

6

math.ceil(x)

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

7

math.cos(x)

返回x的余弦值(假设为弧度).

8

math.cosh(x)

返回x的双曲余弦值.

9

math.deg(x)

返回角度x(以弧度表示)度.

10

math.exp(x)

返回e power x值.

11

math.floor(x)

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

12

math.fmod(x,y)

返回x舍入的余数除以y朝向零的商.

13

math.frexp(x)

返回m和e,使得x = m2e,e是一个整数,m的绝对值是在[0.5,1]范围内(当x为零时为零).

14

math.huge

值HUGE_VAL,一个大于或等于任何值的值其他数值.

15

math.ldexp(m,e)

返回m2e(e应为整数).

16

math.log(x)

返回x的自然对数.

17

math.log10(x)

返回基数-10 x的对数.

18

math.max(x,...)

返回其参数中的最大值.

19

math.min(x,...)

返回其参数中的最小值.

20

math.modf(x)

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

21

math.pi

pi的值.

22

math.pow(x,y)

返回xy. (您也可以使用表达式x ^ y来计算此值.)

23

math.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

math.randomseed(x)

将x设置为伪随机生成器的"种子":相等种子生成相等的数字序列.

26

math.sin(x)

退货x的正弦(假设是以弧度表示).

27

math.sinh(x)

返回x的双曲正弦值.

28

math.sqrt( x)

返回x的平方根. (您也可以使用表达式x ^ 0.5来计算此值.)

29

math.tan(x)

返回x的正切(假设为弧度).

30

math.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

以上示例只是一些常见示例,我们可以根据需要使用数学库,所以尝试使用所有函数更熟悉.