大家好,我试着找到一个函数的所有最大值并绘制最大值所在的点。
功能是:
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功能但我也很满意,如果有人给我一个代码来找到所有 maxima与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.di Jacobi”}]
我看到了类似的帖子,但功能更复杂,所以我无法理解如何修改代码:https://mathematica.stackexchange.com/questions/5575/how-to-find-all-the-local-minima-maxima-in-a-range。
有人可以帮助我吗?感谢。
答案 0 :(得分:0)
我终于用最大化解决了2d问题。看看我是如何解决这个问题的!
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]]
]