Benutzer-Werkzeuge

Webseiten-Werkzeuge


einfuehrung_in_die_numerik

Einführung in die Numerik

Die vielleicht wichtigste Gleichung in der Physik ist das Hook'sche Gesetz:

\begin{equation} \overrightarrow{F} = -k \cdot \overrightarrow{x} \end{equation}

Ut tensio, sic vis (1678)

Hook'sche Gesetz

Das Hook'sche Gesetz wird in der Physik behandelt. Wir wollen es hier nur so weit in Erinnerung rufen (bzw. in eine Form bringen), wie es für die Numerik nützlich ist.

Für das Hook'sche Gesetz gilt:

  • $\overrightarrow{x}$, ist die Strecke (in m), um die die Feder (von ihrer Ruhelage aus gemessen) ausgedehnt wird.
  • $\overrightarrow{F}$, ist die rücktreibende Kraft (in Newton N). Die rücktreibende Kraft ist der Kraft, die zur Auslenkung der Feder benötigt wird, entgegengesetzt, deshalb ist ein Minuszeichen nötig.
  • k, ist die Federkonstante (Einheit: N/m). Sie hängt von der Federsorte ab. Ist also experimentell zu bestimmen. Eine Federkonstante von z.B. k = 3 N/m bedeutet, dass sich die Feder um einen halben Meter dehnt, wenn sie mit einer Kraft von 1.5 N belastet würde.
a) b) a)
Der originale
Versuchsaufbau
von Robert Hook (1635-1704).

b)
Federpendel
Eine Animation der
Gleichung F = - k x
von Oleg Alexandrow

Die Kraft, die nötig ist, um die Feder zu dehnen, wird umso größer je weiter die Feder gedehnt werden soll. Wir gehen davon aus, dass wir die Feder nur so weit dehnen wollen, dass sie, ohne beschädigt zu werden, wieder in den Ausgangszustand gelangt, ansonsten gilt das Hook'sche Gesetz natürlich nicht.

Diesen Sachverhalt schreiben wir mathematisch so:

  • F~ x → F/x = const. Nennen wir die Konstante k dann gilt: $ F = k \cdot x$

Entsprechend gilt für die Rücktreibende Kraft:

  • F~ x → F/x = const. Nennen wir die Konstante -k folgt: $F = - k \cdot x$

Wir schreiben diese Gleichung jetzt in eine Form, wie sie für die Numerik benötigt wird. Dazu muss man allerdings das 2.Newtonsche Axion ($\overrightarrow{F}=m \cdot \overrightarrow{a}$) kennen, außerdem sollte man wissen, wie die Geschwindigkeit und Beschleunigung definiert ist.

Die Ableitung nach der Zeit kennzeichnen wir mit einem Punkt über der Variablen. Damit schreiben wir für die Geschwindigkeit: \begin{equation}v = \frac{dx}{dt} = \dot x \end{equation} Für die Beschleunigung erhalten wir jetzt: \begin{equation}a = \frac{dv}{dt} = \frac{d \dot x}{dt} = \ddot x \end{equation} Damit lautet nun das Hook'sche Gesetz: \begin{equation} F= m\cdot a = m \ddot x = - k\cdot x \rightarrow \ddot x = - \frac{k}{m} \cdot x \end{equation}

Aus der ursprünglichen einen Gleichung sind jetzt zwei geworden, dafür liegen sie jetzt in einer Form vor, wie es für die Numerik benötigt wird.

Das Hook'sche Gesetz (anders geschrieben)

\begin{equation}a = \frac{dv}{dt} = - \frac{k}{m} \cdot x \end{equation}

\begin{equation}a = \frac{dx}{dt} = v \end{equation}


Was ist ein Phasendiagramm?

Phasendiagramm - ein Diagramm mit der
Geschwindigkeit (Impuls)
als Ordinate und dem Ort als Abszisse.


Phasenpunkt - ein Punkt in der x-v-Ebene zu einem bestimmten Zeitpunkt

Trajektorie - eine Kurve, die sich ergibt, wenn der Phasenpunkt
sich in der Zeit bewegt.
Wenn sich ein Teilchen entlang der x-Achse bewegt, wird dessen Bewegung häufig als ein Graph der Koordinate (wir nennen sie hier x) oder aber der Geschwindigkeit (v=dx/dt) als Funktion der Zeit dargestellt.

Eine andere aber überaus nützliche Darstellungsweise erhält man, wenn man die Geschwindigkeit v des Teilchens in Abhängigkeit von der Position x zu jedem Zeitpunkt t graphisch darstellt.

Für einen bestimmten Zeitpunkt t erhält man so einen Punkt (x(t),v(t)), den man als Phasenpunkt bezeichnet. Dieser Punkt wird sich im Laufe der Zeit weiter bewegen. Die Kurve die sich dabei ergibt, bezeichnet man als Trajektorie und die Fläche (b.z.w. Raum), in der sich das Teilchen bewegt als Phasenfläche (Phasenraum). Das Diagramm als ganzes nennt sich dann Phasendiagramm. Solche Diagramme spielen eine wichtige Rolle in allen Forschungsrichtungen der nichtlinearen Dynamik (z.B. Chaosphysik).

Wie sieht das Phasendiagramm für den harmonischen Oszillator (Federpendel) aus?

Die potentielle Energie des
Federpendels ist: $E_{pot} = \frac{1}{2} k\cdot x^2$






Die kinetische Energie des
Federpendels ist:
$E_{kin} = \frac{1}{2}m \cdot v^2$
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} m \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. $$
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.

Für jede periodische Bewegung gilt, dass das Phasendiagramm geschlossene Trajektorien besitzt.

Das Euler-Verfahren zur numerischen Lösung von Differentialgleichungen

Diskretisieren die unendlich kleine Größe, z.B. dt wird durch eine kleine aber endliche Größe (hier Δt) ersetzt.

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)).
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.

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.

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;
  }
}

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.

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).

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; }
}

Vergleich der beiden Verfahren

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.txt · Zuletzt geändert: 2024/01/13 15:13 von torsten.roehl