練習問題1の回答

練習問題1-1

ファイルrun.xlsxのシート(a1d)Baseで、CIRの値 0.0250.03 に変更すれば良いです。
直接モデルの算式を double CIR = 0.03 と書き換える方法もあります。

練習問題1-2

以下のようにSx, Rxの算式を追加すれば良いです。(出力定義でDEBUGが指定されているので、すべての変数を自動的に出力します)

double[] Sx =
    if (x >= max_x) { Nx(x) }
    else            { Nx(x) + Sx(x+1) }
double[] Rx =
    if (x >= max_x) { Mx(x) }
    else            { Mx(x) + Rx(x+1) }

練習問題1-3

まず、ファイルrun.xlsxのシートinforceで、年齢x、払込期間mを追加し、
(sex, x, m) = (M, 40, 10), (M, 40, 20) と2行設定する必要があります。

次に、インフォースの読み込みを以下のように追加する必要があります。

int inf_x = Inf.get_int("x")
int m = Inf.get_int("m")

算式は、以下のようにlx, d_xを変更し、qwx, dwxを追加すれば良いです。

double[] qwx = if (x < inf_x + m) { 0.04 }
               else               { 0.02 }
double[] lx = if (x == 0) { 1.0 }
              else        { Utl.max(lx(x-1) - d_x(x-1) - dwx(x-1), 0.0) }
double[] d_x = lx(x) * qx(x) * (1.0 - qwx(x)/2.0)
double[] dwx = lx(x) * qwx(x) * (1.0 - qx(x)/2.0)