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) 値epowerxを返します。 |
11 | math.floor (x) x以下の最大の整数を返します。 |
12 | math.fmod (x, y) 商をゼロに丸める、xをyで割った余りを返します。 |
13 | math.frexp (x) x = m2e、eが整数、mの絶対値が[0.5、1)の範囲(またはxがゼロの場合はゼロ)になるようにmとeを返します。 |
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の小数部分の2つの数値を返します。 |
21 | math.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]の範囲の均一な疑似乱数整数を返します。math.randomは、2つの整数mとnで呼び出されると、[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
上記の例は一般的な例のほんの一部です。必要に応じて数学ライブラリを使用できるため、すべての関数を使用して、より慣れ親しんでください。