Runge Kutta Verfahren 4. Ordnung

    • C#
    • .NET (FX) 4.0

      Runge Kutta Verfahren 4. Ordnung

      Moin Leute,
      inspiriert von diesem gleichnamigen Thread Runge Kutta Verfahren 4. Ordnung hab ich mein einst in Basic 7 (PDS) geschriebenes Programm mal auf die Höhe der Zeit gehoben.

      Ziel:
      Lösung von Differentialgleichungen nach dem Runge-Kutta-Verfahren 4. Ordnung.

      Vorgehen:
      Um das ganz allgemein zu lösen, hab ich mir ein DGL-Interface erdacht, wo die Anzahl der Gleichungen sowie die Gleichungen selbst implementiert werden.
      Die restlichen Funktionen transportieren lediglich die Werte von der GUI über den RK-Kern in die entsprechende Klasse und zurück.
      Das ganze funktioniert so mit minimalem Aufwand.

      Demo:
      Zur Illustration habe ich zwei Gleichungen implementiert, einmal das Pendel, sowohl ideal (mit kleinen Auslenkungen) als auch real (mit großen Auslenkungen), zum anderen das Orbit-Problem aus dem oben zitierten Thread, allerdings mit einem Ansatz in Polarkoordinaten aus dieser Literatur: itp.tugraz.at/LV/sormann/NumPhysik/Skriptum/kapitel8.pdf
      aber Achtung, da ist ein Konstanten-Fehler drin, der das System knallen lässt, der Startwert y4 ist ein wenig zu groß. ;)

      GUI:
      Die Lösung wird über einen Timer angestoßen, die grafische Ausgabe erfolgt im selben Takt.
      Über eine DGL-Klassen-spezifische Delegate-Funktion werden die Lösungspunkte ausgelesen, in das korrekte Koordinatensystem transformiert und angezeigt, in der Implementation skaliert sich die Grafik auf das bisher ermittelte Um-Rechteck.
      Zur Nachnutzung lediglich eine vom Interface abgeleitete Klasse erstellen, ausfüllen und feddich.
      Ggf. muss die grafische Ausgabe angepasst werden.

      Hinweis:
      Falls Ihr eigene Gleichungen lösen wollt, schreibt Euch zu jeder Größe die physikalischen Einheiten dazu, sonst ist der eine Wert in Metern, der andere in Kilometern :!:

      Erläuterung der Bilder:
      Beim Orbit ist die blaue Linie die Satellitenbahn, die rote die Erde.
      Beim Pendel ist die rote Linie die Bewegung des idealen, die blaue die des realen Pendels.

      Viel Spaß.



      Download:
      RungeKutta.zip
      Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
      Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
      Ein guter .NET-Snippetkonverter (der ist verfügbar).
      Programmierfragen über PN / Konversation werden ignoriert!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()