Das Magnetische Pendel

Der Schmetterlingseffektes am Beispiel des Magnetpendels

Das Magnetpendel

Dieser Artikel basiert auf dem in der Zeitschrift Spektrum der Wissenschaft erschienenen Beitrag "Experimente zum Chaos" [1] aus dem Jahr 1994. Darin wurde unter anderem eine Simulation beschrieben, welche die chaotische Bewegung eines magnetischen Pendels unter dem Einfluss der Schwerkraft und dreier Magnete simuliert. Auf dieser Webseite wird eine Implementierung dieser Simulation vorgestellt und näher erläutert.

a pattern created by the magnetic pendulum simulation
Ein Muster durch die Simulation erzeugtes Muster. Drei Magnete sind an den Ecken eines gleichseitigen Dreiecks angeordnet. Die Pendelaufhängung befindet sich in der Bildmitte.

Die Simulation berechnet die Pendelbewegung durch Integration der Bewegungsgleichung des Pendelkörpers. Die Pendelbewegung wird durch Reibung, Gravitation und magnetische Anziehungskraft beeinflusst. Die Kräfte sind so aufeinander abgestimmt, dass das Pendel infolge des reibungsbedingten Energieverlustes über einem der drei Magnete zum Stillstand kommt.

Färbt man den Startpunkt der Pendelspur in der Farbe des Magneten ein, über dem das Pendel zum Stillstand kam und führt die Simulation für eine vielzahl möglicher Startpunkte auf einem Gitter durch, so erhält man ein farbiges Muster. Das Ergebnis eines Simulationsdurchganges ist im Bild links dargestellt. Es wird deutlich, das selbst kleine Variationen im Startpunkt nach kurzer Zeit zu großem Änderungen in der Pendelspur führen können. Die Simulation reagiert sehr sensibel auf kleine Variationen in den Startbedingungen. Das Ergebnis (die Farbe des Zielmagneten) wird dadurch schwer vorhersagbar.

Beobachtungen, wie diese sind nicht neu. Bereits im Jahr 1963 entdeckte Edward Lorenz ein amerikanischer Mathematiker und Meteorologe ein ähnliches Verhalten als er den Einfluss der Startbedingungen auf Wettersimulationen untersuchte. Er schrieb:

Einer Meteorologe bemerkte, dass wenn die Theorie korrekt wäre, der Flügelschlag einer Möwe ausreichen könnte um den Verlauf des Wetters für immer zu ändern. Diese Kontroverse ist noch nicht endgültig geklärt, doch neueste Forschungsergebnisse scheinen auf der Seite der Möwen zu sein. [4]

In späteren Reden wurde aus der "Möwe" ein poetisch klingenderer "Schmetterling" und der Begriff "Schmetterlingseffekt" war geboren.

Der Schmetterlingseffekt

Das hier vorgestellte Programm demonstriert den Schmetterlingseffekt. Für diejenigen, die mit dem Begriff nicht vertraut sind, empfielt sich der entsprechende Eintrag in der Wikipedia. Hier ein kurzer Auszug:

"Als Schmetterlingseffekt bezeichnet man den Effekt, dass in komplexen, dynamischen Systemen eine große Empfindlichkeit auf kleine Abweichungen in den Anfangsbedingungen besteht. Geringfügig veränderte Anfangsbedingungen können im langfristigen Verlauf zu einer völlig anderen Entwicklung führen. Die Bezeichnung Schmetterlingseffekt stammt von einer bildhaften Veranschaulichung dieses Effekts von Edward N. Lorenz am Beispiel des Wetters, in der er fragt ob der Flügelschlag eines Schmetterlings in Brasilien einen Tornado in Texas auslösen kann."

