数学建模 人口迁移的动态分析共8页文档.doc
如有侵权,请联系网站删除,仅供学习与交流数学建模 人口迁移的动态分析【精品文档】第 6 页数学建模期末考查题 数学建模期末考查是检验我们学习情况,也是培养我们的数学建模能力,团队合作能力,也有助于我们思考能力的锻炼,所以数学建模期末题我们会认真对待,用我们所学、尽我们所能的完成它。 我们选择的题是:人口迁移的动态分析。参与成员:日期: 2010年 12月 15日摘要本文主要是计算A1、A2、A3三地区经过迁移后的人口及人口比例的变化,经过分析列出方程组,利用C程序计算出10年后、100年后三地区的人口数。由计算所得绘制出人口数量的走势图,加以数据的分析,进而对时间无限的增长各地区人口比例的稳定性进行了很好的分析。通过对该问题的数学模型建立,培养了团队合作能力,锻炼了我们的发散思维能力,增强了用数学方法解决实际问题的能力。关键词:人口迁移模型,研究性学习,VC+,递归方法问题重述在工业化的进程中,经济欠发达地区的人口会向经济发达地区迁移,形成一个稳定的朝向城市的人口流动趋势。假设有三个地区、,第一年初三个地区的总人口为1亿人,各个地区人口在总人口中的比例分别是25、35、40。地区每年有人口的1流向地区,有人口的1流向地区;地区每年有人口的1流向地区,有人口的2流向地区;地区每年有人口的3流向地区,有人口的2流向地区。 (1)假如三个地区的总人口保持不变,并且人口流动的这种趋势继续下去,问10年以后三个地区的人口各是多少?100年以后呢?时间无限增大各地区人口比例是否会稳定在某一个水平。(2)设地区的人口自然增长率5;地区的人口自然增长率为7;地区的人人口自然增长率为11。并且假定人口迁移是在每年初或年末一次完成的,问10年以后三个地区的人口各是多少?100年以后呢?时间无限增大各地区人口比例是否会稳定在某一个水平。问题分析:(1)、我们需要建立一个描述这3个地区人口流动的模型,并求出在多少年后A1、A2、A3地区的人口。问题假设1、A1、A2、A3地区是相对封闭的地区,人口的流动只发生在这3个地区。2、问题中提过3个地区的总人口不变,所以假设该3个地区的出生率等于死亡率。在问(2) 中则不是,A1、A2、A3地区的人口是增长的,没个地区的增长率不一样,而迁移的时候是在增长了人口后。3、假设人口的迁移时是一次性完成的,在每年末完成。4、每个地区的迁入、迁出的比例不变。5、符号的说明: Aij(i=1、2、3,j=1、2、3.):Ai地区在j年后的人口数。 ri (i=1、2、3):为Ai地区的自然增长率。问题的解决问题(1)我们从问题中获得的信息可以列出数学表达式如下:设x为总人口数,则: 第一年:A11=0.25*x+0.35*x*0.02+0.40*x*0.03-0.25*x*0.02 A21=0.35*x+0.25*x*0.01+0.40*x*0.02-0.35*x*0.03 A31=0.40*x+0.25*x*0.01+0.35*x*0.01-.0.40*x*0.05 第二年则在第一年的基础上迁移: A12=0.25* A11+0.35* A21*0.02+0.40* A31*0.03-0.25* A11*0.02 A22=0.35* A21+0.25* A11*0.01+0.40* A31*0.02-0.35* A21*0.03 A32=0.40* A31+0.25* A11*0.01+0.35* A21*0.01-.0.40* A31*0.05 第三年则在第二年的基础上迁移以此类推,用递归的方法可求出某年的A1、A2、A3地区的人口。问题(2:):从问题中分析可知:每个地区每年增长了人口后,则迁移人口数则与问题(1)有所不同,用已知的数据和条件求A1、A2、A3地区迁移过后的人口。设A1、A2、A3地区未增长时的总人口数是x,则:第一年:A11=0.25*x*(1+0.005)+0.35*x*(1+0.007)*0.02+0.40*x*(1+0.011)*0.03-0.25*x*(1+0.005)*0.02A21=0.35*x*(1+0.007)+0.25*x*(1+0.005)*0.01+0.40*x*(1+0.011)*0.02-0.35*x*(1+0.007)*0.03A31=0.40*x*(1+0.011)+0.25*x*(1+0.005)*0.01+0.35*x*(1+0.007)*0.01-0.40*x*(1+0.011)*0.05第二年则在第一年的基础上迁移,同时也有人口的增长:A12=0.25*A11*(1+0.005)+0.35*A21*(1+0.007)*0.02+0.40*A31*(1+0.011)*0.03-0.25*A11*(1+0.005)*0.02A22=0.35*A21*(1+0.007)+0.25*A11*(1+0.005)*0.01+0.40*A31*(1+0.011)*0.02-0.35*A21*(1+0.007)*0.03A32=0.40*A31*(1+0.011)+0.25*A11*(1+0.005)*0.01+0.35*A21*(1+0.007)*0.01-0.40*A31*(1+0.011)*0.05第三年在第二年的基础上迁移,同时也有人口的增长.运用递归的方法就可求出某年的A1、A2、A3地区的人口。对于我们来说求解问题时,首先想到的是运用Microsoft Visual C+来编程:问题(1)的解: 运用C程序求出,在人口总数不变的情况下: 10年后地区人口数为:A1=36248300, A2=34517400, A3=29234400;100年后地区人口数为:A1=53847500, A2=29437900, A3=16714600;当时间无限增长时,用C+程序可求的3个地区的人口趋于稳定了,则人口比例也趋于稳定,也可作出人口时间的曲线图,可看出曲线到后面已趋于稳定。问题(2)的解: 10年后地区的人口数: A1=38497300, A2=37122300, A3=32457200; 100年后地区人口数: A1=104040000, A2=59793000, A3=35793400;当时间无限增长时,用C+程序运算可求出A1 与A2、A2与A3的人口比例趋于1.61.8之间,则可知人口比例趋于稳定。模型的结果分析1、在总人口保持不变时,随着时间的推移,各地区的人口数量会趋于一个稳定值。2、 在人口自然增长率固定时,随着时间的推移,各地区的人口数量虽然不会达到一个稳定值,会不断地上升,但最终各地区的人口比例也会趋于一个稳定水平。模型的优缺点:优点:人口迁移在有限年内找到其规律,建立模型,虽然模型求解要用到计算机帮助,但程序原理简单,求解方便。缺点:人口迁移局限在了一个很小的地方,忽略了其他地区的迁入和迁出到其他地区的情况,假定了3个地区的总人口不变和人口自然增长率不变,这是与实际不太相符的。程序清单#include<stdio.h>#include<stdlib.h>void count_p()double a,b,c;int i; int p;double A1,A2,A3;A1=2.5e7;A2=3.5e7;A3=4e7;printf("请输入需要计算的时间(以年为单位):");scanf("%d",&p);if(p<0)while(p<0)printf("输入错误!请重新输入!n");scanf("%d",&p);for(i=1;i<=p;i+)a=A1;b=A2;c=A3;A1=a+b*0.02+c*0.03-a*0.01-a*0.01;A2=b+a*0.01+c*0.02-b*0.01-b*0.02;A3=c+a*0.01+b*0.01-c*0.03-c*0.02;printf("%d年后个地区人口数统计如下:n",p);printf("A1地区人口数:%gn",A1);printf("A2地区人口数:%gn",A2);printf("A3地区人口数:%gn",A3);count_p2()double a,b,c;int i; int p;double A1,A2,A3;A1=2.5e7;A2=3.5e7;A3=4e7;printf("请输入需要计算的时间(以年为单位):");scanf("%d",&p);if(p<0)while(p<0)printf("输入错误!请重新输入!n");scanf("%d",&p);for(i=1;i<=p;i+)a=A1;b=A2;c=A3;A1=(a+A1*0.005)+(b+A2*0.007)*0.02+(c+A3*0.011)*0.03-(a+A1*0.005)*0.01-(a+A1*0.005)*0.01;A2=(b+A2*0.007)+(a+A1*0.005)*0.01+(c+A3*0.011)*0.02-(b+A2*0.007)*0.01-(b+A2*0.007)*0.02;A3=(c+A3*0.011)+(a+A1*0.005)*0.01+(b+A2*0.007)*0.01-(c+A3*0.011)*0.03-(c+A3*0.011)*0.02;printf("%d年后个地区人口数统计如下:n",p);printf("A1地区人口数:%gn",A1);printf("A2地区人口数:%gn",A2);printf("A3地区人口数:%gn",A3);main()int j;while(1)printf("ttt人口动态分析人口计算n");printf("ttt1流动趋势人口计算n");printf("ttt2考虑增长率在内的人口计算n");printf("ttt3退出程序n");printf("请输入选择:");scanf("%d",&j);if(j<0|j>3)while(j<0|j>3)printf("n");printf("输入错误!请重新输入!n");printf("请输入选择:");scanf("%d",&j);printf("n");switch(j)case 1:count_p();break; case 2:count_p2();break;case 3:system("cls");printf("nnnnnntttt谢谢使用!n");exit(0);附录:问题(1)100年内人口数目曲线:问题(2)100年内人口数目曲线:参考文献数学建模(第二版) 徐全智 杨晋浩 编著数学模型(第三版) 姜启源 谢金星 叶俊 编著