nlinfit matlab函数,求解

x=[0.560.570.580.590.600.610.620.630.64];y=[0.0700.1020.1370.1890.2470.4150.6750.9861... x=[0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63 0.64];
y=[0.070 0.102 0.137 0.189 0.247 0.415 0.675 0.986 1.532];
myfunc=inline('beta(1)*(1-x*beta(2)).^(-beta(3))','beta','x');
beta=nlinfit(x,y,myfunc,[0 0 0]);
a=beta(1),k1=beta(2),k2=beta(3)
yy=a*(1-x*k1).^k2;
plot(x,y,'o',x,yy,'r')
展开
 我来答
匿名用户
2014-04-22
展开全部

1、你的程序让人很难理解的是,前面的拟合函数与拟合后用于计算的函数不一样——指数相差一个负号。其实比较好的习惯是,计算时也直接用拟合函数,而不是另外再写表达式。

 

2、初值选择不好。拟合问题很多情况下都与初值有关,应该慎重选择。

 

改后的代码如下,供参考:

x=[0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63 0.64];
y=[0.070 0.102 0.137 0.189 0.247 0.415 0.675 0.986 1.532];
myfunc=inline('beta(1)*(1-x*beta(2)).^(-beta(3))','beta','x'); 
beta=nlinfit(x,y,myfunc,[1 1 2]); 
a=beta(1),k1=beta(2),k2=beta(3)
yy=myfunc(beta,x);
plot(x,y,'o',x,yy,'r')

 

从结果看,拟合效果还不错(有警告信息,可忽略)。

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式