MATLAB人口数量预测
matlab曲线拟合人口增长模型及其数量预测

实验目的[1] 学习由实际问题去建立数学模型的全过程;[2] 训练综合应用数学模型、微分方程、函数拟合和预测的知识分析和解决实际问题; [3] 应用matlab 软件求解微分方程、作图、函数拟合等功能,设计matlab 程序来求解其中的数学模型;[4] 提高论文写作、文字处理、排版等方面的能力;通过完成该实验,学习和实践由简单到复杂,逐步求精的建模思想,学习如何建立反映人口增长规律的数学模型,学习在求解最小二乘拟合问题不收敛时,如何调整初值,变换函数和数据使优化迭代过程收敛。
应用实验(或综合实验)一、实验内容从1790—1980年间美国每隔10年的人口记录如表综2.1所示:表综2.1年 份 1790 1800 1810 1820 1830 1840 1850 人口(×106)3.9 5.3 7.2 9.6 12.9 17.1 23.2 年 份 1860 1870 1880 1890 1900 1910 1920 人口(×106)31.4 38.6 50.2 62.9 76.0 92.0 106.5 年 份 193019401950196019701980人口(×106)123.2 131.7 150.7 179.3 204.0 226.5用以上数据检验马尔萨斯(Malthus)人口指数增长模型,根据检验结果进一步讨论马尔萨斯人口模型的改进,并利用至少两种模型来预测美国2010年的人口数量。
二、问题分析1:Malthus 模型的基本假设是:人口的增长率为常数,记为 r 。
记时刻t 的人口为x (t ),(即x (t )为模型的状态变量)且初始时刻的人口为x 0,于是得到如下微分方程:⎪⎩⎪⎨⎧==0)0(d d x x rxtx2:阻滞增长模型(或Logistic 模型) 由于资源、环境等因素对人口增长的阻滞作用,人口增长到一定数量后,增长率会下降,假设人口的增长率为x 的减函数,如设r(x)=r(1-x/x m ),其中r 为固有增长率(x 很小时),x m 为人口容量(资源、环境能容纳的最大数量),于是得到如下微分方程:⎪⎩⎪⎨⎧=-=0)0()1(d d xx x x rx t xm三、数学模型的建立与求解根据Malthus 模型的基本假设,和Logistic 模型,我们可以分别求得微分方程的解析解,y1=x0*exp(r*x);y2= xm/(1+x0*exp(-r*x))对于1790—1980年间美国每隔10年的人口记录,分别用matlab 工具箱中非线性拟合函数的命令作一般的最小二乘曲线拟合,可利用已有程序lsqcurvefit 进行拟合,检验结果进一步讨论模型的改进,预测美国2010年的人口数量。
使用MATLAB进行数据预测和预测

使用MATLAB进行数据预测和预测引言:数据预测和预测在许多领域中都具有重要的应用价值。
它们可以帮助我们预测未来的发展趋势,做出合理的决策,并在经营和决策中提供有力的支持。
在这一过程中,MATLAB作为一种功能强大的编程语言和数据分析工具,为我们提供了一个强大的工具箱,可以进行数据预测和预测。
数据预处理:在开始数据预测和预测之前,我们首先需要对数据进行预处理。
预处理包括数据清洗、数据归一化、特征选择等步骤。
通过这些步骤,我们可以提高数据的质量,减少噪声的影响,并使数据更适合于预测模型的建立。
数据清洗是指删除或修复数据中的错误值、缺失值和异常值。
在MATLAB中,我们可以使用一些函数和工具箱来处理这些问题。
例如,我们可以使用`isnan`函数来检测缺失值,并使用`fillmissing`函数来填充缺失值。
对于异常值,我们可以使用一些统计方法,如3σ原则或箱线图来识别和处理。
数据归一化是将不同尺度的数据映射到统一的尺度上。
这是因为不同尺度的数据可能对预测模型的训练和预测产生不利影响。
在MATLAB中,有许多方法可以实现数据归一化,如MinMax归一化、Z-score归一化等。
我们可以使用`mapminmax`函数来实现MinMax归一化,并使用`zscore`函数来实现Z-score归一化。
特征选择是从原始数据中选择最相关的特征,以降低数据维度并提高预测模型的准确性。
在MATLAB中,我们可以使用一些算法和函数来实现特征选择。
例如,我们可以使用`fsrnca`函数(基于相关系数的特征选择)或`sequentialfs`函数(基于逐步搜索的特征选择)来选择最佳特征子集。
在完成数据预处理后,我们可以使用各种算法和方法进行数据预测。
在MATLAB中,有许多经典的预测算法和函数可供选择。
以下是几个常用的预测方法。
1. 线性回归:线性回归是一种基本的预测方法,它使用线性模型来建立输入变量和输出变量之间的关系。
在matlab帮助中——人口预测

Predicting the US PopulationThis example is older than MATLAB®. It started as an exercise in "Computer Methods for Mathematical Computations", by Forsythe, Malcolm and Moler, published by Prentice-Hall in 1977.Now, MATLAB and Handle Graphics® make it much easier to vary the parameters and see the results, but the underlying mathematical principles are unchanged. It shows that using polynomials of even modest degree to predict the future by extrapolating data is a risky business.Here is the US Census data from 1900 to 2000.% Time intervalt = (1900:10:2000)';% Populationp = [75.995 91.972 105.711 123.203 131.669 ...150.697 179.323 203.212 226.505 249.633 281.422]';% Plotplot(t,p,'bo');axis([1900 2020 0 400]);title('Population of the U.S. 1900-2000');ylabel('Millions');What is your guess for the population in the year 2010?pp =75.995091.9720105.7110123.2030131.6690150.6970179.3230203.2120226.5050249.6330281.4220Let's fit the data with a polynomial in t and use it to extrapolate to t = 2010. The coefficients in the polynomial are obtained by solving a linear system of equations involving a 11-by-11 Vandermonde matrix, whose elements are powers of scaled time, A(i,j) = s(i)^(n-j);n = length(t);s = (t-1950)/50;A = zeros(n);A(:,end) = 1;for j = n-1:-1:1, A(:,j) = s .* A(:,j+1); endThe coefficients c for a polynomial of degree d that fits the data p are obtained by solving a linear system of equations involving the last d+1 columns of the Vandermonde matrix:A(:,n-d:n)*c ~= pIf d is less than 10, there are more equations than unknowns and a least squares solution is appropriate. If d is equal to 10, the equations can be solved exactly and the polynomial actually interpolates the data. In either case, the system is solved with MATLAB's backslash operator. Here are the coefficients for the cubic fit.c = A(:,n-3:n)\pc =1.262923.7261100.3659155.9043Now we evaluate the polynomial at every year from 1900 to 2010 and plot the results.v = (1900:2020)';x = (v-1950)/50;w = (2010-1950)/50;y = polyval(c,x);z = polyval(c,w);hold onplot(v,y,'k-');plot(2010,z,'ks');text(2010,z+15,num2str(z));hold offCompare the cubic fit with the quartic. Notice that the extrapolated point is very different.c = A(:,n-4:n)\p;y = polyval(c,x);z = polyval(c,w);hold onplot(v,y,'k-');plot(2010,z,'ks');text(2010,z-15,num2str(z));hold offAs the degree increases, the extrapolation becomes even more erratic.claplot(t,p,'bo'); hold on; axis([1900 2020 0 400]);colors = hsv(8); labels = {'data'};for d = 1:8[Q,R] = qr(A(:,n-d:n));R = R(1:d+1,:); Q = Q(:,1:d+1);c = R\(Q'*p); % Same as c = A(:,n-d:n)\p;y = polyval(c,x);z = polyval(c,11);plot(v,y,'color',colors(d,:));labels{end+1} = ['degree = ' int2str(d)];endlegend(labels,2)Copyright 1984-2007 The MathWorks, Inc.Published with MATLAB® 7.11MATLAB and Simulink are registered trademarks of The MathWorks, Inc. Please see /trademarks for a list of other trademarks owned by The MathWorks, Inc. Other product or brand names are trademarks or registered trademarks of their respective owners.。
全国大学生数学建模比赛论文人口预测模型

