- 积分
- 0
- 注册时间
- 2006-4-25
- 仿真币
-
- 最后登录
- 1970-1-1
|
解一个关于非线性最小二乘的问题,函数是一个积分式:
function F=linestrength(k,linenumber)
for i=1:4
switch linenumber(i)
case 1
E=38.4481;
refS=1.313E-23;
case 2
E=57.6704;
refS=1.476E-23;
case 3
E=80.7354;
refS=1.565E-23;
case 4
E=107.6424;
refS=1.582E-23;
otherwise
E=0;
refS=0;
end
str1=['',num2str(refS),'*(0.27758+0.3629*296-7.4669E-6*296*296+1.4896E-8*296*296*296)./(9.0723+0.33263.*(',num2str(k(1)),'+',num2str(k(2)),'.*x)+1.1806E-5.*(',num2str(k(1)),'+',num2str(k(2)),'.*x).*(',num2str(k(1)),'+',num2str(k(2)),'.*x)+2.7035E-8.*(',num2str(k(1)),'+',num2str(k(2)),'.*x).*(',num2str(k(1)),'+',num2str(k(2)),'.*x).*(',num2str(k(1)),'+',num2str(k(2)),'.*x)).*exp(6.62618E-27.*29979245800.*',num2str(E),'./1.38066E-16.*(1./296-1./(',num2str(k(1)),'+',num2str(k(2)),'.*x))).*7.34E+21./(',num2str(k(1)),'+',num2str(k(2)),'.*x).*((',num2str(k(1)),'+',num2str(k(2)),'.*x)<1500&(',num2str(k(1)),'+',num2str(k(2)),'.*x)>500)+',num2str(refS),'*(0.27758+0.3629*296-7.4669E-6*296*296+1.4896E-8*296*296*296)./(0.27758+0.3629.*(',num2str(k(1)),'+',num2str(k(2)),'.*x)-7.4669E-6.*(',num2str(k(1)),'+',num2str(k(2)),'.*x).*(',num2str(k(1)),'+',num2str(k(2)),'.*x)+1.4896E-8.*(',num2str(k(1)),'+',num2str(k(2)),'.*x).*(',num2str(k(1)),'+',num2str(k(2)),'.*x).*(',num2str(k(1)),'+',num2str(k(2)),'.*x)).*exp(6.62618E-27.*29979245800.*',num2str(E),'./1.38066E-16.*(1./296-1./(',num2str(k(1)),'+',num2str(k(2)),'.*x))).*7.34E+21./(',num2str(k(1)),'+',num2str(k(2)),'.*x).*((',num2str(k(1)),'+',num2str(k(2)),'.*x)<=500&(',num2str(k(1)),'+',num2str(k(2)),'.*x)>70)'];
f=inline(str1,'x');
F(i)=quadl(f,0,55)*1000;
end (不好意思,str1过多了,写的很乱,不过这个应该没有错误)
然后利用lsqnonlin拟合
[x,resnorm] = lsqnonlin(@parameter1,x0)
可是无论初始值怎么改,得到的x和x0都是一样的,结果总是:
Optimization terminated: first-order optimality less than OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.
修改了TolFun也不行,这是什么原因呢?
[ 本帖最后由 phoenixkyo 于 2007-4-22 21:15 编辑 ] |
|