将人口死亡率分为趋势项与周期项 ,用matlab如何对数据进行处理,趋势项可看为负指数分布,周期项三角函t为年份,y为年死亡率;t=[1978:2009];y=[0.02 0.018 0.0178 0.017 0.014 0.01318 0.01228 0.0114 0.0108 0.01198
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 21:50:07
将人口死亡率分为趋势项与周期项 ,用matlab如何对数据进行处理,趋势项可看为负指数分布,周期项三角函t为年份,y为年死亡率;t=[1978:2009];y=[0.02 0.018 0.0178 0.017 0.014 0.01318 0.01228 0.0114 0.0108 0.01198
将人口死亡率分为趋势项与周期项 ,用matlab如何对数据进行处理,趋势项可看为负指数分布,周期项三角函
t为年份,y为年死亡率;t=[1978:2009];
y=[0.02 0.018 0.0178 0.017 0.014 0.01318 0.01228 0.0114 0.0108 0.01198 0.01459 0.01791 0.01424 0.01002 0.01211 0.0115 0.0095 0.00883 0.00843 0.00821 0.00803 0.0076 0.00732 0.00761 0.00704 0.00734 0.00732 0.00725 0.00687 0.00625 0.00621 0.00634 0.00636 0.0066 0.0069 0.00682 0.00678 0.00686 0.00672 0.00664 0.00654 0.00667 0.0067 0.00664 0.00664 0.00649 0.00657 0.00656 0.00651 0.0065 0.00646 0.00645 0.00643 0.00641 0.0064 0.00642 0.00651 0.00681 0.00693 0.00706 0.00708];
将人口死亡率分为趋势项与周期项 ,用matlab如何对数据进行处理,趋势项可看为负指数分布,周期项三角函t为年份,y为年死亡率;t=[1978:2009];y=[0.02 0.018 0.0178 0.017 0.014 0.01318 0.01228 0.0114 0.0108 0.01198
要用非线性最小二乘拟合lsqcurvefit:
首先编写假设的函数:
function F=myfun(x,xdata)
F=x(1)*cos(x(2)*xdata)+x(3)*exp(-x(4)*xdata);
其中 x(1),x(2)...为要拟合出来参数
再进行拟合,用年份做变量不太方便,我改了一下,你可以改回来
t=0.5:0.5:30.5;
t=t';
y=[0.02 0.018 0.0178 0.017 0.014 0.01318 0.01228 0.0114 0.0108 0.01198 0.01459 0.01791 0.01424 0.01002 0.01211 0.0115 0.0095 0.00883 0.00843 0.00821 0.00803 0.0076 0.00732 0.00761 0.00704 0.00734 0.00732 0.00725 0.00687 0.00625 0.00621 0.00634 0.00636 0.0066 0.0069 0.00682 0.00678 0.00686 0.00672 0.00664 0.00654 0.00667 0.0067 0.00664 0.00664 0.00649 0.00657 0.00656 0.00651 0.0065 0.00646 0.00645 0.00643 0.00641 0.0064 0.00642 0.00651 0.00681 0.00693 0.00706 0.00708]';
x=lsqcurvefit(@myfun,[2 1 0.01 0.04],t,y) %第二项那个向量是迭代的初始值,你可以自己反复试,直到图像符合,而且算出来的x比较稳定时,即为你要的解.
y1=x(1)*cos(x(2)*t)+x(3)*exp(-x(4)*t);
plot(t,y,'or',t,y1,'b-')