ユーティリティ関数¶
以下のユーティリティ関数を使うことができます。
ヒント
- 以下の説明において、引数・返り値が (double value, int digit) -> double と説明されているとき、
- 引数はdouble型, int型の2つということを表します
- 引数名value, digitは説明のためであり、モデリング上は特に関係ありません
- 返り値はdouble型ということを表します
- 引数・返り値が複数ある場合は、算式の中の引数の数や型に応じて適切なものが選ばれます。
- Utl.round
引数・返り値1: (double value) -> double 引数・返り値2: (double value, int digit) -> double 説明: 四捨五入を行い、小数点以下digit桁に丸めます。digitを指定しなかった場合は整数となるように丸めます。digitが負の場合はエラーとなります。- Utl.log
引数・返り値: (double value) -> double 説明: 対数を計算します - Utl.exp
引数・返り値: (double value) -> double 説明: 指数を計算します - Utl.abs
引数・返り値1: (int value) -> int 引数・返り値2: (double value) -> double 説明: 絶対値を計算します - Utl.max
引数・返り値1: (int a, int b) -> int 引数・返り値2: (double a, double b) -> double 引数・返り値3: (int a, int b, int c) -> int 引数・返り値4: (double a, double b, double c) -> double 説明: 最大値を計算します - Utl.min
引数・返り値1: (int a, int b) -> int 引数・返り値2: (double a, double b) -> double 引数・返り値3: (int a, int b, int c) -> int 引数・返り値4: (double a, double b, double c) -> double 説明: 最小値を計算します - Utl.clip
引数・返り値1: (double a, double mn, double mx) -> double 引数・返り値2: (int a, int mn, int mx) -> int 説明: aがmn以下であればmn、aがmx以上であればmx, そうでなければaを返しますmn > mx となっている場合はエラーとなります- Utl.sum
引数・返り値: (double[] ary) -> double 説明: 配列の和を返します - Utl.sum_range
引数・返り値: (double[] ary, int start, int last) -> double 説明: 配列のstart番目からlast番目までの和を返します。start, lastがaryの範囲を超えている場合、範囲の最初の値、最後の値となりますstart > last となっている場合は、0を返します- Utl.average
引数・返り値: (double[] ary) -> double 説明: 配列の平均値を返します。 - Utl.average_range
引数・返り値: (double[] ary, int start, int last) -> double 説明: 配列のstart番目からlast番目までの平均値を返します。start, lastがaryの範囲を超えている場合、範囲の最初の値、最後の値となりますstart > last となっている場合は、0を返します- Utl.sum_product
引数・返り値: (double[] ary1, double[] ary2) -> double 説明: 配列の対応する要素の積を計算し、その和を返しますary1, ary2の要素数が異なる場合はエラーとなります- Utl.sum_product_range
引数・返り値: (double[] ary1, double[] ary2, int start, int last) -> double 説明: 配列のstart番目からlast番目までの対応する要素の積を計算し、その和を返しますary1, ary2の要素数が異なる場合はエラーとなりますstart, lastが配列の範囲を超えている場合、範囲の最初の値、最後の値となりますstart > last となっている場合は、0を返します- Utl.normsdist
引数・返り値: (double z) -> double 説明: 標準正規分布の累積分布関数の値を返します - Utl.normsinv
引数・返り値: (double p) -> double 説明: 標準正規分布の累積分布関数の逆関数の値を返します - Util.irr
引数・返り値: (double[] ary) -> double 説明: 内部収益率を計算します各要素が年ごとの値であることが想定されています計算時間が比較的長い計算です。特に配列の要素数が多い場合に計算時間がかかるため、要素数を200以下とすることを推奨します。内部収益率が計算できない場合、配列の和が正のときには100.0、そうでない場合は-100.0を返します。- Utl.to_annual
引数・返り値1: (double[] ary, int yearsLast) -> double[]
引数・返り値2: (double[] ary, int yearsLast, int[] years) -> double[]
説明: 月単位の配列を年単位の配列に直すための関数ですyearsLastは直した後の配列の最後の要素のインデックスですyearsがない場合、配列aryの0番目の要素は0番目、1-12番目は1番目, 13-24は2番目.. にマッピングされ、和が計算されますyearsがある場合、配列aryの要素は配列yearの対応する要素のインデックスにマッピングされ、和が計算されますary, yearsの要素数が異なる場合はエラーとなります説明 - ロジック (引数・返り値1): 返り値の配列のi番目の要素の値は以下で表されます
ret = 0.0 for (k = 0; k < ary.Length; k++) if(k >= (i-1) * 12 + 1 && k <= (i * 12)) ret += ary[k]
説明 - ロジック (引数・返り値2): 返り値の配列のi番目の要素の値は以下で表されます
ret = 0.0 for (k = 0; k < ary.Length; k++) if(i == years[k]) ret += ary[k]
- Utl.pv
引数・返り値: (double[] cf, double[] disc, double[] cfDisc) -> double[]
説明: 各期末における翌期以降のCFの現価を計算しますcf, disc, cfDiscの要素数が異なる場合はエラーとなります説明 - ロジック: 返り値の配列のi番目の要素の値は以下で表されます
ret = 0.0 (for k = i + 1; k < cf.Length; k++) ret += cf(k) * cfDisc(k) / disc(i)