Die heutige Antwort hierauf müsste wohl ein "Unter Umständen ja" sein. Im Übrigen: Bevor jetzt Schmetterlinge gajagt werden um Stürme zu verhindern muss man sich klar machen, das der Flügelschlag den Sturm auch verhindern könnte. Es gibt Situationen in denen Wetterlagen nicht stabil sind und sich in völlig verschiedene Richtungen entwickeln können. Vergleichbar in etwa mit einer Kugel, die einen Bergrücken entlangrollt. Je nachdem ob sie ein wenig mehr auf der einen oder anderen Seite gestartet wird, wird sie letztendlich eine andere Hangseite hinab rollen. Die Endpositionen unterscheiden sich dramatisch, obwohl die Startpositionen vielleicht nur Millimeter voneinander entfernt waren. Bezogen auf das Wetter bedeuted dies, dass eine kleine Veränderung in der Ausgangssituation, zum Beispiel ein Hochdruckgebiet, dass sich 1 mm weiter nördlich befindet das Wetter in einem anderen Teil des Kontinents einige Zeit später völlig verändern kann. Aus genau diesem Grund kann der Wetterbericht keine beliebig langen Zeiträume vorhersagen, denn umso weiter in die Zukunft gerechnet wird, umso empfindlicher wird das Endergebnis in Bezug auf minimale Variationen der Ausgangsbedingungen. Die Ausgangsbedingungen sind jedoch nicht beliebig genau bestimmbar.

Übersicht über die Simulation

Im nächsten Abschnitt werde ich das zugrundeliegende numerische Modell vorstellen und zeigen, wie kleine Änderungen in den Anfangsbedingungen der Simulation die Endposition des Pendels stark beeinflussen können. Dies führt in letzter Konsequenz zu einer Unvorhersehbarkeit der Pendelendposition, da bereits kleinste Änderungen am Anfang das Ergebnis dramatisch beeinflussen.

Das klassische Modell geht von einem Pendel aus, das von drei Magneten angezogen wird. Jedem Magneten ist eine bestimmte Farbe zugeordnet. Die Magnete sind unterhalb des Pendels auf einer Ebene in einem gleichseitigen Dreieck angeordnet. Das Pendel ist mittig darüber aufgehängt. Die Magnete sind stark genug, um das Pendel niemals in der Mitte zur Ruhe kommen zu lassen. Im folgenden Bild ist das Modell dargestellt. Die Simulation berechnet die Bewegung des Pendels unter dem Einfluss der drei Magnete und der auf das Pendel wirkenden Schwerkraft und Reibungskraft. Infolge von Energieverlusten durch die Reibungskraft wird das Pendel früher oder später über einem der Magnete zur Ruhe kommen. Der Startpunkt des Pendels wird dann mit der Farbe des Magneten eingefärbt, über dem es zur Ruhe kam. Führt man dies für alle Punkte im Simulationsbereich durch, so erhält man eine farbiges Muster aus roten, grünen und blauen Punkten.

Pendulum traces above the magnets
Links: Grafische Darstellung des Experimentes (Bild mit freundlicher Genehmigung von Paul Nylander).
Wenig Reibung Viel Reibung
Rechts: Simulation des Magnetpendels. (Quellcode auf GitHub)

Mit der bislang beschriebenen Methode sind allerdings nur dreifarbige Bilder möglich. Es wäre wünschenswert in den Bildern mehr Farben oder zumindest Schattierungen zu verwenden. Die einzige Information, die dafür noch verfügbar ist, ist die Spurlänge. Es scheint also angebracht diese in die Berechnung der Farbe einzubeziehnen. Dies kann mit einer Farbfunktion geschehen, welche die Spurlänge berücksichtigt. Zur Erleichterung der Skalierung wird die maximale Spurlänge in die Berechnung mit einbezogen. Prinzipiell kann man beliebige Funktionen verwenden, aber erfahrungsgemaß bringen die folgenden gute Ergebnisse:

Color functions
Gegenüberstellung von drei unterschiedlichen Farbfunktionen.
Simulation setup overview

Anfangspositionen, die in längeren Spuren Enden, werden in dunkleren Schattierungen dargestellt. Die hier zum Download angebotene Software erlaubt die Verwendung beliebiger Farbfunktionen. Die Formeln werden mit einem Mathematikparser interpretiert.

Idealisiertes Modell

