您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 电子商务 > 《数学建模》实验指导书_02_matlab编程
《数学建模》实验指导书第1页mailto:webmaster@cocoon.org.cn黄可坤2008年春《数学建模》实验指导书(3+1)实验二:matlab编程学时:2学时实验目的:熟悉matlab编程,掌握用matlab进行函数定义和调用,掌握用matlab进行最小二乘拟合函数的方法。实验内容:1.f(x)的定义如下:2()6fxxx写一个函数文件f(x)实现该函数,要求参数x可以是向量,并计算x=1,2,3,..10的函数值。函数如下定义:function返回值=函数名(自变量名)文件名.m必须和函数名一样,如果不一样,函数以文件名为主。因此在matlab中定义如上函数过程为:新建一个m文件,写上如下程序:functiony=f(x)y=x.^2+x-6;然后保存该m文件,(注意,文件名.m必须和函数名一样,如果不一样,函数以文件名为主。)定义完一个函数,不需要直接运行该m文件,函数主要的作用是用来调用的,可以在命令窗口,或者其他m文件中调用。我们再另外新建一个m文件计算x=1,2,3,..10时候的函数值:clcx=1:10;y=f(x);2.根据美国人口从1790年到1980年间的人口数据(如下表),确定人口指数增长模型(Logistic模型)中的待定参数,估计出美国2010年的人口,同时画出拟合效果的图形。美国人口统计数据年份1790180018101820183018401850人口(×106)3.95.37.29.612.917.123.2年份1860187018801890190019101920人口(×106)31.438.650.262.976.092.0106.5年份1930194019501960197019801990人口(×106)123.2131.7150.7179.3204.0226.5251.4《数学建模》实验指导书第2页mailto:webmaster@cocoon.org.cn黄可坤2008年春人口模型:指数增长模型:rtextx0)(可用最小二乘拟合函数:x=lsqcurvefit(fun,x0,xdata,ydata)先定义指数增长模型函数:rtextx0)(,程序如下:functionf=curvefit_fun(a,t)f=exp(a(1)*t+a(2));函数名字不一定叫curvefit_fun,可以随便起,随便你喜欢,调用的时候需要跟文件名一致。定义该指数函数后,再新建一个m文件运行一下程序:clc;%清屏幕clear;%清除内存变量%定义向量(数组)x=1790:10:1990;y=[3.95.37.29.612.917.123.231.438.650.262.976...92106.5123.2131.7150.7179.3204226.5251.4];plot(x,y,'*',x,y);%画点,并且画一直线把各点连起来a0=[0.001,1];%初值%最重要的函数,第1个参数是函数名(一个同名的m文件定义),第2个参数是初值,第3、4个参数是已知数据点a=lsqcurvefit('curvefit_fun',a0,x,y);disp(['a='num2str(a)]);%显示结果%画图检验结果xi=1790:5:2020;yi=curvefit_fun(a,xi);holdon;%在当前图形窗口再加图形plot(xi,yi);%预测2010年的数据x1=2010;y1=curvefit_fun(a,x1)holdoff《数学建模》实验指导书第3页mailto:webmaster@cocoon.org.cn黄可坤2008年春对于Logistic模型:011mrtmxxtxex,需要估计3个参数mx,0x和r,我们可以根据已有数据x(1790)=3.9,把函数简单化为:(1790)113.9mrtmxxtxe,这样只需要估计两个参数。程序跟指数模型一样,先定义以上阻滞模型函数:functionf=curvefit_fun2(a,t)f=a(1)./(1+(a(1)/3.9-1)*exp(-a(2)*(t-1790)));再新建一个m文件,编程都一样,只是里面函数调用名字不一样而已。
本文标题:《数学建模》实验指导书_02_matlab编程
链接地址:https://www.777doc.com/doc-2838669 .html