Nonlinear least square minimization
2 次查看(过去 30 天)
显示 更早的评论
I want to perform a nonlinear least square minimization of the form
Minimize(Sum((Y - F (X ; a, b, c))^2))
Where Y is a vector of response variable; X is a 5 element vector of parameter and a, b and c are vectors of input data. F has the following form:
F = X(5)* Scalar1.* Scalar2.* c;
Scalar 1 is defined as follows.
if X(2)<a<X(1)
Scalar1=((a-X(2))/((X(1)-X(2));
elseif a<=X(2)
Scalar1=0;
elseif a>=X(1)
Scalar1=1;
else
end;
The Scalar2 has a similar definition
if X(4)<b<X(3)
Scalar2 = ((-1)/(X(3)-X(4))).*(b-X(4))+1;
elseif b>=X(3)
Scalar2=0;
elseif b<=X(4)
Scalar2=1;
else
end;
As you can see, I have a function F whose very definition depends on the optimized parameters.
Can someone provide me any lead about where to look for any guidance to solve a problem like this. Any specific keyword/phrase that will help me Google search relevant books, articles will be of great help.
0 个评论
采纳的回答
Steve Grikschat
2011-4-20
Your answer looks ok. lsqnonlin is a good choice. You could also look at lsqcurvefit:
which handles the the responses (Y) and fixed parameters (a,b,c - lsqcurvefit calls this X) automatically. The results would be the same (assuming you've set up lsqnonlin properly) since lsqcurvefit uses the same algorithms as lsqnonlin.
I can't be sure, but there could be problems with the non-smoothness of your function (the piecewise definition). If it works though, that's good.
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Nonlinear Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!