Advertisement

Das Magnetische Pendel

Demonstration des Schmetterlingseffektes mit einem Magnetpendel

Das Magnetpendel

Im Jahr 1994 erschien in der Zeitschrift Spektrum der Wissenschaft, der Artikel "Experimente zum Chaos" [1]. In diesem wurde eine Simulation beschrieben, welche die chaotische Bewegung eines Pendels unter dem Einfluß der Schwerkraft und dreier Magnete simuliert. Wird das Ergebis grafisch dargestellt, so ergibt sich ein chaotische aussehendes Farbmmuster voller interessanter Strukturen. Dieser Artikel beschäftigt sich mit einer Implementierung dieser Simulation. Das Ergebniss der Berechnung sind chaotische Farbmuster, wie sie in der folgenden Animation zu sehen sind.

Video 1: Die Animation zeigt die chaotischen Farbmuster einer Simulation mit 6 rotierenden Magneten.

Zunächst ein kleiner Überblick, was euch im weiteren Verlauf dieses Artikels erwartet.

Was ihr mitbringen solltet:

Was ihr bekommt:

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 (engl. butterfly effect) 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.

Also was hat das alles mit dem magnetischen Pendel zu tun? Nun gut ich werde es euch zeigen, ich gebe euch die Gleichungen, die Erklärungen, die Algorithmen und die Software aber bevor ich das tue gebe ich euch etwas besseres: Ein Video, welches die Simulation ausführlich erklärt. Folgendes Video wurde von Aldo Cavini Benedetti erzeugt, der mir freundlicherweise die Genehmigung erteilt hat es hier zu zeigen. Er hat mit viel Aufwand den Versuch aufgebaut um zu zeigen, worum es bei der Simulation eigentlich geht und wenn ihr das Video bis zum Ende anschaut werdet ihr sehen, das selbst Katzen das verstehen.

Video 2: Chaos Theorie erklärt am Beispiel des Magnetischen Pendels; © 2007 Aldo Cavini Benedetti

Übersicht über die Simulation

Im nächsten Abscnhitt 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.

Kommen wir jetzt zu den Details. 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 in der Draufsicht dargestellt. Die farbigen Kreise symbolisieren die Magnete, das Kreuz in der Mitte ist der Aufhängepunkt des Pendels. 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
Bild 1 (links): Grafische Darstellung des Experimentes (Bild mit freundlicher Genehmigung von Paul Nylander).
Bild 1 (rechts): Kleine Veränderungen in den Anfangsbedingungen führen zu großen Abweichungen in der Pendelbewegung.

Das Ergebnis einer Berechnung ist in den Bildern 1 und 3 dargestellt. Der weiße Fleck in der Mitte von Bild 3 wird dadurch verursacht, dass das Pendel infolge der Parameterwahl in der Mitte zur Ruhe gekommen ist. 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 auch noch die maximale Spurlänge in die Berechnung mit einbezogen. Prinzipiell kann man beliebige Funktionen verwenden, aber erfahrungsgemaß bringen die folgenden gute Ergebnisse:

Color functions
Bild 2: Gegenüberstellung von drei unterschiedlichen Farbfunktionen.

Wie man sieht ist das Ergebnis ziemlich interessant, wenigstens wenn man sich ein wenig für Chaos-Theorie interessiert. (Wenn nicht frage ich mich wieso du noch liest.) Anfangspositionen, die in längeren Spuren Enden werden in dunkleren Schattierungen dargestellt. Die Software erlaubt die Verwendung beliebiger Farbfunktionen. Die Formeln werden mit einem Mathematikparser interpretiert.

Simulation setup overview
Bild 3 (links nach rechts): Simulationsschema; Farbzuweisung nach Magnetindex; Farbzuweisung mit Farbfunktion

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.

Force distance relationships
Bild 4: 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: