Benutzer-Werkzeuge

Webseiten-Werkzeuge


einfuehrung_in_die_numerik

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
einfuehrung_in_die_numerik [2024/01/13 13:36] – [Was ist ein Phasendiagramm?] torsten.roehleinfuehrung_in_die_numerik [2024/01/13 15:13] (aktuell) torsten.roehl
Zeile 67: Zeile 67:
 {{:inf:solution.gif?|}} {{:inf:solution.gif?|}}
 |<wrap lo><color #00a2e8>Die potentielle Energie des \\ Federpendels ist: |<wrap lo><color #00a2e8>Die potentielle Energie des \\ Federpendels ist:
-$E_{pot} = \frac{1}{2} k\cdot x^2$</color>+$E_{pot} = \frac{1}{2} k\cdot x^2$</color> \\ \\ \\ 
 {{:inf:ellipse_gl.png?150|}} {{:inf:ellipse_gl.png?150|}}
-\\ Die kinetische Energie des \\ Federpendels ist:\\+\\ \\ \\  Die kinetische Energie des \\ Federpendels ist:\\
 $E_{kin} = \frac{1}{2}m \cdot v^2$ $E_{kin} = \frac{1}{2}m \cdot v^2$
-</wrap> |<wrap lo>Für den Fall des ungedämpften und sich ohne Reibung bewegten Federpendels hört die Bewegung niemals auf. Permanent wandelt sich potentielle Energie in kinetische Energie um (und umgekehrt). Das bedeutet aber, dass die Gesamtenergie des Systems eine Konstante sein muss. Die kinetische Energie ist  Ekin = 1/2 m . Die potentielle Energie des Federpendels ist Epot = 1/kx². Demnach gilt:</wrap>+</wrap> |<wrap lo>Für den Fall des ungedämpften und sich ohne Reibung bewegten Federpendels hört die Bewegung niemals auf. Permanent wandelt sich potentielle Energie in kinetische Energie um (und umgekehrt). Das bedeutet aber, dass die Gesamtenergie des Systems eine Konstante sein muss. Die kinetische Energie ist  $E_{kin} \frac{1}{2\cdot v^2$. Die potentielle Energie des Federpendels ist $E_{pot} \frac{1}{2}k\dot x^2$. Demnach gilt: 
 +$$ \frac{1}{2} m v^2 + \frac{1}{2} k x^2 = E = const.  $$ {{ :inf:phasenportrait.png?250 |}} \\ Das ist aber die Gleichung für eine Ellipse in x und v, d.h. das Phasendiagramm des Federpendels ist damit eine Ellipse. Wenn sich das Teilchen mit der Zeit bewegt, bewegt sich der Phasenpunkt entlang einer ellipsenförmigen Trajektorie. Wenn das Teilchen sich einmal herumbewegt hat und wieder am Ausgangspunkt angekommen ist, dann ist eine Periode vorbei und es geht von vorne los. 
 +</wrap>
 {{:inf:hinweis.gif?|}} {{:inf:hinweis.gif?|}}
 +
 Für jede periodische Bewegung gilt, dass das Phasendiagramm geschlossene Trajektorien besitzt. Für jede periodische Bewegung gilt, dass das Phasendiagramm geschlossene Trajektorien besitzt.
  
Zeile 78: Zeile 81:
  
 ====Das Euler-Verfahren zur numerischen Lösung von Differentialgleichungen ==== ====Das Euler-Verfahren zur numerischen Lösung von Differentialgleichungen ====
 +
 +|<wrap lo>**Diskretisieren** die unendlich kleine
 +Größe, z.B. dt wird durch eine kleine
 +aber endliche Größe (hier Δt)  ersetzt.\\ \\ <color #00a2e8> **Anfangsbedinungen**:
 +Jede numerische
 +Lösung setzt voraus,
 +dass man die Anfangsbedingungen kennt. Im vorliegenden Fall bedeutet das, dass der Ort und die Geschwindigkeit am Anfang bekannt sein muss (x(0), v(0)).</color>
 +</wrap> |<wrap lo>Wir demonstrieren das Euler-Verfahren am Beispiel des Federpendels (Hook'sche Gesetz).  $$ \frac{dv}{dt} = - \frac{k}{m} x$$ $$\frac{dx}{dt} = v$$Das Differential dt stellt eine unendlich kleine Größe dar. So etwas können wir mithilfe des Computers nicht simulieren. Deshalb ist es notwendig, solche unendlich kleinen Größen durch zwar kleine aber endliche Größen zu ersetzen. Für dt schreiben wir dann  Δt und aus dx wird: dx ≈ x(t+Δt)-x(t),
 +sowie für dv ≈ v(t+Δt)-v(t), d.h. wir bilden jeweils Differenzen. Hiermit ergibt sich dann für das Hook'sche
 +Gesetz \\ //(bitte unbedingt nachrechnen)//: $$\frac{dv}{dt} = - \frac{k}{m}x \rightarrow dv = -\frac{k}{m} x dt \rightarrow v(t+\Delta t) = v(t) - \frac{k}{m}x \Delta t   $$ und $$ \frac{dx}{dt}=v \rightarrow dx = vdt \rightarrow x(t+ \Delta t) = x(t) + v(t)\Delta t$$ Wir sind hier nur daran interessiert, das Verfahren kennenzulernen, deshalb setzen wir im Weiteren k=m=1
 +Hieraus resultieren dann die von uns verwendeten Gleichungen zur numerischen Lösung: $$x(t+\Delta t) = x(t) + v(t) \Delta t$$ $$v(t+\Delta t)=v(t) -x(t) \Delta t$$ Mithilfe der ersten Gleichung kann man die Position (Ort) des Teilchen im nächsten Zeitschritt Δt bestimmen. Und mithilfe der zweiten Gleichung ist es möglich, die Geschwindigkeit im nächsten Zeitschritt zu bestimmen. Grundsätzlich
 +können wir also, wenn wir den Ort und die Geschwindigkeit kennen auch Ort und Geschwindigkeit im nächsten Schritt bestimmen. Trotzdem können wir diese Gleichung momentan noch nicht benutzen, denn erst wenn wir den Ort x(0) und die Geschwindigkeit v(0) am Anfang kennen, können wir diese Gleichung verwenden, um für jeden beliebigen Zeitpunkt Ort und Geschwindigkeit iterativ zu bestimmen. </wrap>
 +
 +{{:inf:sample.gif?|}}
 +
 +Die Methode **init (Zeile 9)** muss zuerst aufgerufen werden, um die Anfangswerte für den Ort, Geschwindigkeit sowie die Schrittweite zu setzen.
 +
 +Mit der Methode **nextEuler() (Zeile 15)** wird jeweils eine Iteration durchgeführt.
 +
 +Mit **getX()** und **getV()**  kann nach jeder Iteration der neu berechnete Ort (Geschwindigkeit) ausgegeben
 +werden.
 +
 +<Code Java linenums:1>public class Euler {
 + 
 +   private double x;
 +   private double v;
 +   private double t;
 + 
 +   public Euler() {  }
 + 
 +   public void init(double x0, double v0, double timeStep){
 +    t = timeStep;
 +    x = x0 + v0 * t;
 +    v = v0 - x0 * t;
 +   }
 + 
 +   public void nextEuler(){
 +     double x_old = x;
 +     x = x + v * t;
 +     v = v - x_old * t;
 +   }
 +  
 +  public double getX(){
 +     return x;
 +  }
 +  public double getV(){
 +    return v;
 +  }
 +}
 +</Code>
 ====Das Euler-Cromer-Verfahren zur numerischen Lösung von Differentialgleichungen ==== ====Das Euler-Cromer-Verfahren zur numerischen Lösung von Differentialgleichungen ====
 +Die Gleichungen für das Euler-Cromer- Verfahren sind fast identisch mt denen des Euler-Verfahrens.
 +Lediglich bei der Berechnung des Ortes wird die gerade erst berechnete Geschwindigkeit eingesetzt, wohingegen das Euler-Verfahren dort mit dem "alten" Geschwindigkeitswert weiter rechnet. 
 + 
 +$$v(t+\Delta t) = v(t) - x(t) \Delta t)$$
 +
 +$$x(t+\Delta t) = x(t) + v(t+\Delta t) \Delta t$$
 +
 +Dennoch im Ergebnis unterscheiden sich die Verfahren stark. Will man z.B. Planetenbahnen berechnen, ist das Euler-Verfahren im allgemeinen unbrauchbar.
 +
 +<WRAP center round info 100%>
 +Die hier vorgestellten einfachen Verfahren zur numerischen Lösung von Differentialgleichungen, werden in der Praxis i.a. durch raffiniertere numerische Verfahren ersetzt (z.B. Runge-Kutta Methoden).
 +</WRAP>
 +
 +
 +
 +<Code Java linenums:1>public class EulerCromer{
 +   private double x;
 +   private double v;  
 +   private double t; 
 + 
 + public EulerCromer() {}
 + 
 +  public void init(double x0, double v0, double timeStep){
 +      t = timeStep;
 +      v = v0 - x0 * t;
 +      x = x0 + v * t;
 +   
 +  public void nextEulerCromer(){ 
 +      v = v + x * t;
 +      x = x - v * t;
 +  } 
 +  public double getX(){
 +    return x;
 +  } 
 +  public double getV() {
 +     return v; }
 +}
 +</Code>
 +====Vergleich der beiden Verfahren ====
 +{{ :inf:euler-eulercromer.png? |}}
 +
  
  
 +Numerische Lösung für das Federpendel. Das Eulerverfahren ist hier nicht geeignet  die Trajektorien des Federpendels auch nur eine Periode lang richtig zu simulieren. (Schrittweiter 0.1, k=1, m=1, x0 =0 , v0 = 1.5) - Die Grafik wurde mit GnuPlot von Finn Ole Schröder und Vanessa Sobotta erstellt.
einfuehrung_in_die_numerik.1705153012.txt.gz · Zuletzt geändert: 2024/01/13 13:36 von torsten.roehl