数値演算

数学的な関数です。

num Abs(num)
絶対値を返します。

num Sgn(num)
符号判別をします。
返り値は引数が負数なら-1、0なら0、正数なら1

num Fix(num)
整数部を取り出す(小数部切り捨て)

num Int(num)
引数の値を超えない最大の整数
両方とも“整数化”であるが負数の時に違いが出る。
Fix(1.2) = 1
Int(1.2) = 1
Fix(-1.2) = -1
Int(-1.2) = -2
-2 < -1.2 < -1 なので、引数の値を超えない最大整数は-2である。

num Round(num1[,num2])
指定の小数点位置で丸める。
Roundの言う指定の小数点位置で丸めるというのはどういうことか。
試してみると「指定の小数点位置まで四捨五入する」ということのようである。
Round(1.2345,2) = 1.23
Round(1.2355,2) = 1.24
Round(-1.2345,2) = -1.23
Round(-1.2355,2) = -1.24
num2を省略するとnum2=0、つまり整数化となる。
どうせならIntやFixも第2パラメータを取れれば便利なのに、と思うのだが。

num Rnd([num])
0以上1未満の乱数
引数numは乱数の数値範囲ではない。
乱数を生成する方法を書く、という。
引数 num戻り値
num < 0引数numのシード値によって決まる同じ数値
num > 0乱数系列の次の乱数
num = 0直前に生成した乱数
省略num > 0と同じ
そもそも乱数とは何か、であるが、コンピューターにおける乱数とは、殆どの場合は疑似乱数であり、内部に持っている乱数表を引用して出力しているだけのものである。
しかしここまであからさまにそのことを表に出している言語も珍しい。
「直前に生成した乱数」を再度得るとはどういう必要性があるのだろうか。
ともあれ、なるべく一般常識で言う「乱数」に近いものを期待するのであれば
先にRandomizeを実行する。(乱数のシード値をシステムタイマーで初期化する)
その後にRnd()で数値を得れば良い。

num Sqr(num)
平方根
いわゆる√であり、べき乗根はないようである。
まあ、数学的にnのべき乗はx^n でありn乗根は x^(1/n) というだけのことである。

num Exp(num)
Natural Exponent(自然数eを基底とする、べき乗)
通常のべき乗は演算子で計算する。
自然対数の組み込み定数はないようなのでExp()で得られば良いと思うのだがそういう配慮はない。
まあ、Exp(1)と書けば良いのではあるが。

num Log(num)
自然対数(自然数eを基底とする対数)
残念な事に10の対数はないので対数を取る時にはこれを使うことになろう。
(10の対数というのは数字の桁数を数値処理で得られて便利である)
底の変換公式は loga(b)=logc(b)/logc(a)
なのでa=10,c=eと置きかえれば
log10(b) = loge(b)/loge(10)と書ける。
VBAで10の対数関数をLog10と定義するのならばlog10 = Log10、loge = Logと置き換えるので
function Log10(num)
Log10 = Log(num) / Log(10)
end func
となる。

三角関数
Atnarc tangent(アークタンジェント)
Sinsine(サイン;正弦)
Coscosine(コサイン:余弦)
Tantangent(タンジェント;正接)
全てnum Atn(num) という形式になります。
角度はラジアン単位です。
サイン・コサイン・タンジェントがあり、
逆接はアークタンジェントだけというパターンのようだ。
アークタンジェントだけあればアークサイン・アークコサインなどは求められるのは道理なのだが、もちろん、計算誤差はより大きくなる。
その辺はVBAの用途では求められないという判断なのだろう。
comments (0)

コメント

Comment Form