まず、これは (ContourPlot から) かなり単純な最大化問題のように見えますが、なぜニュートン法で FindMaximum に問題があるのでしょうか?
第二に、どうすれば警告を取り除くことができますか?
第 3 に、これらの警告を取り除くことができない場合、警告が意味のあるものかどうか (つまり、最大化に失敗したかどうか) をどのように判断できますか?
たとえば、次のコードでは、FindMaximum と Newton のメソッドで警告が表示されますが、PrincipalAxis メソッドでは警告が表示されません。
o = 1/5 Log[E^(-(h/Sqrt[3]))/(
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))] +
3/10 Log[E^(h/Sqrt[3])/(
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/5 Log[E^(-(h/Sqrt[3]) - 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/10 Log[E^(h/Sqrt[3] - 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/10 Log[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/10 Log[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 は最大に向かってより多くの等高線を作成します *)
輪郭関数[n_、p_] :=関数[{最小、最大}、
範囲 = 最大 - 最小;
Table[Exp[p (x - 1)] x 範囲 + 最小, {x, 0, 1, 1/n}]
];
cf = 輪郭関数[10, -1];
ContourPlot @@ {o, {j, -1, 1}, {h, -1, 1}, 等高線 -> cf}
FindMaximum @@ {o, {{j, 0}, {h, 0}}, メソッド -> "ニュートン"}
FindMaximum @@ {o, {{j, 0}, {h, 0}}, メソッド -> "PrincipalAxis"}
注、おそらく勾配がコンポーネントの1つの方向で0であることが問題であると考えましたが、最初の点を摂動させても同じ警告が表示されます。例を次に示します
o = 1/5 Log[E^(-(h/Sqrt[3]))/(
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/5 Log[E^(h/Sqrt[3])/(
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/10 Log[E^(-(h/Sqrt[3]) - 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))] +
3/10 Log[E^(h/Sqrt[3] - 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/10 Log[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/10 Log[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))];
ContourPlot @@ {o, {j, -1, 1}, {h, -1, 1}}
FindMaximum @@ {o, {{j, -0.008983550852535105`}, {h,
0.06931364191023386`}}、メソッド -> "ニュートン"}