数学与应用数学系200 9 ~20 10 学年第 1 学期实验报告
班级:数学081 学号: 810401141 姓名: 朱 蕾 实验时间: 10 月15 日 实验 人口增长问题 项目 实 验 目 的 所属 课程 数学建模 学习并强化用Matlab软件对曲线进行拟合,并画出图形,实现对数据进行数形结合的分析。 1..编写脚本文件,实现 用magic(6)产生一矩阵,用for循环指令求解其所有元素的和。 2、分别用2、3、4、5阶多项式来拟合0,2上一正弦函数sinx,并做出拟合曲线及sinx函数曲线1963 32.13 1964 32.34 1965 32.85 1966 33.56 1967 34.20 1968 34.83 实 验 内 容 图,了解多项式的逼近程度和有效拟合区间随多项式的阶数有何变化。 3、下面是六十年代世界人口的增长数据(单位:亿): 年份 人口 1960 29.72 1961 30.61 1962 31.51 (1)请你仔细分析数据,绘出数据散布图并选择合适的函数形式对数据进行拟合; (2) 用你的经验回归模型试计算:以1960年为基准,人口增长一倍需要多少年?世界人口何时将达到100亿? (3) 用你的模型估计2002年的世界人口数,请分析它与现在的实际人口数的差别的成因。 1. function summ s=0; a=magic(6); for k=a s=s+k; end b=s'; summ=0; for h=b summ=summ+h; end sum 2.做M文件,另存为“nihe”,程序如下: M文件:function nihe(n) x=0:0.01:2*pi; y=sin(x); p=polyfit(x,y,n); plot(x,y,'r*',x,polyval(p,x),'k-') 在命令窗口中输入: >> subplot(2,2,1) >> nihe(2) >> subplot(2,2,2) >> nihe(3) >> subplot(2,2,3) >> nihe(4) >> subplot(2,2,4) >> nihe(5) 结果如图: 实 验 过 程 及 结 果 ︵ 不 够 可 另 附 纸 ︶
3.数据散布图如下: 19681967196619651964196319621961196029303132333435 程序如下: y=[1960 1961 1962 1963 1964 1965 1966 1967 1968]; x=[29.72 30.61 31.51 32.13 32.34 32.85 33.56 34.20 34.83]; plot(x,y,'r*')
4次方拟合: 1968原来的图形196719661965人口数量1964196319621961196029<-4次方的拟合303132年份333435对应程序如下: y=[1960 1961 1962 1963 1964 1965 1966 1967 1968]; x=[29.72 30.61 31.51 32.13 32.34 32.85 33.56 34.20 34.83]; [P,S]=polyfit(x,y,4) %得到5次多项式的系数和误差 plot(x,y,'r*',x,polyval(P,x),'b-') ylabel('人口数量') xlabel('年份') gtext('<-4次方的拟合') legend('原来的图形') 5,6次方拟合:
1969原来的图形1968196719661965年份19641963196219611960195929303132人口数量333435 y=[1960 1961 1962 1963 1964 1965 1966 1967 1968]; x=[29.72 30.61 31.51 32.13 32.34 32.85 33.56 34.20 34.83]; [P,S]=polyfit(x,y,5) %得到5次多项式的系数和误差 plot(x,y,'r*',x,polyval(P,x),'b-') hold on [P,S]=polyfit(x,y,6) %得到5次多项式的系数和误差 plot(x,y,'r*',x,polyval(P,x),'r-') xlabel('人口数量') ylabel('年份') legend('原来的图形') 5次方的拟合 1969原来的图形1968196719661965年份1964196319621961196029303132人口数量333435
x=[29.72 30.61 31.51 32.13 32.34 32.85 33.56 34.20 34.83]; y=[1960 1961 1962 1963 1964 1965 1966 1967 1968]; [P,S]=polyfit(x,y,5) %得到5次多项式的系数和误差 plot(x,y,'r*',x,polyval(P,x),'b-') xlabel('人口数量') ylabel('年份') legend('原来的图形') (2):程序如下: x=[29.72 30.61 31.51 32.13 32.34 32.85 33.56 34.20 34.83]; y=[1960 1961 1962 1963 1964 1965 1966 1967 1968]; [P,S]=polyfit(x,y,5) %得到5次多项式的系数和误差 plot(x,y,'r*',x,polyval(P,x),'b-') a1=59.44;------人口数位y1=polyval(P,a1) a2=32.34;-------------1964y2=polyval(P,a2) xlabel('人口数量') ylabel('年份') legend('原来的图形') 得出的结果为:以1960年为基准,人口增长一倍需要多少年? y1 =4.481883616291161e+005-------------人口数位1960年的两倍的人口数 年的人口数 1960年的两倍时的年份 1964年时得出的年份 y2 = 1.963753047470702e+003------------人口数位是 只要把59.44改为100的程序---------;图都是一样的 x=[29.72 30.61 31.51 32.13 32.34 32.85 33.56 34.20 34.83]; y=[1960 1961 1962 1963 1964 1965 1966 1967 1968]; [P,S]=polyfit(x,y,5) %得到5次多项式的系数和误差 plot(x,y,'r*',x,polyval(P,x),'b-') a1=100;-----------------------人口数为100 y1=polyval(P,a1) a2=30.62;------------1961年的人口数 y2=polyval(P,a2) xlabel('人口数量') ylabel('年份') legend('原来的图形')-------------在这里面我把1961年的人口数带进去的结果是y2的值。人口数位100的结果是y1,不知道结果是不是这样的。(1961年
的数据差不多) 的得出的结果为: y1 =4.356915685479968e+007---------人口数为100 y2 =1.960990719248308e+003------------1961年的人口数 (3):模型估计2002年的世界人口数 把X,Y交换过来求: y1=[29.72 30.61 31.51 32.13 32.34 32.85 33.56 34.20 34.83]; x2=[1960 1961 1962 1963 1964 1965 1966 1967 1968]; [P,S]=polyfit(x2,y1,5) %得到5次多项式的系数和误差 plot(x2,y1,'r*',x2,polyval(P,x2),'b-') a2=2002;-----------------------年份是2002的 Y1=polyval(P,a2) a22=1965;---------------------年份是1965的 Y2=polyval(P,a22) xlabel('人口数量') ylabel('年份') legend('原来的图形') 结果是: Y1 =-1.096766250000000e+005------------年份是2002的但是不知道为什么会是负的 Y2 = 32.87500000000000------------------年份是1965的 实 验 总 结 教师 评语
因篇幅问题不能全部显示,请点此查看更多更全内容