matlab中lsqcurvefit怎么用

我的数据如下,想求解一个反比例函数,怎么用lsqcurvefit实现啊?x=1:5;y=[10.830.750.710.68];plot(x,y)f=@(c,x)1./(... 我的数据如下,想求解一个反比例函数,怎么用lsqcurvefit实现啊? x=1:5; y=[1 0.83 0.75 0.71 0.68]; plot(x,y) f=@(c,x)1./(c(1)*x+c(2)); c0=[0.5 -0.1]; [c,resnorm]=lsqcurvefit(f,c0,x,y); 其运行结果为: Optimization terminated: relative function value changing by less than OPTIONS.TolFun. 请大神指教。。。 展开
 我来答
赵哲郎晓兰
2019-11-04 · TA获得超过3971个赞
知道大有可为答主
回答量:3110
采纳率:31%
帮助的人:219万
展开全部

求解曲线拟合问题的一般过程是,先通过观察曲线形状大致确定函数的形式,然后对函数的参数有个大概的估计作为初值,拟合后画出曲线来看看效果,如果效果不理想,就考虑修改初值或函数的形式再试。有时候需要经过多次尝试才能得到满意的结果。
 
需要特别注意以下两点:
 
1、与拟合函数的形式有关,如果函数形式选择不当,不可能得到理想的结果。
例如,对于反比例函数,比较一般的情况应该考虑取1/(c1*x+c2)+c3。
 
2、拟合问题与初值关系很大,不是随便指定什么初值都行的通的。
例如,对于本题,初值如果选择[0.5
-0.1
1],得到的结果就不太理想;但取[1
1
1]得到的结果就比较满意。
 
代码及拟合结果如下:
1234567x=1:5;y=[1 0.83 0.75 0.71 0.68];f=@(c,x)1./(c(1)*x+c(2))+c(3);c0=[1 1 1];[c,resnorm]=lsqcurvefit(f,c0,x,y);plot(x,y,'.-',x,f(c,x),'r:x')legend('原始数据','拟合数据')

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式