Wem sich nun die Frage stellt, wie das Pendel mit seinen drei Raumdimensionen und der Bewegung auf einer Kugeloberfläche in ein mathematisches Modell umgesetzt wird, dem sei gesagt: Das ist einfach! Wie heißt es doch so schön? "Was nicht paßt wird passend gemacht" Getreu diesem Grundsatz wird einfach angenommen, das Pendel sei sehr lang. Unter dieser Vorraussetzung kann man die Bewegung der Pendelmasse als Bewegung in einer Ebene über den Magneten idealisieren. Für ein langes Pendel mit geringer Auslenkung kann man weiterhin annehmen, die Rücktriebskraft, welche es zum Zentrum zurück zieht, ist proportional zur Auslenkung. Sie verhält sich also dem Hookesches Gesetz entsprechend. Das alles ist äußerst praktisch, denn nun kann man in zwei Dimensionen rechnen, ohne sich um Drehmomente, Rotationswinkel, Kreuzprodukte und ähnliches Gedanken machen zu müssen.

So viel mehr Aufwand, wäre es zugegebenermaßen auch nicht gewesen die komplette Physik zu implementieren, aber die Realität hat mal wieder einen entscheidenden Nachteil: Das Ergebnis würde auf eine Kugel gemappt werden. Das wäre ein wenig unpraktisch, denn im Gegensatz zu Bildern kann man Kugeln weder an die Wand hängen noch als Desktophintergrund verwenden.

Different force vs distance relations
Vergleich von Pendelrücktriebskraft mit der von den Magneten verursachten Anziehungskraft.

Für die Berechnungen wird angenommen, die Magnete üben eine Kraft auf das Pendel aus, die proportional zum inversen Quadrat der Pendelentfernung vom Magneten ist. Dies ist ein typischer Zusammenhang, wie er auch vom Gravitationsgesetz oder bei Coloumbschen Gesetz bekannt ist. Das ist allerdings nur die halbe Wahrheit, denn dieses Kraftgesetz würde nur gelten, wenn die Kraft von magnetischen Monopolen verursacht würde und die gibt es nach bisherigem Kenntnisstand nicht. Magnete sind immer Dipole und ein Dipol verursacht eigentlich eine Kraft, die propertional zu 1/r³ ist. Dies wird hier ignoriert, kann aber vom interessierten Leser im Konfigurationsfile selbst eingestellt werden. Weiterhin werden elektrische Effekte, wie zum Beispiel Induktion und dadurch im Pedel selbst verursachte Magnetfelder vernachlässigt.

Die Bewegungsgleichungen

Die Positionen des Pendels ergeben sich durch zweifache Integration der auf das Pendel wirkenden Gesamtbeschleunigung. Die Beschleunigung folgt unmittelbar aus Newtons zweiten Bewegungsgesetz. Die Kraft, die notwendig ist, um einen Körper zu bewegen, oder dessen Bewegung zu ändern entspricht dem Produkt aus Masse und Beschleunigung. Damit kann die Beschleunigung direkt berechnet werden.

\begin{equation} \nonumber\vec{F} = m \vec{a} \end{equation} \begin{equation} \nonumber\vec{a} = {\vec{F} \over m} \end{equation}

Da die Ausgangsposition und die Initialgeschwindigkeit sich aus den Anfangsbedingungen ergeben, muß nur noch die Gesamtbeschleunigungen berechnet werden. Diese ergibt sich aus der Summe der durch die Magnete verursachten Beschleunigungen plus der durch die Pendelrücktriebskraft verursachten Beschleunigung minus der durch die Reibung verursachte Bremswirkung. Aus praktischen Erwägungen wird für alle weiteren Betrachtungen eine Pendelmasse von 1 Masseneinheit angenommen. Es ergeben sich folgende Gleichungen:

Beschleunigung durch die Rücktriebskraft, die auf das Pendel wirkt:

\begin{equation} \nonumber\vec{a}_g = k_g \cdot \vec{r} \end{equation}

Beschleunigung die durch einen einzelnen Magneten auf das Pendel wirkt:

\begin{equation} \nonumber\vec{a}_m = k_m \cdot \frac{\vec{r}}{|\vec{r}|^3} \end{equation}

Verlangsamung durch Reibung:

