数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 3283|回复: 1

MATLAB的程序求助

[复制链接]
发表于 2016-4-29 23:12 | 显示全部楼层 |阅读模式
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表示的初始值是从哪来的?  谢谢大家帮忙!
发表于 2017-8-17 20:02 | 显示全部楼层
初始值可以任意,不过选取尽量贴近你自己x的估计值,偏离较大只会让机器跑的时间更长
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2024-5-7 07:30 , Processed in 0.059571 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表