FindMaximum doesn't converge
- To: mathgroup at smc.vnet.net
- Subject: [mg112041] FindMaximum doesn't converge
- From: Yaroslav Bulatov <yaroslavvb at gmail.com>
- Date: Thu, 26 Aug 2010 06:48:46 -0400 (EDT)
The function I'm optimizing looks like one with a well defined local
maximum from ContourPlot but when I use FindMaximum, I get
FindMaximum::cvmit messages even for high WorkingPrecision and
MaxIterations, any idea why?
obj = 2/3 Log[(
E^(-(h/Sqrt[3])) + E^(h/Sqrt[3]) + E^(-(h/Sqrt[3]) - Sqrt[2] j) +
E^(-Sqrt[3] h + Sqrt[2] j))/(
2 E^(-(h/Sqrt[3])) + 2 E^(h/Sqrt[3]) +
E^(-(h/Sqrt[3]) - Sqrt[2] j) + E^(h/Sqrt[3] - Sqrt[2] j) +
E^(-Sqrt[3] h + Sqrt[2] j) + E^(Sqrt[3] h + Sqrt[2] j))] +
1/3 Log[(
2 E^(-(h/Sqrt[3])) + E^(h/Sqrt[3] - Sqrt[2] j) +
E^(-Sqrt[3] h + Sqrt[2] j))/(
2 E^(-(h/Sqrt[3])) + 2 E^(h/Sqrt[3]) +
E^(-(h/Sqrt[3]) - Sqrt[2] j) + E^(h/Sqrt[3] - Sqrt[2] j) +
E^(-Sqrt[3] h + Sqrt[2] j) + E^(Sqrt[3] h + Sqrt[2] j))] +
2/3 Log[(
2 E^(h/Sqrt[3]) + E^(-(h/Sqrt[3]) - Sqrt[2] j) + E^(
Sqrt[3] h + Sqrt[2] j))/(
2 E^(-(h/Sqrt[3])) + 2 E^(h/Sqrt[3]) +
E^(-(h/Sqrt[3]) - Sqrt[2] j) + E^(h/Sqrt[3] - Sqrt[2] j) +
E^(-Sqrt[3] h + Sqrt[2] j) + E^(Sqrt[3] h + Sqrt[2] j))] +
4/3 Log[(
E^(-(h/Sqrt[3])) + E^(h/Sqrt[3]) + E^(h/Sqrt[3] - Sqrt[2] j) +
E^(Sqrt[3] h + Sqrt[2] j))/(
2 E^(-(h/Sqrt[3])) + 2 E^(h/Sqrt[3]) +
E^(-(h/Sqrt[3]) - Sqrt[2] j) + E^(h/Sqrt[3] - Sqrt[2] j) +
E^(-Sqrt[3] h + Sqrt[2] j) + E^(Sqrt[3] h + Sqrt[2] j))];
(* -1 makes more contours towards maximum *)
contourFunc[n_, p_] := Function[{min, max},
range = max - min;
Table[Exp[p (x - 1)] x range + min, {x, 0, 1, 1/n}]
];
cf = contourFunc[10, -1];
ContourPlot @@ {obj, {j, -1, 1}, {h, -1, 1}, Contours -> cf}
FindMaximum @@ {obj, {{j, 0}, {h, 0}}, Method -> "Newton",
WorkingPrecision -> 200, MaxIterations -> 200}