Numerik von Differentialgleichungssystemen

Hi Leute,
Ich sitze grad an einer Seminararbeit zum Thema „Kontinuierliche Simulationen“.
Dafür hatte ich vor, folgendes Rechenbeispiel mitreinzupacken:

\ddot{x}(t)+\omega^{2}x(t)=0

Da ich dabei auf die numerischen Lösungsverfahren eingehe, wollte ich für das Rechenbeispiel das normale Euler-Verfahren benutzen. Dazu muss ich die DGL in ein System von Differentialgleichungen aufsplitten:

y_{1}=x(t) \

y_{2}=\dot{x}(t) \

\left(\begin{array}{c}
y_{1}’\
y_{2}’\end{array}\right)=\left(\begin{array}{c}
y_{2}\
-\omega^{2}y_{1}\end{array}\right)=\left(\begin{array}{c}
\dot{x}(t)\
-\omega^{2}x(t)\end{array}\right)

Wenn ich jetzt also das Euler-Verfahren benutze sieht es ja so aus:

y_{1}(t_{i}+h)=y_{1}(t_{i})+hy’_{1}(t_{i})=y_{1}(t_{i})+hy_{2}(t_{i})\

y_{2}(t_{i}+h)=y_{2}(t_{i})+hy’_{2}(t_{i})=y_{2}(t_{i})-h\omega^{2}x(t_{i})\

Für die Rechnungen an der Stelle t_i + h benutze ich ja die Werte die ich für beide Funktionen im Schritt zuvor berechnet habe.
Das Rechenbeispiel ist eine ungedämpfte Schwingung. Als Lösung sollten zwei periodische Funktionen für y1 und y2 herauskommen
Aus irgendeinem Grund sagt mir Open Calc allerdings was anderes. Beide sehen zwar periodisch aus, allerdings nimmt die Amplitude der Lösungsfunktionen zu.
Kann ich davon ausgehen, dass die Euler-Gleichungen oben richtig sind?
Ansonsten kann nur was an meiner Open Calc Tabelle nicht stimmen
Ich hoffe ihr könnt mir helfen und bedanke mich schonma im voraus

Gruß
anschust

Hallo, prinzipiell hast Du alles korrekt gemacht, das Aufsplitten in zwei Dgl.1.O ist richtig.
Allerdings hat die Sache im Anschluss einen Haken, naemlich den mit der „Stabilitaet“ der Integrationsverfahren (und die des Euler ist besonders schlecht). Ich habe jetzt nicht die Zeit, mich da wieder tiefer reinzudenken, hier nur paar Tips:

  • kleinere Schrittweite (versuchs, ich denke aber, es wird nichts bringen, der Euler schaetzt halt bei jedem Schritt etwas zu gross, und das wirkt wie eine numerische Anfachung)
  • anderes Integrationsverfahren (best: Runge Kutta 4.O)
  • trickse das ganze mit einer „numerischen Daempfung aus“ (einen Daempfungsterm einbauen: y2’= -w^2*y1 + lambda*y2, lambda in Vorzeichen/ Groesse so waehlen, dass die harmonische Schwingung rauskommt, musst Du ja keinem erzaehlen. Und in der Praxis wird es durchaus auch so gemacht, der Kunde versteht es eh nicht HAHA)
    Viel Erfolg, Axel

Hi,
Das mit der Stabilität leuchtet natürlich ein. Der Fehler am Anfang pflanzt sich ja immer weiter fort.
Ich habs mit ner kleineren Schrittweite versucht, allerdings hat das wie du vermutet hattest nicht funktioniert.
Das mit dem Trick werde ich mal ausprobieren.
Danke nochmal

Gruß
anschust

Hallo,

hab mir Dein Problem nicht so genau angesehen, um herauszufinden, ob mathematisch irgendwas nicht stimmt. Aber die wachsende Amplitude, die Du beobachtest ein generelles Verhalten des expliziten Euler-Verfahrens - er neigt zur Instabilität. Wenn Du den impliziten Euler verwendest, wirst Du das genaue Gegenteil feststellen: die Amplitude nimmt ab. Wenn Du diese Effekte nicht sehen willst, mußt Du einen kleineren Zeitschritt verwenden, oder ein Vefahren höherer Ordnung - z.B. Runge-Kutta. Auch dann wirst Du noch Veränderungen in der Amplitude feststellen, wenn Du genau hinsiehst, aber die sind wesentlich geringer. Wenn Du die Amplitude wirklich erhalten möchtest, mußt Du ein energieerhaltendes/symplektisches Verfahren verwenden.

Gruß,
cathune

Hallole,

omega muß reel sein.

Dgl ist mit System äquivalent. Es muß eigentlich eine ungedämpfte Schwingung rauskommen.

Falls öfter einfache Numerik mit graph. Darstellung gebraucht wird, lohnt sich sicher der Blick auf Octave
http://en.wikipedia.org/wiki/GNU_Octave

Gruß

Gottfried