全国大学生数学建模比赛论文人口预测模型 The manuscript was revised on the evening of 2021中国人口预测模型摘要:人口数量的变化,关系到一个国家的未来。
认识人口数量的变化规律,建立人口模型,能够较准确的预报,是有效控制人口增长的前提。
本文对人口预测的数学模型进行了研究。
首先,建立人口指数模型、Logistic模型及灰度预测模型。
对我国2005年以后45年的人口增长进行了预测,根据1982年人口基本数据运用模型对1982年~2005年进行了预测,并用实际数据对预测结果进行了检验。
我们将预测区间分为2006~2030年、2030~2050年两个区间,以量化未来我国短中期与长期的人口变化。
关键词:人口数量的变化人口指数模型 Logistic模型灰度预测模型MATLAB Excel目录第一部分问题重述 (3)第二部分问题分析 (3)第三部分模型的假设 (3)第四部分定义与符号说明 (3)第五部分模型的建立与求解 (3)模型一 (3)模型二 (8)模型三 (12)第六部分对模型的评价 (14)第七部分参考文献 (15)第八部分附表 (15)一、问题重述人口问题始终是制约我国发展的关键因素之一。
本题要求根据已知数据,运用数学建模的思想对我国人口做出分析和预测。
具体问题如下:从中国的实际情况和人口增长的特点,例如我国老龄化进程加快、出生人口性别比持续升高、乡村人口城镇化等,利用参考附录中所提供的数据,建立中国人口增长的数学模型,由此对中国人口增长的中短期和长期趋势做出预测,并指出模型的优缺点。
二、 模型假设1、假设题目所给的数据真实可靠;2、假设不考虑我国人口大规模的朝国外迁移,也不考虑外国人大量涌入我国;3、假设不考虑战争、自然灾害、疾病对人口数目和性别比的影响;4、假设在本世纪中叶前,我国计划生育政策稳定。
5、假设中短期内生育率和死亡率保持相对稳定6、假设相同年龄段人口性别比基本稳定。
人口预测 matlab

