まず、これは (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`}}、メソッド -> "ニュートン"}