matlab怎么改进?

x=[1016541030081043571058511075071093001110261127041143331158231171711185171198501211... x=[101654 103008 104357 105851 107507 109300 111026 112704 114333 115823 117171 118517 119850 121121 122389 123626 124810];
x=nonzeros(x);
t=[1982:1:1998]';
t0=t(1);x0=x(1);
fun=@(cs,td)cs(1)./(1+(cs(1)/x0-1)*exp(-cs(2)*(td-t0)));%cs(1)=xm,cs(2)=r
cs=lsqcurvefit(fun,rand(2,1),t(2:end),x(2:end),zeros(2,1));
xhat=fun(cs,[t;1999])
t1=[t;1999];
plot(t1,xhat,'*-',t,x,'+-')
title('logistic寻找中国人口增长规律')
xlabel('年份')
ylabel('人口(万)')
展开
 我来答
lhmhz
高粉答主

2021-05-23 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17030

向TA提问 私信TA
展开全部

如何改进matlab编写的模型?查看题主给出的代码,主体没有太大的问题,主要的问题是初值选取不合理,再就是受lb=zeros(2,1)的限制。处理建议:

1、初值选取一般未知的情况下,可以用随机数来替代,然后逐步调整

2、系数的上下限,在未知的情况下,可以优先考虑为空值,即 lb=[]

3、然后通过调试得到结果

更多追问追答
追问
有什么办法能让报错的这个消除吗
追答

那个不是报错的信息,是停止运行标准详细信息。这里的信息是

lsqsurvefit停止的原因是,因为相对于其初始值小于函数公差的默认值。

如果,想不显示可以这样写

cs=lsqcurvefit(.....)

clc

cs 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式