数学建模第一次实验报告一.实验目的学习有关人口预测的模型,了解有关混沌的基本理论,建立人口预报模型,并完成人口总量的预报,能够用软件完成数据计算。
二.实验内容1.下表为我国自1949年至2000年的人口数据,请根据人口模型,预测出2010、2015年我国的人口总数,并根据中国统计局的全国人口普查公报的1%调查数据,计2.谈谈你所认识的混沌三. 实验步骤1. 查阅资料选择模型通过查阅资料,发现在考虑算法复杂度以及预测效果等综合因素时,阻滞增长模型(Logistic 模型)要优于其他模型,所以我们选用阻滞增长模型进行本次实验。
2. 建立模型阻滞增长模型(Logistic 模型)是考虑到自然资源、环境条件等因素对人口增长的阻滞作用,对指数增长模型的基本假设进行修改后得到的。
阻滞作用体现在对人口增长率r 的影响上,是的r 随着人口数量x 的增加而下降。
若将r 表示为x 的函数()r x ,则它应是减函数,于是有:()()0,0dxr x x x x dt== (1) 对于()r x 的一个最简单的假设是()r x 为x 的线性函数,即:()(),0,0r x r sx r s =->> (2)设自然资源和环境所能容纳的最大人口数量为m x ,当m x x =时人口不在增长,即增长率()0m r x =,代入(2)式可得mrs x =,所以有: ()(1)mrr x r x =-(3) 将(3)式代入(1)式得:()0(1)0m dxr rx dt x x x⎧=-⎪⎨⎪=⎩(4) 解(4)可得(5)式:()01(1)e mrtm x x t xx -=+- (5)3. 根据模型原理进行编程程序见第五部分。
4. 运行结果采用1949年到2000年的人口调查结果作为数据,计算得到的模型参数()r x 和m x 为:()0.0296r x =,()204.5537m x =千万人。
1949年到2000年的预测结果与人口调查结果对比图如图1所示。
人口问题数据拟合的MATLAB程序

