MATLAB: Maxima of a function using fminbnd

fminbndfunctionoptimization

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

Best Answer

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