angry FindMinimum
- To: mathgroup at smc.vnet.net
- Subject: [mg57548] angry FindMinimum
- From: "Pascal" <Pascal.Plaza at ens.fr>
- Date: Wed, 1 Jun 2005 06:01:32 -0400 (EDT)
- Complaints-to: groups-abuse@google.com
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
I have difficulties finding the local minimum of a function with
FindMinimum.
To start with, there is a data matrix U that can be simulated for the
example like this:
T0 = {Table[Exp[-n/0.5], {n,0,6}], Table[Exp[-n/4], {n,0,6}]};
B0 = Table[Random[], {i,1,5}, {j,1,2}];
U = B0.T0;
The function is defined as follows:
h[t1_, t2_] := (
T = {Table[Exp[-n/t1], {n,0,6}], Table[Exp[-n/t2], {n,0,6}]};
invT = PseudoInverse[T];
B = U.invT;
residue = U - B.T;
Norm[Flatten[residue]]
)
It finds matrix B which minimizes the least-squares difference between
B.T and data matrix U, for given t1 and t2. It returns the 2-norm of
the difference matrix. The game is to find the best t1 and t2.
ContourPlot[h[x, y], {x,0.2,0.8}, {y,3,6}] nicely shows a minimum with
t1=0.5 and t2=4, as expected.
This is when I failed using FindMinimum, even with only one variable.
FindMinimum[h[x,4], {x, 0.4, 0.2, 0.8}] returns:
"The line search decreased the step size to within tolerance specified
by AccuracyGoal and PrecisionGoal but was unable to find a sufficient
decrease in the function. You may need more than MachinePrecision
digits of working precision to meet these tolerances."
Thanks for any help.