|
clc;   % 清屏幕 
clear; % 清除以前的变量  
% 数据点(t,y) t=1800:10:2000; 
y=[7.2 13.8 17.2 17.6 24.7 33.6 36.2 48.6 58.1 73.3 89.8 105.6 125.9 149.1 172.2 189.8 230.5 246.7 262.1 271.2 280.3]; plot(t,y,'b*');  
% 定义需要拟合的函数类型myfun(a,t),a是参数列表,t是变量  myfun = @(a,t)[a(1)./(1+(a(1)./7.2-1)*exp(a(2)*(t-1800)))];  a0=[500,1]; % 初始值  
 % 非线性拟合.最重要的函数,第1个参数是以上定义的函数名,第2个参数是初值,第3、4个参数是已知数据点 a=lsqcurvefit(myfun,a0,t,y); 
disp(['a=' num2str(a)]); % 显示得到的参数  
% 画出拟合得到的函数的图形 ti=1800:10:2010; yi=myfun(a,ti); hold on; 
plot(ti,yi,'r');  
% 给图形加上图例 xlabel('年份'); ylabel('人口数');
legend('原始数据','拟合函数',2); box on;  grid on;  
tn=2010; % 预测在未知点的函数值 yn=myfun(a,tn); 
disp(['yn=' num2str(yn)]); % 显示得到的参数
请问上面程序里的a0表示的初始值是从哪来的? 谢谢大家帮忙! |
|