lsqnonlin with jacobian problem
이전 댓글 표시
TE=2:5:5*20;
S(1,:)=104*exp(-TE/10);
options=optimset('Algorithm','levenberg-marquardt','Display','off','Jacobian ','on','Tolfun',1e-6 );
P0=[59 30];
P=lsqnonlin(@test,P0,[],[],options,S,TE)
function [F,J]=test(P,S,TE)
Ft=P(1)*exp(-TE/P(2));
F=S-Ft;
if nargout >1
J(:,1)=exp(-TE/P(2));
J(:,2)=P(1)*TE.*exp(-TE/P(2))/(P(2)^2);
end
댓글 수: 1
Walter Roberson
2012년 7월 19일
Are you encountering an error message? If so, what message and where?
답변 (5개)
Walter Roberson
2012년 7월 19일
0 개 추천
lsqnonlin() accepts a maximum of 5 parameters. See http://www.mathworks.com/help/toolbox/optim/ug/lsqnonlin.html and http://www.mathworks.com/help/toolbox/optim/ug/brhkghv-7.html
Mus Bohr
2012년 7월 19일
0 개 추천
댓글 수: 1
Walter Roberson
2012년 7월 19일
편집: Walter Roberson
2012년 7월 19일
P=lsqnonlin(@test,P0,[],[],options,S,TE)
- @test
- P0
- []
- []
- options
- S
- TE
That is 7 parameters. lsqnonlin() does not accept anything after "options".
Mus Bohr
2012년 7월 19일
0 개 추천
댓글 수: 2
Walter Roberson
2012년 7월 19일
parameters after "options" has no defined result, and so is subject to change at any time, without notice. We repeatedly get Questions here from people who have attempted to pass extra parameters in a similar manner only to have the function fail because of it. Is there a point in relying on accidental behavior when a simple and well-documented adjustment is available? http://www.mathworks.com/help/toolbox/optim/ug/brhkghv-7.html
Mus Bohr
2012년 7월 19일
Star Strider
2012년 7월 19일
0 개 추천
Swapping S and Ft so that F = Ft - S will likely solve your problem. In the objective function you gave it, the lsqnonlin function uses the Jacobian of F in its calculation, not the Jacobian of Ft, and while they may look the same, the derivatives of F = S - Ft will be the negative of the ones you posted, while the derivatives of F = Ft - S will have the same signs as those you posted.
This is likely the reason that with the ‘Jacobian’ option ‘off’, your function converged.
카테고리
도움말 센터 및 File Exchange에서 Interpolation에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!