Lua數學庫

經常需要在科學和工程計算中進行數學運算,可以使用標準的Lua庫數學來實現。 數學庫中可用的函數列表如下表所示 -

編號 庫或方法 描述
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) 返回值ex次冪。
11 math.floor(x) 返回小於或等於x的最大整數。
12 math.fmod(x,y) 返回x除以y的餘數,將商舍入為零。
13 math.frexp(x) 返回me,使得x = m2ee是整數,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) 返回x的以10為底的對數。
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的介面。
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

上面的例子只是一些常見的例子,可以根據需要使用數學庫,所以嘗試使用所有的函數以更熟悉運用。


上一篇: Lua標準庫 下一篇: Lua操作系統工具