matlab中lsqcurvefit怎么用我的数据如下,想求解一个反比例函数,怎么用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);其运行结果为:Optimi

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/25 01:29:45
matlab中lsqcurvefit怎么用我的数据如下,想求解一个反比例函数,怎么用lsqcurvefit实现啊?x=1:5;y=[10.830.750.710.68];plot(x,y)f=@(c,

matlab中lsqcurvefit怎么用我的数据如下,想求解一个反比例函数,怎么用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);其运行结果为:Optimi
matlab中lsqcurvefit怎么用
我的数据如下,想求解一个反比例函数,怎么用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.
请大神指教.

matlab中lsqcurvefit怎么用我的数据如下,想求解一个反比例函数,怎么用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);其运行结果为:Optimi
求解曲线拟合问题的一般过程是,先通过观察曲线形状大致确定函数的形式,然后对函数的参数有个大概的估计作为初值,拟合后画出曲线来看看效果,如果效果不理想,就考虑修改初值或函数的形式再试.有时候需要经过多次尝试才能得到满意的结果.
 
需要特别注意以下两点:
 
1、与拟合函数的形式有关,如果函数形式选择不当,不可能得到理想的结果.
例如,对于反比例函数,比较一般的情况应该考虑取1/(c1*x+c2)+c3.

 
2、拟合问题与初值关系很大,不是随便指定什么初值都行的通的.
例如,对于本题,初值如果选择[0.5 -0.1 1],得到的结果就不太理想;但取[1 1 1]得到的结果就比较满意.
 
代码及拟合结果如下:
x=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('原始数据','拟合数据')