📄 zongchengxu.m
字号:
%计算2050年人口分布情况及总数
%2005年人口总数分布情况,可由前面计算结果得到
clear
clc
mm=2030;% 改变相应的年份
format short
f=[
0.1404
0.1381
0.1331
0.1377
0.1490
0.1541
0.1505
0.1670
0.1695
0.1750
0.1965
0.1874
0.2084
0.2156
0.2353
0.2661
0.2424
0.2141
0.2148
0.1726
0.1514
0.1479
0.1533
0.1819
0.1636
0.1620
0.1721
0.1710
0.1649
0.1841
0.1947
0.2136
0.2250
0.2354
0.2459
0.2706
0.2503
0.2765
0.2232
0.2516
0.2581
0.2468
0.2917
0.2190
0.1215
0.1550
0.1413
0.1849
0.2101
0.1917
0.2098
0.2039
0.1892
0.1897
0.1609
0.1610
0.1551
0.1326
0.1310
0.1191
0.1158
0.1062
0.0989
0.0962
0.0963
0.0982
0.0800
0.0888
0.0848
0.0823
0.0836
0.0720
0.0750
0.0635
0.0563
0.0586
0.0458
0.0456
0.0400
0.0328
0.0333
0.0272
0.0231
0.0203
0.0164
0.0136
0.0099
0.0075
0.0063
0.0046
0.0138
];
%2005--2050年间婴儿的出生数目,可由前面的计算数据得到
%2016年--2050年的城市新生婴儿人口总数
format long
d1=1.4;
d2=1.7;
d3=2.0;
r1=104;
r2=104;
r3=104;
q=0.1403;
c1=(2357679+2350224)/16985767;
a=zeros(35,1);
for ii=1:35
a(ii,1)=d1*q*c1*(100/r1)^(10+ii)*(1+0.01)^(10+ii);
end
a_chengshi=a;
%2016--2050年的镇新生婴儿人口总数
q=0.1403;
c1=(1464804+1444176)/16985767;
a=zeros(35,1);
for ii=1:35
a(ii,1)=d2*q*c1*(100/r2)^(10+ii)*(1+0.01)^(10+ii);
end
a_zhen=a;
%2016--2050年的乡新生婴儿人口总数
q=0.1403;
c1=(4762400+4606484)/16985767;
a=zeros(35,1);
for ii=1:35
a(ii,1)=d3*q*c1*(100/r3)^(10+ii)*(1-0.01)^(10+ii);
end
a_xiang=a;
%2016--2050年新生婴儿总数
a=[a_chengshi,a_zhen,a_xiang];
b=(sum(a'))';
b=[
0.1427
0.1448
0.142
0.1372
0.1373
0.1421
0.1448
0.1414
0.1369
0.1377
0.1427
b
];
%以后各年龄段的人口存活率,可由前面计算数据得到
h=[
0.99959890780000
0.99997102180000
0.99997135740000
0.99997448160000
0.99998170060000
0.99998226840000
0.99998260300000
0.99998212380000
0.99998447160000
0.99998922520000
0.99998009820000
0.99998673980000
0.99998428860000
0.99997356700000
0.99997243400000
0.99997387780000
0.99997593280000
0.99996979080000
0.99996828320000
0.99997615940000
0.99997291260000
0.99996753000000
0.99996793340000
0.99996369780000
0.99997257140000
0.99996786980000
0.99996776760000
0.99991722540000
0.99995410820000
0.99994150420000
0.99993725960000
0.99994318080000
0.99993362860000
0.99993231660000
0.99993418120000
0.99992510140000
0.99991386480000
0.99992392120000
0.99991113320000
0.99990958880000
0.99990408060000
0.99990129540000
0.99992022320000
0.99991731540000
0.99989850020000
0.99989549060000
0.99988952980000
0.99988415020000
0.99985624660000
0.99984350100000
0.99983634080000
0.99983597420000
0.99981427820000
0.99983449820000
0.99982848560000
0.99980826480000
0.99981171560000
0.99983210000000
0.99978389340000
0.99978713440000
0.99975925860000
0.99976886940000
0.99973009780000
0.99970850820000
0.99969022980000
0.99965806860000
0.99966612880000
0.99962281660000
0.99959544260000
0.99955510720000
0.99949930320000
0.99951838440000
0.99949040340000
0.99951042140000
0.99951945300000
0.99948134840000
0.99955297420000
0.99951216400000
0.99954049680000
0.99956356140000
0.99952490460000
0.99957870480000
0.99954648400000
0.99964882240000
0.99966972380000
0.99970738640000
0.99974535840000
0.99980299960000
0.99979688060000
0.99984942880000
0.99934253520000
];
%存活率累乘
%假设s表示年龄
%(s<=45岁)
k=mm-2005+1;
for n=2:k
h1(1)=h(1);
h1(n)=h(n)*h1(n-1);
end
h1; %存活率累乘
%2050年s岁人口数
num1=zeros(1,k)
for n=1:k;
num1(n)=b(k+1-n)*h1(n);
end
num1'%所得数据从0岁开始
vv=sum(num1')
%(s>45)
num2=zeros(1,91-k);
for n=1:91-k;
num2(n)=f(n+1)*h(92-k-n);
end
num2';
num=[num1';num2'];
sum(num);
renkoushu=[num;sum(num)]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -