Modellierung eines Potentialbrunnens

Ich habe versucht, die Wechselwirkung zwischen einem sich bewegenden Teilchen und einem Potentialtopf in Mathematica zu simulieren . Das Teilchen sollte eine Kraft erfahren von - 1 / R 2 , wenn die Gleichung für den Potentialtopf lautet - 1 / R . Die Eingaben für die NDSolve -Funktion sind:

  x''[t] == -x[t]/((x[t] - a)^2 + (y[t] - b)^2)^(3/2), 
  y''[t] == -y[t]/((x[t] - a)^2 + (y[t] - b)^2)^(3/2),
  x[0] == -2,
  y[0] == -2,
  x'[0] == 2 ,
  y'[0] == 2,

Eine Art spiralförmige Bewegung oder Einfangen sollte passieren, wenn sich das Teilchen dem Brunnen in einem bestimmten Winkel nähert. Aber es passiert nicht in dieser einfachen Simulation. Das Partikel muss eine gewisse Zentrifugalkraft erfahren, wenn es sich in der Nähe des Bohrlochs befindet, damit seine Richtung geändert wird. Welche anderen Begriffe sollten hinzugefügt werden, um diese Kraft in der NDSolve-Funktion darzustellen? Jede Idee oder Hilfe wäre sehr willkommen.

Was ich habe ist:

Geben Sie hier die Bildbeschreibung ein

Was erwartet wird, ist:

Geben Sie hier die Bildbeschreibung einDurch die Übernahme der nachstehenden Vorschläge wurden die Bedingungen für die NDSolve nun wie folgt geändert:

