plot(15:49,rp,'ko'); plot(r,h) trapz(r,h)
9.5 平均寿命计算matlab程序
t=1;
s=(t+0.1):0.1:1000;
fs=zeros(1,10000-t*10); j=1; for i=s
k=0:0.1:i-t;
b =[7.19122541934300 -0.01081364309538 0.00087941719927]; u=0.97*1./(1+exp(b(1)-b(2)*k-b(3)*k.^2)); fs(j)=exp(trapz(k,-u)); j=j+1; end
trapz(s,fs)
9.6 人口密度及人口指数预测matlab程序
close all;clc;
load('D:\\MATLAB701\\work\\Poo.mat'); pval=[]; for t=1:15 %figure; hold on;
%subplot(2,2,t) p=[]; x=0:90;
y=Poo(:,1)'; c=polyfit(x,y,16); for r=t:90;
k=r-t:0.1:r;
b =[7.19122541934300 -0.01081364309538 0.00087941719927]; u=1./(1+exp(b(1)-b(2)*k-b(3)*k.^2)); P0=polyval(c,r-t);
p=[p;P0*exp(trapz(k,-u))]; end pa=[]; for r=0:t-1 k=15:1:50; r1=15; c0=2; b=9;
34
a=4.5;
x=0:0.001:100;
y=x.^(a-1).*exp(-x);
h=(k-r1).^a.*exp((r1-k)/c0)/c0^a/trapz(x,y)/b; b =[0.44857479299723 0.00147127266152 0.00007520002193 -0.00000309654755 0.00000002668539 0.00071727847033];
y=b(1)+b(2)*k+b(3)*k.^2+b(4)*k.^3+b(5)*k.^4+b(6)*t; if t==1|r==0
p1=p(16-t:51-t); p1=p1';
else
p1=pval(t-r,16:51); end
f=1.8*trapz(k,h.*y.*p1); k=-0.001:0.001:r;
b =[7.19122541934300 -0.01081364309538 0.00087941719927]; u=1./(1+exp(b(1)-b(2)*k-b(3)*k.^2)); pa=[pa;f*exp(trapz(k,-u))]; end
p=[pa;p]'; plot(0:90,p); pval=[pval;p]; if t<5
n=t+1 x=0:90;
y=Poo(:,6-n)'; c1=polyfit(x,y,16); xi=0:0.1:90;
yi=polyval(c1,xi);
%plot(0:90,p,0:90,Poo(:,6-n),'r.',xi,yi,'r'); end end mn=[]; for i=1:15 x=0:90;
m=trapz(x,pval(i,:)); mn=[mn,m]; end mn
mn2=[];
35
for i=1:15
x=0:90;
m=trapz(x,x.*pval(i,:)); mn2=[mn2,m]; end
mn2=mn2./mn; l=[]; for i=1:15 x=15:64;
m=trapz(x,pval(i,15:64)); l=[l,m]; end
yl=mn./l-1;
9.7 性别比例参数估计matlab程序
close all;clc; format long;
load('D:\\MATLAB701\\work\\WOMAN.mat'); hold on;
plot(0:90,WOMAN(:,1),'b'); plot(0:90,WOMAN(:,2),'k'); plot(0:90,WOMAN(:,3),'r'); plot(0:90,WOMAN(:,4),'c'); plot(0:90,WOMAN(:,5),'m'); figure;
hold on;
for i=1:5:91
plot(2001:2005,WOMAN(i,:),'b-'); end
figure;
w=(WOMAN(:,1)+WOMAN(:,2)+WOMAN(:,3)+WOMAN(:,4)+WOMAN(:,5))/5; x=1:89;
p=polyfit(x,w(2:90,:)',4); xi=1:0.1:89; yi=polyval(p,xi);
plot(x,w(2:90),'o',xi,yi); r=0:90; r=r'; x=[];
for i=1:5
x=[x;ones(91,1),r,r.^2,r.^3,r.^4,ones(91,1)*i]; end
36
y=[WOMAN(:,5);WOMAN(:,4);WOMAN(:,3);WOMAN(:,2);WOMAN(:,1)]; [b,bint,r,rint,stats]=regress(y,x,0.05); b,bint,stats figure; hold on; xi=0:0.1:90; for t=1:5
yi=b(1)+b(2)*xi+b(3)*xi.^2+b(4)*xi.^3+b(5)*xi.^4+b(6)*t; plot(0:90,WOMAN(:,1),'o',xi,yi,'k'); end
9.8 用Leslie矩阵法预测人口,计算人口指数matlab程序
clear;clc;
load('womanpeople.mat'); load('people');
load('womandeath.mat');
load('bornrate.mat'); load('sexratio');
x0=womanpeople(:,5);u=(sum(womandeath')/5)';b=bornrate;k=sexratio;b=0.86*b/sum(b); L=zeros(91,91); for i=2:91
L(i,i-1)=1-u(i-1)*0.001; end
for i=15:49
L(1,i)=b(i-14); end
for i=1:5
x=womanpeople(:,i)./k(:,i); volume(i)=sum(x);
%n=input('要显示第n年的人口分布数据,请输入n: ');
j=0:90;
plot(j,x);xlabel('年份');ylabel('单位:万人');hold on; end
for n=6:20 %for i=1:n-1 x0=L*x0; %end
x=x0./k(:,n);
volume(n)=sum(x);
37
r=0:150;
b =[7.19122541934300 -0.01081364309538 0.00087941719927]; u=1./(1+exp(b(1)-b(2)*r-b(3)*r.^2));deathrate=zeros(1,150); deathrate(1)=u(1); for r=1:150 p=1; i=r; while i>0 p=(1-u(i))*p; i=i-1; end
deathrate(r+1)=p*u(r+1); end
r=0:150;
lifespan=sum(deathrate.*r);
r=0:90;
R(n)=sum(x.*r')/volume(n); W(n)=R(n)/lifespan; L1(n)=sum(x(15:64)); P(n)=(volume(n)-L1(n))/L1(n);
L3(n)=sum(x(60:91))/volume(n);L4(n)=sum(x(60:91)); L2(n)=sum(x(65:91))/volume(n);L5(n)=sum(x(65:91));
F1(n)=sum(x0(15:49)); F2(n)=sum(x0(20:29));
i=0:90;
plot(i,x);xlabel('年份');ylabel('单位:万人'); hold on; end
hold off;
figure;i=1:20;
plot(i,volume,'r');
xlabel('年份');ylabel('单位:万人');
volume,R,lifespan,W,P y=zeros(15);
figure;i=6:n;plot(i,volume(6:n),'r',i,y);hold on;
plotyy(i,L1(6:n),i,P(6:n));hold on;
legend('未来我国总人口','劳动年龄人口', '人口抚养比'); xlabel('年份');ylabel('单位:万人');
38
hold off;
figure;
i=6:20;bar(i,L3(6:n),'g'); hold on;
bar(i,L2(6:n),'r');hold on;
legend('未来中国60岁以上老年人口比重','未来中国65岁以上老年人口比重');xlabel('年份');ylabel('百分率'); hold off;
figure;
i=6:20;plot(i,F1(6:n),'c');
hold on;
plot(i,F2(6:n),'r');hold on;
legend('未来我国育龄妇女(15-49岁)人数预测','未来我国生育旺盛期育龄妇女(20-29岁)人数预测');
xlabel('年份');ylabel('单位:万人'); hold off;
39