\begin{equation} \nonumber \vec{a}_f = -k_f \cdot \vec{v} \end{equation}

Gesamtbeschleunigung des Pendels:

\begin{equation} \nonumber \vec{a}_t = \vec{a}_g + \Big( \sum_{m=1}^3{\vec{a}_m} \Big) - \vec{a}_f \end{equation}

wobei:

Integration der Pendelspur

Gibt man eine Startposition und eine Startgeschwindigkeit für das Pendel vor, so kann man mit einem passenden Integrationsverfahren die komplette Spur berechnen. Für diese Simulation wird das Beeman-Integrationsschema verwendet. Dieses Schema wird häufig auf Probleme der Molekulardynamik angedwendet und ist ein zur Verlet-Integration verwandtes Verfahren. Es ist einfach zu implementieren und sieht als Pseudocode wie folgt aus:

  
while tracing pendulum
    position += Velocity
    acceleration = 0

    for all force sources
    acceleration += acceleration_caused_by_source

    if (pendulum is close to source and velocity is small) then
      stop_magnet = source_index
      break
    end if
    end for

    acceleration -= acceleration_caused_by_friction
    velocity     += acceleration
    trace_length += length(velocity)

    store stop_magnet
    store trace_length
  end while

In C++ sieht das ganze dann so aus

for (int ct=0; ct<m_nMaxSteps && bRunning; ++ct)
{
  // compute new position
  pos[0] += vel[0]*dt + sqr(dt) * (2.0/3.0 * 
           (*acc)[0] - 1.0 / 6.0 * (*acc_p)[0]);
  pos[1] += vel[1]*dt + sqr(dt) * (2.0/3.0 * 
           (*acc)[1] - 1.0 / 6.0 * (*acc_p)[1]);

  (*acc_n) = 0.0;    // reset accelleration

  // Calculate Force, we deal with Forces proportional
  // to the distance or the inverse square of the distance
  for (std::size_t i=0; i<src_num; ++i)
  {
    const Source &src( m_vSources[i] );
    r = pos - src.pos;
    if (src.type==Source::EType::tpLIN)
    {
      //---------------------------------------
      // Hooke's law:          _
      //         _             r         _   
      //  m * a = - k * |r| * --- = -k * r
      //                      |r|
      //
      (*acc_n)[0] -= src.mult * r[0];
      (*acc_n)[1] -= src.mult * r[1];
    } 
    else
    {     
      //---------------------------------------
      // Magnet Forces: _
      //      _         r
      //  m * a = k * -----
      //               |r³|
      //
      double dist( sqrt( sqr(src.pos[0] - pos[0]) +  
                         sqr(src.pos[1] - pos[1]) + 
                         sqr(m_fHeight) ) );
      (*acc_n)[0] -= (src.mult / (dist*dist*dist)) * r[0]; 
      (*acc_n)[1] -= (src.mult / (dist*dist*dist)) * r[1]; 
    }

    // Check abort condition
    if (ct>m_nMinSteps && abs(r)<src.size && abs(vel)<m_fAbortVel)
    {
      bRunning = false;
      stop_mag = (int)i;
      break;
    }
  }   // for all sources

  //--------------------------------------------------------------
  // 3.) Friction proportional to velocity
  (*acc_n)[0] -= vel[0] * m_fFriction;
  (*acc_n)[1] -= vel[1] * m_fFriction;    

  //--------------------------------------------------------------
  // 4.) Beeman integration for velocities
  vel[0] += dt * ( 1.0/3.0 * (*acc_n)[0] + 5.0/6.0 * 
                 (*acc)[0] - 1.0/6.0 * (*acc_p)[0] );
  vel[1] += dt * ( 1.0/3.0 * (*acc_n)[1] + 5.0/6.0 * 
                 (*acc)[1] - 1.0/6.0 * (*acc_p)[1] );

  //--------------------------------------------------------------
  // 5.) flip the acc buffer
  tmp = acc_p;
  acc_p = acc;
  acc   = acc_n;
  acc_n = tmp;
}
zurück      weiter

Das könnte Sie auch interessieren: