Maxima of a function using fminbnd
5 views (last 30 days)
Show older comments
I want to find the maximum of lambda for a function M(lambda,T), describing the radiation, for fixed values of T using the method fminbnd. Basically it is a well-known formula for radiation and I want to know if there is some obvious things that are wrong. So, I red through the help section and came up with this:
%
T1=3000; %Define parameter
T2=4000;
T3=5000;
fminbnd(@(lambda)planck(lambda,T1),0,1e-5)%Second bound is chosen arbitrary
fminbnd(@(lambda)planck(lambda,T1),0,1e-5)
fminbnd(@(lambda)planck(lambda,T1),0,1e-5)
All gives the same output..which is clearly wrong.
The function is defined by
%
function M=planck(lambda,T)
h=6.6256e-34;
c=2.9979e8;
k=1.3805e-23;
a=2*pi*h*c^2;
b=h*c/k./lambda./T;
M=-a./lambda.^5./(exp(b)-1); %I put a minus sign since I want to minimize the negative function
0 Comments
Accepted Answer
Alan Weiss
on 31 Mar 2014
The problem is you are running into some scaling issues. Try scaling your problem so that the value of lambda is between 0 and 1.
scaledplanck = @(x,lambda)planck(x*1e-5,lambda);
fminbnd(@(lambda)scaledplanck(lambda,T1),0,1)
fminbnd(@(lambda)scaledplanck(lambda,T2),0,1)
fminbnd(@(lambda)scaledplanck(lambda,T3),0,1)
Alan Weiss
MATLAB mathematical toolbox documentation
2 Comments
Alan Weiss
on 1 Apr 2014
I suspected it from the start, but I saw it by plotting the functions for various values of T, and saw that fminbnd was not giving a correct answer.
There are various stopping criteria for optimization solvers, and one is called TolX, which stops the solver when steps are too small. This tolerance applies to fminbnd, and I believe that is why fminbnd stopped too soon.
Alan Weiss
MATLAB mathematical toolbox documentation
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!