soln[a_, b_, alp_, sp_] := Return[First@NDSolve[{
      x''[t] == x[t]/((x[t] - a)^2 + (y[t] - b)^2)^(3/2) - alp*x'[t], 
      y''[t] == y[t]/((x[t] - a)^2 + (y[t] - b)^2)^(3/2) - alp*y'[t],
      x[0] == -2,
      y[0] == -2,
      x'[0] == sp,
      y'[0] == sp},
     {x, y}, {t, 0, 3}]];

und Schieberegler wurden zum Einstellen hinzugefügt. Dennoch wurde keine konische Flugbahn beobachtet. Das Partikel bewegt sich aus der Draufsicht wie in einer geraden Linie.Geben Sie hier die Bildbeschreibung ein

Mit diesen Eingaben schleudern Sie das Teilchen direkt in die Divergenz. Ich würde dann erwarten, dass es aufgrund numerischer Fehler leicht über (0, 0) hinausschießt und in einer geraden Linie in die andere Richtung herauskommt. Das heißt, dass die Trajektorie angesichts der Eingaben plausibel erscheint. Wenn ich richtig liege, sollten Sie, wenn Sie die Geschwindigkeit über die Zeit aufzeichnen, einen nicht konstanten Wert erhalten, und wenn Sie das Partikel in einem leichten Winkel gestartet haben, sagen wir y'[0] = 1, sollten Sie das Verhalten erhalten Sie möchten (beachten Sie, dass die Startgeschwindigkeit möglicherweise zu hoch ist, als dass das Partikel die Schwerkraft "bemerken" könnte).
Tatsächlich ist die Position des Potentialtopfs in der Simulation einstellbar , es wurden auch verschiedene Werte der Anfangsgeschwindigkeit und Positionen des Potentialtopfs ausprobiert. Keine Spur einer Spirale war beobachtet worden.
In diesem Fall klingt das nicht nach einem physikalischen Problem, sondern eher nach einem Problem mit der jeweiligen Software. Es gibt ein Mathematica.SE, und die Leute dort könnten wahrscheinlich besser helfen.
@alarge Sein besonderes Problem in diesem Fall ist ein physikalisches, er simuliert die Newtonsche Schwerkraft und erwartet, dass sie sich spiralförmig einpendelt.
@alemi Einverstanden, es gibt ein kleines Missverständnis darüber, wie die Umlaufbahn in der gestellten Frage aussehen sollte, aber das Hauptproblem scheint hier zu sein, dass die Software die Gleichungen nicht löst: Die Flugbahn wird nicht abgelenkt (erwartet eine Hyperbel, B. ein Kegelschnitt, ist sinnvoll, tritt aber offenbar trotz variierender Anfangsbedingungen nicht auf).
Könnten Sie der Frage Ihre Version von Mathematica hinzufügen? Es ist plausibel, dass ältere einige der Funktionen nicht haben, die erforderlich sind, um die Dinge auf die gleiche Weise zu tun (beachten Sie auch, dass Ihr Drag-Begriff, wenn Sie es wollen, nicht die gleiche Form hat, wie in einigen der Posts unten vorgeschlagen) .
Sie zeigen immer noch direkt auf den Ursprung Ihrer Anfangsgeschwindigkeit. Siehe das Update in meiner Antwort.
@alemi Das Potential scheint nicht bei (0, 0) zentriert zu sein, daher ist die Richtung der Anfangsgeschwindigkeit kein Problem.
@ user16069 Siehe meine aktualisierte Antwort. Ich denke, das Problem ist, dass die Kraft in Ihren Bewegungsgleichungen immer auf (0,0) zeigt, nicht auf (a,b).

Antworten (2)

AKTUALISIERT: Siehe unten.

Ihre NDSolve-Eingaben scheinen das zu tun, was ich für eine Masse um ein Gravitationszentrum erwarten würde. Verwendung:

a = 0;
b = 0;
traj = Table[
   s = NDSolve[{x''[t] == -x[t]/((x[t] - a)^2 + (y[t] - b)^2)^(3/2), 
      y''[t] == -y[t]/((x[t] - a)^2 + (y[t] - b)^2)^(3/2), x[0] == 1, 
      y[0] == 0, x'[0] == 0, y'[0] == v}, {x, y}, {t, -20, 20}];
   {x[t], y[t]} /. s,
   {v, 0.1, 2.1, 0.2}];
ParametricPlot[traj, {t, -20, 20}, PlotRange -> {{-3, 2}, {-4, 4}}]

wo das Gravitationszentrum bei 0,0 und die Masse bei (x,y)=(1,0) bei t=0 ist, erhalte ich eine Reihe von begrenzten und (wahrscheinlich) unbegrenzten Umlaufbahnen unterschiedlicher Größe über einen Anfangsbereich Geschwindigkeiten:

Geben Sie hier die Bildbeschreibung ein

Wie @alemi feststellte, wird es keine Spirale geben, es sei denn, Sie fügen einen Dämpfungsbegriff ein. Die Umlaufbahnen für diese Art von Potenzial sind entweder ungebunden (Einflug, dann Ausflug) oder geschlossene Schleifen.

UPDATE: Die Kraft in den geschriebenen Bewegungsgleichungen ist immer radial von (x,y)=(0,0). Die Kraft sollte in Richtung (a,b)-(x,y) wirken. Die richtigen Bewegungsgleichungen lauten:

{x''[t] == (a - x[t])/((x[t] - a)^2 + (b - y[t])^2)^(3/2) - alp*x'[t],
  y''[t] == (b - y[t])/((x[t] - a)^2 + (y[t] - b)^2)^(3/2) - 
   alp*y'[t], x[0] == -2, y[0] == -2, x'[0] == sp, y'[0] == sp}

Beachten Sie die Verschiebung um 'a' und 'b' in den Zählern , nicht nur die Entfernungsberechnung im Nenner. Die Gleichungen funktionierten in meinem Test, weil ich den Potentialtopf bei (0,0) platzierte und die Masse von der Achse wegbewegte.

Sie können die (wahrscheinlich) entfernen. E = 1 / R + 1 2 v 2 , also in deinem Fall v = 2 ist der Wendepunkt.

Wenn Ihr Potenzial ist 1 / R , simulieren Sie effektiv die Schwerkraft. Wenn es Ihnen eine bessere Intuition gibt, stellen Sie es sich als die Erde um die Sonne vor.

Solange Ihr numerischer Löser gute Arbeit leistet, sollten Sie nicht erwarten, dass sich die Kugel spiralförmig hineindreht, die richtige Lösung wäre ein Kegelschnitt, dh sie würde den Ursprung auf einer Ellipsenbahn umkreisen, wenn die Anfangsbedingungen gleich a sind gebundene Energie oder hyperbolisch, wenn die Anfangsbedingungen einer ungebundenen Energie entsprechen. Die von Ihnen geposteten Skizzen deuten darauf hin, dass Sie sich im ungebundenen Fall befinden. Um also Umlaufbahnen zu sehen, müssen Sie die Größe Ihrer Anfangsgeschwindigkeiten verringern.

Dies gilt natürlich nur, solange Sie einen symplektischen Integrator verwenden (einen, der Energie spart, den Mathematica meiner Meinung nach standardmäßig verwendet). Ein schwacher Integrator wie ein einfacher Euler hätte die Kugelspirale drin, aber das ist nur ein Effekt der schlechten Integration.

Wenn Sie wirklich wollen, dass es spiralförmig eindringt, müssen Sie eine Art viskosen Dämpfungsterm hinzufügen

F = a v

oder so etwas wie Luftwiderstand, eine Kraft der Form

F = a v 2 v ^ = a | v | v

Außerdem ist nach dem Update klar, dass Sie immer noch mit zu hoher Geschwindigkeit fast direkt auf den Ursprung schießen. Es ist, als würden Sie Gravitationsstreuung modellieren, nicht Umlaufbahnen. Sie variieren Ihre Anfangsgeschwindigkeit , nicht Ihre Anfangsgeschwindigkeit . Um ganz allgemein zu sein, warum setzen Sie nicht

x'[0] == v0 Cos[th]
y'[0] == v0 Sin[th]

Spielen Sie separat mit den Schiebereglern v0und herum th, um ein Gefühl dafür zu bekommen, was vor sich geht. Hier thsteuert die Variable die Anfangsrichtung Ihrer Anfangsgeschwindigkeit und v0die Anfangsgeschwindigkeit.

Was den Wert der Anfangsgeschwindigkeit betrifft, können Sie die Anfangsenergie berücksichtigen, um ein Gefühl für die entsprechende Größe zu bekommen. Bei T = 0 , du hast

E = 1 2 v 2 1 R
Wenn diese Energie positiv ist und die Dämpfung außer Acht gelassen wird, ist das Teilchen ungebunden und sollte einfach ins Unendliche schießen. Versuchen Sie, die Anfangseinstellungen zu verwenden, die Jason A in seiner Antwort verwendet hat. Setzen Sie den Mittelpunkt des Potentials auf Null, lassen Sie das Teilchen bei beginnen X ( 0 ) = 1 , j ( 0 ) = 0 und einstellen X ˙ ( 0 ) = 0 , j ˙ ( 0 ) = v , Wo v ist nahe 1 oder so.