人口问题数据拟合的MATLAB程序拟合%拟合数据人口问题x=[1949 1954 1959 1964 1969 1974 1979 1984 1989 1994];y=[5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8];% 1 线性模型%用一阶多项式b=polyfit(x,y,1)z=b(2)+b(1).*x;plot(x,y,'r*',x,z),xlabel('x')%用矩阵运算A=[ones(size(x))', x'];b=A\y'z=b(1)+b(2).*x;plot(x,y,'r*',x,z),xlabel('x')%用线性回归A=[ones(size(x))', x'];[b,c,r,j,R] =regress(y',A)% b 回归系数 c 回归系数的置信区间r 残差j 拟合数据的置信区间R 相关系数F值、p值z=b(1)+b(2).*x;z1=z+j(:,1)';z2=z+j(:,2)';plot(x,y,'r*',x,z,x,z1,x,z2),xlabel('x')e=sqrt(sum((y-z).^2)/8)zz1=z-1.96*e; zz2=z+1.96*e;plot(x,y,'r*',x,z,x,zz1,x,zz2)% 2 非线性模型y=b(2)exp(b(1)x)%转化为线性函数A=[ones(size(x))', x'];y1=log(y);[b1,r,j,R]=regress(y1',A)b=[exp(b1(1)) b1(2)]z=b(1).*exp(b(2).*x);e=sqrt(sum((y-z).^2)/8)z1=z-1.96*e; z2=z+1.96*eplot(x,y,'r*',x,z,x,z1,x,z2)%用非线性函数拟合(缺点初值不合适,就得不到解)x=[49 54 59 64 69 74 79 84 89 94];y=[5.4 6.0 6.7 7.0 8.1 9.1 9.8 10.3 11.3 11.8];fun=inline('b(1).*exp(b(2).*x)','b','x');b0=[2 0.01];[b,r,j]=nlinfit(x,y,fun,b0)z=b(1).*exp(b(2).*x);plot(x,y,'r*',x,z)nlintool(x,y,fun,b0) %拟合曲线图。
matlab曲线拟合人口增长模型及其数量预测
matlab曲线拟合人口增长模型及其数量预测随着人口数量的不断增加,人口增长的预测成为了重要的社会话题。
为了了解和预测人口的发展趋势,人们需要建立各种数学模型,以帮助他们分析人口变化的规律。
首先,我们需要了解什么是曲线拟合。
曲线拟合是一种数学方法,用于找到能够用已知数据点经过的曲线最佳地描述这些数据点的方程。
接下来,我们需要选择合适的模型,以描述人口增长。
常用的模型有线性模型、指数模型、对数模型和幂函数模型。
在这里,我们选择使用幂函数模型,其数学表达式为y=ax^b,其中y表示人口数量,x表示时间,a和b是拟合参数。
为了得到在该模型下的最佳参数值,我们需要使用matlab中的“拟合曲线工具箱”。
该工具箱提供各种函数,可用于拟合各种类型的数据,包括基于模型的数据点。
在使用该工具箱进行拟合之前,我们需要先准备好我们的数据。
我们可以使用已知的人口数量数据,以确定模型的参数,然后在没有人口数量数据的情况下进行预测。
接下来,我们使用“拟合曲线工具箱”中的“幂函数拟合”函数进行拟合。
该函数会自动计算最佳参数值,并提供了一些工具,用于优化和调整拟合曲线。
此外,对于得到的拟合曲线,我们还可以使用matlab中的“预测函数”来预测不同时间点的人口数量。
该函数将基于已知的拟合参数值,预测给定时间点的人口数量。
在得到拟合和预测结果之后,我们可以使用matlab的图表工具,将结果可视化。
这将有助于我们更好地了解数据点和拟合曲线之间的关系,以及预测结果的准确性。
总之,在制定人口增长规划时,建立数学模型是非常重要的。
使用matlab曲线拟合人口增长模型及其数量预测,可以快速、准确地得到所需的结果,帮助社会决策者制定更好的政策。
Logistic人口模型的检验与中国未来人口的预测与控制
数学建模大作业——人口模型班级:周一、周三姓名:石星宇学号:02123010学院:电子工程学院任课教师:李伟Logistic人口模型的检验与中国未来人口的预测与控制摘要本文利用已有的Logistic人口模型,对中国近年来的人口数据进行了分析。
用MATLAB数学软件对人口数据做曲线拟合,得到三次多项式如下:33269=-+⨯-⨯+⨯.y x x x0.7011 4.1738108.280910 5.475510±,可见该模型根据实际人口数和计算人口数的比较得知,最大的误差为0.5能够很好地预测人口发展趋势,由此验证了Logistic人口模型的正确性。
并用得到的三次多项式对今年年末的人口进行预测,计算结果为132850万人。
本文最后还对当前国内的人口政策做出了一定的讨论,论述了控制人口发张的一些方法及策略。
例如,提倡一对夫妇只生一个孩子、晚婚晚育等。
还对近年来提出的“单独二胎”、“双独二胎”政策做了相应的讨论。
得出结论:这些政策的实施将会导致婴儿出生率短期内显著回升,有望在5年内新增750万新生儿,在人口结构方面,政策调整将使2030年增加2200万劳动年龄人口。
关键词:Logistic人口模型曲线拟合人口预测与控制1、问题重述人口问题是当今世界上最令人关注的问题之一。
一些发展中国家的人口出生率过高,越来越严重的威胁着人类的正常生活,而有些发达国家的自然生长率趋于零,甚至变为负数,造成劳动力短缺,也是不容忽视的问题。
由于我国20世纪50~60年代人口政策方面的失误,不仅造成人口总数增长过快,而且年龄结构也不合理,使得对人口增长的严格控制会导致人口老化问题严重。
因此,在首先保证人口有限增长的前提下适当控制人口老化,把年龄结构调整到合适的水平,是一项长期而又艰巨的任务。
我们目前面对的问题有:(1)检验Logistic人口模型的正确性;(2)预测中国未来人口的发展状况;(3)评价中国现有的人口政策。
matlab综合案例 人口增长模型
综合案例 人口增长模型据人口学家们预测,到2033年 ,世界人口将突破100亿,每年增加近1亿人,以后还会迅猛增长。
人们开始考虑,我们赖以生存的地球究竟是否能承受如此的增长。
让我们建立数学模型来预测人口的增长。
我们关心任意时刻的人口总数N (t ),即t 时刻人口中生命个体的总数,而忽略他们的年龄和性别。
影响总人口数的最显著的因素是个体的出生、死亡、以及进出我们所研究区域的个体数。
为了简化问题,我们忽略迁入与迁出的人口,仅考虑时间段∆t 内人口数的变化情况。
很明显,出生和死亡人数的变化将依赖于以下因素:(1) 时间间隔∆t 的长短;(2) 时间间隔开始时的人口总数。
做最简单的假设是正比关系,即时间间隔∆t 内的出生人数= bn(t)∆t 时间间隔∆t 内的死亡人数=dn(t)∆t这里b 和d 分别是出生率和死亡率。
我们得到一个初始模型为N(t+∆t)-N(t)=(b -d)N (t) ∆t (2.35)现在可根据时间区间∆t 的两种情况进一步研究模型. 一种是确定一个有限的时间单位,比如∆t=1年,令N k = N(k)=N (k ∆t), k=1,2,3,… 这样方程(2.35)便是一个关于序列N K ,k=1,2,3, …的差分方程: N k+1= (b -d+1)N k k=1,2,3,…我们可以根据上一年的人口数推算出第二年的人口数以及逐年的人口数。
另一种是考虑很短的时间区间∆t 内的人口变化。
由于一个广阔区域的人口数量很大,可认为人口数N(t)是一个连续变量,因为当N(t)很大时,对应的曲线具有很小的跃变可视为平滑的,这样的处理即简化了模型又不会引起严重误差。
先将式(2.35)改写为tt N t t N t N ∆-∆+)()()(1=b -d令∆t →0,则有d b dtdN N -=1 (2.36)等式左端的表达式可以理解为“相对增长率”,对其作不同的假设可以建立不同的数学模型。
数据建模常规方法的Matlab实现(实例)
MATLAB(liti21)
3)运算结果为: f =0.0043 0.0051 0.0056 0.0059
0.0062 0.0062 0.0063 0.0063 x = 0.0063 -0.0034 0.2542
0.0061 0.0063
4)结论:a=0.0063, b=-0.0034, k=0.2542
的。
1. lsqcurvefit
已知数据点: xdata=(xdata1,xdata2,…,xdatan),
ydata=(ydata1,ydata2,…,ydatan) lsqcurvefit用以求含参量x(向量)的向量值函数
F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T 中的参变量x(向量),使得
6 0.28 15
-0.02
解:(1)画出散点图: x=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6; 14.4;15]; y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;0.15;-0.071;0.059;0.08;0.032;-0.015;-0.02]; plot(x,y,'r*')
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB人口数量预测
实验报告
一,实验目的:
1.、学会用matlab软件进行数据拟合;
2、了解利用最小二乘法进行数据拟合的基本思想,掌握用数据拟合法寻找最佳拟合曲线的方法;
3、了解多元函数的机制在数据拟合法中的应用;
4、通过对实际问题进行分析研究,初步掌握建立数据拟合数学模型的方法。
二.问题分析及建立模型
1.多项式拟合
对于已知数据点,如果选用拟合基函数为幂函数类1,x,x2,x3….xm,则拟合函数为一个m次多项式函数。
y=f(x)=a m*x m+a m-1*x m-1+…a1*x+a0
根据最小二乘法你和思想,问题归结为求m+1元函数
Q(a0,a1,…a m)=∑(a m*x i m a m-1*x i m-1+…+a1*x+a0)2
的最小值问题,同样的,利用多元可微函数求得极值的必要条件
得到法方程组
∂Q(a0,a1,…a m)/∂a k=0; k=0,1,2,3…m;
此时,矩阵G为一范德蒙矩阵,解此方程可以求的多项式系数a=[a m,a m-1,a0]T
2.malthus模型
假设美国的人口满足函数关系x=f(t), f(t)=e a+bt,a,b为待定常数,根据最小二乘拟合的原
理,a,b是函数∑
=-
=
n
i
i
i
x t
f
b
a
E
1
2
)
)
(
(
)
,
(的最小值点。
其中x i是t i时刻美国的人口数。
这
是第一种模型。
3.Logistic模型
上述模型可以在短时间内较好地拟合实际人口数量,但也存在问题。
即人口是呈指数规律无止境地增长,此时人口的自然增长率随人口的增长而增长,这不可能。
一般说来,当人口较少时增长得越来越快,即增长率在变大;人口增长到一定数量以后,增长就会慢下来,即增长率变小。
这是因为自然资源环境条件等因素不允许人口无限制地增长,它们对人口的增长起着阻滞作用,而且随着人口的增加,阻滞作用越来越大。
而且人口最终会饱和,趋于某一
个常数x ∞,假设人口的静增长率为r(1-x(t)/x ∞),即人口的静增长率随着人口的增长而不断减小,当t →∞时,静增长率趋于零。
按照这个假设,得到
⎪⎩
⎪
⎨⎧=-=∞00)()1(x
t x x x r dt
dx
(1) 这便是荷兰数学家Verhulst 于19世纪中叶提出的logistic 模型。
人口的变化规律为:
r
t e x x x )1790(39
10)1(1--∞∞
-+=
(2)
具体实验中应使用这种模型进行拟合。
4.为了更好地比较2000,2005,2010,2015,2020年美国人口数,需将其画入一个图中。
三.程序
(1)x=1790:10:1980;
y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,28.6,50.2,62.0,72.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5];
plot(x,y,'k.','markersize',25); axis([1790 1990 3 230]); p2=polyfit(x,y,2) p3=polyfit(x,y,3) t=1790:10:1980; s=polyval(p2,t); s1=polyval(p3,t); hold on
plot(t,s,'r-','linewidth',2) plot(t,s1,'b-','linewidth',2) grid
(2)function f=nihehanshu(x,xdata) f=exp(x(1)+x(2)*xdata);
xdata=1790:10:1980;
ydata=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,28.6,50.2,62.0,72.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5]; x0=[0,0];
[x,resnorm]=lsqcurvefit(@nihehanshu3,x0,xdata,ydata)
(3)function y=nihehanshu(x,xdata)
y=1./(4.5^(-1)+exp(-x(1)-x(2)*xdata))
xdata=1790:10:1980;
ydata=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,28.6,50.2,62.0,72.0,92.0,106.5,123.2,131.7, 150.7,179.3,204.0,226.5];
x0=[0,0];
[x,resnorm]=lsqcurvefit(@nihehanshu,x0,xdata,ydata)
(4)f=inline('1./(450^(-1)+exp(36.6468-0.0216*x))')
fplot(f,[1790,2020])
hold on
g=inline('exp( -25.5772+0.0157*x)');
fplot(g,[1790,2020])
hold on
f=inline(' -1.0806 *x+0.0006*x^2')
fplot(f,[1790,2020])
hold on
grid
四.实验结果
(1)
p2 =
1.0e+004 *
0.0000 -0.0024 2.1955
p3 =
1.0e+003 *
0.0000 -0.0000 0.0149 -2.6733
(2)x =
-25.5772 0.0157 resnorm =
1.5501e+003
(3)x =
-25.5772 0.0157 resnorm =
1.5501e+003
(4)
五.结果分析
(1)在第一问多项式拟合方法中,通过对多项式次数的改变,当多项式次数大于3时结果误差较大。
最好的多项式拟合次数应为2和3.
(2)使用malthus模型模拟方法,f= exp( -25.5772+0.0157*x)
(3)使用logistic模型模拟方法,f=1./(450^(-1)+exp(36.6468-0.0216*x))
(4)经过三个图线的比较可以得出结论:logistic模型模拟的人口数量增长比较准确。
六.实验心得
不仅要学会熟练使用软件工具,而且要善于使用软件工具,但不能迷信软件工具。
它可以大大提高你的工作效率,多数情况下,它都能给出正确的答案。
但它在处理复杂问题时,也有不足之处,因为许多算法并非是无条件的,并非适合于任何情形,有时收敛,有时奇异,有时收敛太慢。
这就要求你对结果进行检验,看是否合乎实际,是否合理。
若不合理,应找原因,针对不同情况,
想出解决问题的办法,进行实验、验证,直到结果满意为止。