:orphan: ================================== 練習問題3の回答 ================================== 練習問題3-1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ファイルrun.xlsxのシートrunの、列calculation2, output2, sc_st2, sc_la2, sh_st2, sh_la2の値を空白にすれば良いです。 | こうすることで、2回目のランが行われなくなります。 | (また、モデルファイルev.modelも削除して構いません) 練習問題3-2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ モデルについては、以下のように、term.modelに変数dynamic_lapse, qwx_baseを追加して下さい。(qwx_baseはBase計算クラスの算式をオーバーライドしています) :: double[] dynamic_lapse = if(investment_yield(t) > 0.03) { 2.0 } else { 1.0 } double[] qwx_base = if (t == 0 || t > n) { 0.0 } else {Utl.clip(qwx_crude(t) * (1.0+lapse_shock_ex) * dynamic_lapse(t), 0.0, 1.0)} ラン定義については、ファイルrun.xlsxのシートrunの、定期保険(Term)のランを行う行について、 * 列sc_laを10にします。 * 列outputにev_stochを追加します。(EVを計算する場合) * 列calculation2をEVStochとします。(EVを計算する場合) 練習問題3-3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ モデルについては、 * まず、モデルファイルmedical.modelをコピーしてmedical2.modelを作成します。 * 次に、計算クラス名を ``calculation Medical2(Base)`` のようにして修正します。 * そして、以下のようにモジュールRateとモジュールCashFlowを修正して下さい。 .. code-block:: python :caption: モジュールRate double Multiplier = 2.0 double[] benefitPV_P = if (t > n) { 0.0 } elseif ( CT_P.Dx(x + t) <= 0.0) { 0.0 } else { ( (CT_P.Mx_hosp(x + t) - CT_P.Mx_hosp(x + n)) * Multiplier + (CT_P.Mx_acci(x + t) - CT_P.Mx_acci(x + n)) * Multiplier + CT_P.Mx_surg(x + t) - CT_P.Mx_surg(x + n) ) / CT_P.Dx(x + t) } double[] benefitPV_V = if (t > n) { 0.0 } elseif ( CT_V.Dx(x + t) <= 0.0) { 0.0 } else { ( (CT_V.Mx_hosp(x + t) - CT_V.Mx_hosp(x + n)) * Multiplier + (CT_V.Mx_acci(x + t) - CT_V.Mx_acci(x + n)) * Multiplier + CT_V.Mx_surg(x + t) - CT_V.Mx_surg(x + n) ) / CT_V.Dx(x + t) } .. code-block:: python :caption: モジュールCashFlow double Multiplier = 2.0 double[] medical_benefit_hosp = S * Multiplier * dx_hosp(t) * Tx_hosp(t) double[] medical_benefit_acci = S * Multiplier * dx_acci(t) * Tx_acci(t) ラン定義については、 * まず、ファイルrun.xlsxのシートrunの、医療保険(Medical)を行う行をコピーします。 * そして、列nameを01_medical2, calculationをMedical2と修正すれば良いです。