|
|
Perl関数リファレンス 数学に関する関数 |
H.Kamifuji . |
Perlの組み込み関数の中で文字列に関係する関数のリファレンスです。 当ページでは、Linux CentOS7 の Gnome で動作テストしています。 |
|
「int」関数は対象となる数値の小数点以下を切り捨て整数部分を返します。 int int([EXPR])小数点以下を切り捨てて、整数部分を返します。 パラメータ: EXPR 対象の数値 戻り値: 対象の数値の整数部分 1番目の引数には対象となる数値を指定します。省略された場合は変数「$_」が使用されます。対象の数値の小数部分を切りすてた値が返されます。 具体的には次のように記述します。 my $num = int(3.14);上記の場合は「3」を返します。 小数点以下は四捨五入ではなく切捨てとなりますので注意して下さい。 では簡単なプログラムで確認して見ます。 test1-1.pl サンプルプログラム下記のサンプルを実行してみよう。# int関数 # use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my $num; $num = int(3.14); print "int(3.14) = $num\n"; $num = int(7.692); print "int(7.692) = $num\n"; $num = int(-0.123); print "int(-0.123) = $num\n";上記を「test1-1.pl」の名前で保存してから次のように実行して下さい。 ![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Math]$ perl test1-1_u.pl | nkf -w int(3.14) = 3 int(7.692) = 7 int(-0.123) = 0 [xxxxxxxx@dddddddddd Math]$ |
「abs」関数は対象となる数値の絶対値を返します。 abs abs([VALUE])絶対値を返します。 パラメータ: VALUE 対象の数値 戻り値: 対象の数値の絶対値 1番目の引数には対象となる数値を指定します。省略された場合は変数「$_」が使用されます。対象の数値の絶対値が戻り値として返されます。 具体的には次のように記述します。 my $num = abs(-14);上記の場合は「14」を返します。 では簡単なプログラムで確認して見ます。 test2-1.pl サンプルプログラム下記のサンプルを実行してみよう。# abs関数 # use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my $num; $num = abs(-18); print "abs(-18) = $num\n"; $num = abs(18); print "abs(18) = $num\n"; $num = abs(-3.567); print "abs(-3.567) = $num\n";上記を「test2-1.pl」の名前で保存してから次のように実行して下さい。 ![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Math]$ perl test2-1_u.pl | nkf -w abs(-18) = 18 abs(18) = 18 abs(-3.567) = 3.567 [xxxxxxxx@dddddddddd Math]$ |
「sin」関数はサイン(正弦)を返します。 sin sin([EXPR])ラジアン単位で指定した引数のサイン(正弦)を返します。 パラメータ: EXPR 角度(ラジアン単位) 戻り値: サイン 1番目の引数には角度をラジアン単位で指定します。省略された場合は変数「$_」が使用されます。指定した角度に対するサインが戻り値として返されます。 なお角度は「+π(180度)」から「-π(-180度)」の間の数値で指定します。(π=3.14159)。 具体的には次のように記述します。 my $pai = 3.14159; my $num = sin($pai / 4);上記では1/4π(45度)のサインを計算します。 ※コサインについては「cos関数」を参照。タンジェントを計算する関数は用意されていないため、sinθ/cosθで計算します。 では簡単なプログラムで確認して見ます。 test3-1.pl サンプルプログラム下記のサンプルを実行してみよう。# sin関数 # use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my $pai = 3.14159; my $num; $num = sin($pai / 4); print "sin(π/4) = $num\n"; $num = sin($pai / 6); print "sin(π/6) = $num\n";上記を「test3-1.pl」の名前で保存してから次のように実行して下さい。 ![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Math]$ perl test3-1_u.pl | nkf -w sin(π/4) = 0.707106312093558 sin(π/6) = 0.499999616987256 [xxxxxxxx@dddddddddd Math]$ |
「cos」関数はコサイン(余弦)を返します。 cos cos([EXPR])ラジアン単位で指定した引数のコサイン(余弦)を返します。 パラメータ: EXPR 角度(ラジアン単位) 戻り値: コサイン 1番目の引数には角度をラジアン単位で指定します。省略された場合は変数「$_」が使用されます。指定した角度に対するコサインが戻り値として返されます。 なお角度は「+π(180度)」から「-π(-180度)」の間の数値で指定します。(π=3.14159)。 具体的には次のように記述します。 my $pai = 3.14159; my $num = cos($pai / 4);上記では1/4π(45度)のコサインを計算します。 ※サインについては「sin関数」を参照。タンジェントを計算する関数は用意されていないため、sinθ/cosθで計算します。 では簡単なプログラムで確認して見ます。 test4-1.pl サンプルプログラム下記のサンプルを実行してみよう。# cos関数 # use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my $pai = 3.14159; my $num; $num = cos($pai / 4); print "cos(π/4) = $num\n"; $num = cos($pai / 6); print "cos(π/6) = $num\n";上記を「test4-1.pl」の名前で保存してから次のように実行して下さい。 ![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Math]$ perl test4-1_u.pl | nkf -w cos(π/4) = 0.707107250279226 cos(π/6) = 0.866025624916837 [xxxxxxxx@dddddddddd Math]$ |
「log」関数は自然対数を返します。 log log([EXPR])引数に指定した値の自然対数を返します。 パラメータ: EXPR 対象の値 戻り値: 自然対数 1番目の引数には自然対数を求める数値を指定します。省略された場合は変数「$_」が使用されます。指定した数値に対する自然対数が戻り値として返されます。 具体的には次のように記述します。 my $num = log(2);上記ではeを底とした自然対数を計算します。 ※なお任意の値を底とした対数を求める関数は用意されていません。例えば10を底とした対数を求めるには次の計算式を使います。 log(EXPR) / log(10);では簡単なプログラムで確認して見ます。 test5-1.pl サンプルプログラム下記のサンプルを実行してみよう。# log関数 # use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my $num; $num = log(2); print "log(2) = $num\n"; $num = log(8) / log(2); print "log2(8) = $num\n";上記を「test5-1.pl」の名前で保存してから次のように実行して下さい。 ![]() 上の計算式はeを底とした対数(自然対数)です。下の計算式は2を底とした対数です。 Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Math]$ perl test5-1_u.pl | nkf -w log(2) = 0.693147180559945 log2(8) = 3 [xxxxxxxx@dddddddddd Math]$ |
「exp」関数はeのべき乗を返します。 exp exp([EXPR])自然対数eに対して引数に指定した数値のべき乗を返します。 パラメータ: EXPR べき乗する数値 戻り値: eのべき乗 1番目の引数にべき乗する数値を指定します。省略された場合は変数「$_」が使用されます。自然対数eに対して引数に指定した数値のべき乗を返します。 具体的には次のように記述します。 my $num = exp(2);上記ではeの2乗を計算します。 では簡単なプログラムで確認して見ます。 test6-1.pl サンプルプログラム下記のサンプルを実行してみよう。# exp関数 # use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my $num; $num = exp(1); print "exp(1) = $num\n"; $num = exp(2); print "exp(2) = $num\n";上記を「test6-1.pl」の名前で保存してから次のように実行して下さい。 ![]() 1番目の計算式ではeの1乗、すなわちeの値が計算されています。 Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Math]$ perl test6-1_u.pl | nkf -w exp(1) = 2.71828182845905 exp(2) = 7.38905609893065 [xxxxxxxx@dddddddddd Math]$ |
「sqrt」関数は指定された数値の平方根を返します。 sqrt sqrt([EXPR])引数に指定した数値の平方根を返します。 パラメータ: EXPR 対象の数値 戻り値: 平方根 1番目の引数に平方根を計算する数値を指定します。省略された場合は変数「$_」が使用されます。指定された数値の平方根を計算し返します。 具体的には次のように記述します。 my $num = sqrt(16);上記では[16」の平方根を計算し「4」が返されます。 では簡単なプログラムで確認して見ます。 test7-1.pl サンプルプログラム下記のサンプルを実行してみよう。# sqrt関数 # use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my $num; $num = sqrt(16); print "sqrt(16) = $num\n"; $num = sqrt(2); print "sqrt(2) = $num\n";上記を「test7-1.pl」の名前で保存してから次のように実行して下さい。 ![]() Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxxx@dddddddddd Math]$ perl test7-1_u.pl | nkf -w sqrt(16) = 4 sqrt(2) = 1.4142135623731 [xxxxxxxxx@dddddddddd Math]$ |
「rand」関数は乱数を生成して返します。 rand rand([EXPR])乱数を生成して返します。 パラメータ: EXPR 生成される乱数の最大値(※最大値は含みません) 戻り値: 乱数 1番目の引数に生成される乱数の最大値を指定します。省略された場合は「1」が指定されたものとなります。 例えば1番目の引数に「10」が指定された場合は、0以上10未満の乱数が生成され返されます。生成される乱数は小数点を含む値です。 具体的には次のように記述します。 my $num = rand(10);乱数は小数点を含む数値となりますので、整数値だけの乱数を作成するには「int」関数を使って次のように記述します。 my $num = int(rand(10));なお、古いバージョンのPerlでは乱数のシードを作成するための「srand」関数の呼び出しを行っていましたが、現在のバージョンでは必要ありません。rand関数を実行する際に自動的にsrand関数が呼び出され適切なシードが設定されます。 では簡単なプログラムで確認して見ます。 test8-1.pl サンプルプログラム下記のサンプルを実行してみよう。# rand関数 # use strict; use warnings; use utf8; binmode STDIN, ':encoding(cp932)'; binmode STDOUT, ':encoding(cp932)'; binmode STDERR, ':encoding(cp932)'; my $num; $num = rand(10); print "$num\n"; $num = int(rand(10)); print "$num\n";上記を「test8-1.pl」の名前で保存してから次のように実行して下さい。 ![]() 実行される度に乱数が生成されています。 Linux 環境での実行結果は、下記です。シフトJIS で出力されるので nkf -w で UTF-8 に変換しています。 [xxxxxxxx@dddddddddd Math]$ perl test8-1_u.pl | nkf -w 4.13687633656995 3 [xxxxxxxx@dddddddddd Math]$ |
|