2013-03-07 3 views
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", "비용 디 코비."}]

나는 유사한 게시물을 보았다하지만 더 복잡한 기능을 가진 그래서 내가 코드를 수정하는 방법을 이해 할 수 없습니다 https://mathematica.stackexchange.com/questions/5575/how-to-find-all-the-local-minima-maxima-in-a-range .

나를 도와 줄 수있는 사람이 있습니까? 감사.

답변

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]] 
] 
+0

그래서 문제는 3D 기능입니다. 왜냐하면 나는이 경우에 어떻게 사용이 최대화되는지 이해할 수 없기 때문이다. – federico