經常需要在科學和工程計算中進行數學運算,可以使用標準的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) |
返回值e 的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) |
返回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) |
返回x 的y 方。(也可以使用表示式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
上面的例子只是一些常見的例子,可以根據需要使用數學庫,所以嘗試使用所有的函式以更熟悉運用。