// 妊娠可能性率(ARTグラフより算出)
double pregnant_capability[100] = {0.0}; // 15歳を1.0とする
pregnant_capability[15]=1.000 ;
pregnant_capability[16]=0.9875 ;
pregnant_capability[17]=0.975 ;
pregnant_capability[18]=0.9625 ;
pregnant_capability[19]=0.95 ;
pregnant_capability[20]=0.9375 ;
pregnant_capability[21]=0.925 ;
pregnant_capability[22]=0.9125 ;
pregnant_capability[23]=0.9 ;
pregnant_capability[24]=0.8875 ;
pregnant_capability[25]=0.875 ;
pregnant_capability[26]=0.85625;
pregnant_capability[27]=0.8375 ;
pregnant_capability[28]=0.81875;
pregnant_capability[29]=0.8 ;
pregnant_capability[30]=0.78125;
pregnant_capability[31]=0.75 ;
pregnant_capability[32]=0.71875;
pregnant_capability[33]=0.6875 ;
pregnant_capability[34]=0.65625;
pregnant_capability[35]=0.625 ;
pregnant_capability[36]=0.5625 ;
pregnant_capability[37]=0.5 ;
pregnant_capability[38]=0.4375 ;
pregnant_capability[39]=0.375 ;
pregnant_capability[40]=0.3125 ;
pregnant_capability[41]=0.26875;
pregnant_capability[42]=0.225 ;
pregnant_capability[43]=0.18125;
pregnant_capability[44]=0.1375 ;
pregnant_capability[45]=0.09375;
pregnant_capability[46]=0.075 ;
pregnant_capability[47]=0.05625;
pregnant_capability[48]=0.0375 ;
pregnant_capability[49]=0.01875;
double sigma_pregnant_capability = 0;
for(int i = 15; i < 50; i++){ //
sigma_pregnant_capability += pregnant_capability[i]; // 同じ値を何度も計算している
}
for (int year = 1970; year < 2100; year++){ // 1970年から2100年までループ計算
// 数値をかえて再コンパイルのこと
#if 0
double dummy = 0;
for(int i = 15; i < 50; i++){ // 特殊出産率の対象 15歳から49歳までの人口加算
dummy += women[i];
}
// 1970年の特殊出生率 2.14 / 35は特殊出生率の対象期間(35年) / 1.05は男性の出生比率
// 2017年の特殊出生率 1.44 / 35は特殊出生率の対象期間(35年) / 1.05は男性の出生比率
double mem_new_birth = dummy * 2.14 / 35.0 * 1.05/(1.05+1.00);
double womem_new_birth = dummy * 2.14 / 35.0 * 1.00/(1.05+1.00);
#else
double sigma_rate_by_age = 0;
for(int i = 15; i < 50; i++){ // 特殊出産率の対象 15歳から49歳までの人口加算
sigma_rate_by_age += pregnant_capability[i] / women[i];
}
// "妊娠可能性係数" という概念を導入
double k_pregnant = 2.14 / sigma_rate_by_age; // 合計特殊出生率 "2.14" から逆算する
double mem_new_birth = k_pregnant * sigma_pregnant_capability * 1.05/(1.05+1.00);
double womem_new_birth = k_pregnant * sigma_pregnant_capability * 1.00/(1.05+1.00);
#endif
因みに、コード修正前と修正後でグラフを比較したが、ほとんど差が見れれなかった。
従って、これまでの計算方法でも、計算結果に差がでないことが分かった(まずは一安心)
(1970年スタート 特殊出生率2.14、2100年の段階で、0.0160548%程度の誤差しかなかった)