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

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