1

みなさん、こんにちは。関数のすべての最大値を見つけて、最大値がどこにあるかをプロットしようとしています。

機能は次のとおりです。

U[x_,y_,a_]:=-((1-a)/Sqrt[(x-a)^2+y^2])-a/Sqrt[(x+1-a)^2+y^2]- 0.5*(x^2+y^2);

もちろんこれは3D関数ですが、関数の2Dバージョンですべての最大値を見つけるためのコードを誰かが私にくれても満足しました。関数のグラフを載せました。

points1=Table[{x, 2*U[x, 0, a]}, {x, -1.5, 1.5,0.005}];

ListPlot[points1, Joined->True,PlotRange->{{-1.5,1.5},{-5.5,-3.0}},

AxesLabel-> {"x"、"cost。diJacobi"}]

私は同様の投稿を見ましたが、より複雑な関数を使用しているため、コードを変更する方法を理解できません:https ://mathematica.stackexchange.com/questions/5575/how-to-find-all-the-local-minima- maxima-in-a-range

誰かが私を助けることができますか?ありがとう。

4

1 に答える 1

0

私は最終的に最大化で2次元の問題を解決します。私が問題を解決する方法を見てください!

a=0.23;
J=-3.5;
U[x_,y_,a_]:=-((1-a)/Sqrt[(x-a)^2+y^2])-a/Sqrt[(x+1-a)^2+y^2]- 0.5*(x^2+y^2);

f[x_] := U[x, 0, a];
g[x_] := J;

{max1,val1} = Maximize[{U[x,0,a], x < a-1}, x];

{max2,val2} = Maximize[{U[x,0,a], a-1 < x < a}, x];

{max3,val3} = Maximize[{U[x,0,a], x > a}, x];

sol = x /. NSolve[g[x] == f[x] && -1.5 < x < 1.5, x];

Show[
    Plot[{f[x], g[x]}, {x, -1.5, 1.5},AxesLabel->{"x","cost. di Jacobi J(x,a)"},
        Epilog -> { 
            {Red, PointSize[0.025], 
            Point[{x /. val1, max1}], 
            Point[{x /. val2, max2}],
            Point[{x /. val3, max3}],
            Text["\!\(\*SubscriptBox[\(L\), \(1\)]\)",{x /. val1, max1-0.4}],
            Text["\!\(\*SubscriptBox[\(L\), \(2\)]\)",{x /. val2, max2-0.4}],
            Text["\!\(\*SubscriptBox[\(L\), \(3\)]\)",{x /. val3, max3-0.4}]},
            {Black, PointSize[0.025], 
            Point[{a, -6.0}],
            Point[{a-1, -6.0}],
            Text["Cost. di Jacobi \!\(\*SubscriptBox[\(J\), \(0\)]\)",{1.0, J-0.2}]}
                }
        ],
    ListPlot[{#, g[#]} & /@ sol, PlotStyle -> PointSize[Large]]
]
于 2013-03-08T03:11:41.220 に答える