Numerische Mathematik

Die numerische Mathematik, auch kurz Numerik genannt, beschäftigt sich als Teilgebiet der Mathematik mit der Konstruktion und Analyse von Algorithmen für kontinuierliche mathematische Probleme. Hauptanwendung ist dabei die näherungsweise Berechnung von Lösungen durch Approximationsalgorithmen mit Hilfe von Computern.

Je nach persönlicher Auffassung ist die numerische Lösung von Differenzialgleichungen eines der wichtigsten Teilgebiete der Numerik. Diese Differenzialgleichungen beschreiben viele Bereiche unserer Umwelt wie technische, wirtschaftliche, biologische oder organisatorische Vorgänge. Für die numerische Lösung bieten sich einfache aber auch aufwendigere Verfahren an.

Ein Praxisbeispiel der Numerik mit einer einfachen diskreten Lösung einer nichtlinearen Differenzialgleichung erläutert die Grundlagen und zeigt den geringen mathematischen Aufwand.

Überblick

Interesse an solchen Algorithmen besteht meist aus einem der folgenden Gründe:

  1. Es gibt zu dem Problem keine explizite Lösungsdarstellung (so zum Beispiel bei den Navier-Stokes-Gleichungen oder dem Dreikörperproblem) oder
  2. die Lösungsdarstellung existiert, ist jedoch nicht geeignet, die Lösung schnell zu berechnen, oder liegt in einer Form vor, in der Rechenfehler sich stark bemerkbar machen (zum Beispiel bei vielen Potenzreihen).

Unterschieden werden zwei Typen von Verfahren: Einmal direkte, die nach endlich vielen exakten Rechenschritten die exakte Lösung eines Problems liefern, und auf der anderen Seite Näherungsverfahren, die nur Approximationen liefern. Ein direktes Verfahren ist beispielsweise das gaußsche Eliminationsverfahren, welches die Lösung eines linearen Gleichungssystems liefert. Näherungsverfahren sind unter anderem Quadraturformeln, die den Wert eines Integrals näherungsweise berechnen, oder auch das Newton-Verfahren, das iterativ bessere Approximationen an eine Nullstelle einer Funktion liefert.

Da in Anwendungen die Lösungen nur auf endliche Genauigkeit benötigt werden, kann ein iteratives Verfahren auch bei der Existenz eines direkten Verfahrens sinnvoller sein, wenn es in kürzerer Zeit eine hinreichende Genauigkeit liefert.

Unterschiedliche Verfahren werden nach Laufzeit, Stabilität und Robustheit verglichen. Gelegentlich existieren jedoch auch (abweichend von rein numerischen Verfahren) seminumerische Verfahren, die zur Lösung bestimmter Problemklassen besser geeignet sind als unspezialisierte numerische Lösungen.

Geschichte

Der Wunsch, mathematische Gleichungen zahlenmäßig (auch näherungsweise) lösen zu können, besteht seit der Antike. Die alten Griechen kannten bereits Probleme, die sie nur näherungsweise lösen konnten, wie die Berechnung von Flächen (Integralrechnung) oder der Kreiszahl \pi . In diesem Sinne kann Archimedes, der für beide Probleme Algorithmen lieferte, als der erste bedeutende Numeriker bezeichnet werden.

Die Namen klassischer Verfahren zeigen deutlich, dass der algorithmische und approximative Zugang zu mathematischen Problemen immer wichtig war, um rein theoretische Aussagen fruchtbar nutzen zu können. Konzepte wie Konvergenzgeschwindigkeit oder Stabilität waren auch beim Rechnen per Hand sehr wichtig. So lässt beispielsweise eine hohe Konvergenzgeschwindigkeit darauf hoffen, schnell mit der Berechnung fertig zu werden. Und schon Gauß bemerkte, dass sich seine Rechenfehler beim gaußschen Eliminationsverfahren manchmal desaströs auf die Lösung auswirkten und sie so komplett unbrauchbar machten. Er zog deswegen das Gauß-Seidel-Verfahren vor, bei dem man Fehler durch das Ausführen eines weiteren Iterationsschrittes leicht ausgleichen konnte.

Um das monotone Durchführen von Algorithmen zu erleichtern, wurden im 19. Jahrhundert mechanische Rechenmaschinen entwickelt, und schließlich in den 1930er-Jahren der erste Computer von Konrad Zuse. Der Zweite Weltkrieg beschleunigte die Entwicklung dramatisch und insbesondere John von Neumann trieb im Rahmen des Manhattan Projects sowohl mathematisch als auch technisch die Numerik voran. Die Zeit des Kalten Krieges war vor allem von militärischen Anwendungen wie Wiedereintrittsproblemen geprägt, doch die Steigerung der Rechnerleistung seit den 1980er-Jahren hat zivile Anwendungen in den Vordergrund treten lassen. Ferner hat sich der Bedarf nach schnellen Algorithmen mit dem Geschwindigkeitszuwachs entsprechend verstärkt. Für viele Probleme hat die Forschung dies leisten können, und so hat sich die Geschwindigkeit der Algorithmen seit Mitte der 1980er-Jahre um etwa dieselbe Größenordnung verbessert wie die CPU-Leistungen. Heutzutage sind numerische Verfahren, zum Beispiel die Finite-Elemente-Methode, in jedem technischen oder wissenschaftlichen Bereich präsent und Alltagswerkzeug.

Fehleranalyse

Ein Aspekt bei der Analyse der Algorithmen in der Numerik ist die Fehleranalyse. Bei einer numerischen Berechnung kommen verschiedene Typen von Fehlern zum Tragen: Beim Rechnen mit Gleitkommazahlen treten unvermeidlich Rundungsfehler auf. Diese Fehler lassen sich zwar zum Beispiel durch eine Erhöhung der Stellenzahl verkleinern, ganz beseitigen kann man sie aber nicht, da jeder Computer prinzipiell nur mit endlich vielen Stellen rechnen kann.

Wie das Problem auf Störungen in den Anfangsdaten reagiert, wird mit der Kondition gemessen. Hat ein Problem eine große Kondition, so hängt die Lösung des Problems empfindlich von den Anfangsdaten ab, was eine numerische Lösung erschwert, insbesondere da Rundungsfehler als Störung der Anfangsdaten aufgefasst werden können.

Das numerische Verfahren ersetzt ferner das kontinuierliche mathematische Problem durch ein diskretes, also endliches Problem. Dabei tritt bereits der sogenannte Diskretisierungsfehler auf, der im Rahmen der Konsistenzanalyse abgeschätzt und bewertet wird. Dies ist notwendig, da ein numerisches Verfahren im Regelfall nicht die exakte Lösung liefert.

Wie sich solche Fehler beim Weiterrechnen vergrößern, wird mit Hilfe der Stabilitätsanalyse bewertet.

Konsistenz und Stabilität des Algorithmus führen im Regelfall zu Konvergenz (siehe dazu: Grenzwert (Funktion)).

Numerische Verfahren

Für viele mathematische Probleme, wie zum Beispiel die Optimierung oder das Lösen von partiellen Differentialgleichungen, existieren eine Vielzahl numerischer Verfahren und Algorithmen.

Grundlagen einfacher Berechnungsmethoden zur numerischen Lösung gewöhnlicher Differenzialgleichungen

Die Lösung von Differenzialgleichungen (Abkürzung DGL) höherer Ordnung, die z.B. dynamische Vorgänge beschreiben, sind mit steigender Ordnung nur mit großem Aufwand lösbar. Die Lösung entspricht einer Funktion mit kontinuierlichem Verlauf.

Wird der Differentialquotient einer DGL durch einen Differenzenquotienten ersetzt, entsteht eine Differenzengleichung. Die Lösung der abhängigen Variable des ursprünglichen kontinuierlichen Verlaufs y(x) ändert sich in eine rekursive diskrete Folge von nummerierten Folgegliedern {\displaystyle y_{k}(x_{k})}.

Neben dem numerischen Verfahren mit Differenzengleichungen (Einschrittverfahren) stehen auch mehrere andere Verfahren zur besseren Approximation an den analytischen Verlauf einer Funktion zur Verfügung. Dazu gehören z.B. das Trapezflächenverfahrens (Heun-Verfahren), Runge-Kutta-Verfahren, das Mehrschrittverfahren (Adams-Bashforth-Verfahren) und andere Verfahren.

Grund der aufwendigeren Approximationsverfahren durch Verwendung komplizierter diskreter Gleichungen ist die erzielbare höhere Genauigkeit und damit Reduzierung der Folgeglieder.

Euler-Streckenzug-Verfahren

Der Mathematiker Leonhard Euler hat bereits im Jahr 1768 eine Methode als einfaches Einschritt-Streckenzugverfahren zur numerischen Lösung von Anfangswertproblemen bei DGL gewöhnlichen Differenzialgleichungen veröffentlicht. Als Beispiel für den Algorithmus des expliziten Eulerverfahrens gilt die Rechenvorschrift:

y_{{k+1}}=y_{k}+hf(t_{k},y_{k}),\quad k=0,1,2,\dots

Eine Differenzengleichung nach "Euler-Vorwärts" entsteht, wenn an Stelle der Funktion {\displaystyle f(t_{k},y_{k})} der oben dargestellten Berechnungsvorschrift die rechte Seite einer DGL (explizite Darstellung) eingesetzt wird. Die Methode „Euler-Vorwärts“ und die im nachfolgenden Abschnitt dargestellte Methode der Differenzengleichung nach dem „Vorwärts-Differenzenquotient“ sind identisch. Hier ist t_{k} die unabhängige diskrete Variable.

Anmerkung: {\displaystyle y_{k}\ {\text{ist der Anfangswert an der Stelle k = 0}},\ y_{k+1}\ {\text{ist der erste berechnete Wert an der Stelle k = 1}}}

Einfaches Differenzenverfahren

Das Differenzenverfahren erlaubt mit Hilfe von Differenzenquotienten eine DGL unmittelbar in Differenzengleichungen zu überführen und damit DGL-en zu lösen bzw. das Verhalten von dynamischen Systemen zu simulieren.

Die einfachste Form der Differenzengleichung bezieht sich auf den Vorwärts- oder den Rückwärts-Differenzenquotienten, die je nach Anwendung verschiedene Vorteile haben, z.B. bei Differenzengleichungen höherer Ordnung (bei DGL mit konjugiert komplexen Polen) auch beide Arten verwendet werden können. Durch Einsetzen des Differenzenquotienten entsprechender Ordnung in die DGL entsteht automatisch das rekursive Verhalten der Differenzengleichung, bei der sich je nach Ordnung n jedes aktuelle Folgeglied y_{k} sich auf ein oder mehrere zurückliegende Folgeglieder bezieht.

Eine Differenzengleichung ist eine numerisch lösbare rekursive Berechnungsvorschrift für eine diskret definierte Folge {\displaystyle k=[0,\ 1,\ 2,\ 3,\dotsc ]} von fortlaufend nummerierten Folgegliedern bzw. Stützstellen y_{k} im Abstand eines meist konstanten Intervalls \Delta x oder bei zeitabhängigen Systemen \Delta t.

Die Folgeglieder y_{k} werden im Abstand {\displaystyle \Delta x=h} zugeordnet. Die Größe k bedeutet die fortlaufende Indizierung der Folgeglieder. Die Parameter der Eingangs- und Ausgangsgrößen, die Indizierung k und die Schrittweite h lassen sich mit jeder Programmierungssprache berechnen und vorzugsweise tabellarisch darstellen.

Numerische Genauigkeit des Differenzenverfahrens

Mit kleiner werdender Schrittweite h steigt linear die Genauigkeit der berechneten Folgeglieder {\displaystyle y_{k}(x_{k})} und damit die Zahl der Folgeglieder. Zur Erzielung einer großen Genauigkeit der Folgeglieder {\displaystyle y_{k}(x_{k})} kann die Zahl der Folgeglieder nicht beliebig hoch betrieben werden, weil sich je nach Rechengenauigkeit des Computers unvermeidbare Rundungsfehler zu jedem Folgeglied aufaddieren können.

Berechnungsbeispiel für einen Fallschirmspringer bei ungeöffnetem Fallschirm

Die nichtlineare Differenzialgleichung für den senkrechten Fall mit Luftwiderstand lautet:

{\displaystyle m\cdot {\dot {v}}(t)=m\cdot g-c\cdot v^{2}(t)}

Daten:

Approximation der Fallgeschwindigkeit mit Luftreibung als Funktion der Anzahl der Schritte (Folgeglieder).
Reibungskoeffizient: Masse: Erdbeschleunigung: Schrittweite:
c = 0,32 kg/m m = 80 kg g = 10 m/s² 1 s und 0,01 s

Gesucht: Differenzengleichung, Geschwindigkeit v(t) der Masse m.

Differenzengleichung (Vorwärtsdifferenzenquotient):

{\displaystyle {\frac {v_{k+1}-v_{k}}{h}}=g-{\frac {c}{m}}\cdot v_{k}^{2};\quad {\text{Gleichung wird nach}}\ v_{k+1}{\text{freigestellt}}}
{\displaystyle v_{k+1}=v_{k}+(g-{\frac {c}{m}}\cdot v_{k}^{2})\cdot h;\quad } Anfangswert: v_{0}=0

Entwicklung der Folgeglieder der Differenzengleichung bei einer Schrittweite von h=1 [s]:

k Zeit
[s]
Fallgeschwindigkeit {\displaystyle v(t)\ [m/s]}
{\displaystyle v_{k+1}=v_{k}+(10-0,004\cdot v_{k}^{2})\cdot 1}
0 0 v_{0}=0 (Anfangswert)
1 1 {\displaystyle v_{1}=0+10-0{,}004\cdot 0} = 10
2 2 {\displaystyle v_{2}=10+10-0{,}004\cdot 10^{2}=19{,}6}
3 3 {\displaystyle v_{3}=19{,}6+10-0{,}004\cdot 19{,}6^{2}=28{,}063}
\vdots \vdots \vdots
18 18 {\displaystyle v_{18}=49{,}974+10-0{,}004\cdot 49{,}974^{2}=49{,}985}

Die Ergebnisse der Folgegleichungen ergeben Stützstellen mit asymptotischem Verlauf. Die Fallgeschwindigkeit nimmt ab {\displaystyle v(t)=50\ m/s} nicht mehr zu.

Die Fallstrecke nach der Fallzeit 13 s beträgt etwa 478 m (mit h = 0,01 s gerechnet).

Diskretes Systemverhalten zusammenhängender dynamische Systeme

{\displaystyle x1=y\ } und {\displaystyle \ x2=y'}.
Ausgehend von einer DGL höherer Ordnung erzeugt man über Zustandsgrößen ein äquivalentes Differenzialgleichungssystem.

Ausführliche Behandlung des Differenzenverfahrens:
Siehe \to Differenzengleichung (Differenzenverfahren)

Aufstellung der Differenzenquotienten:
Siehe \to Differenzenquotient

Literatur

Trenner
Basierend auf einem Artikel in: Wikipedia.de
Seitenende
Seite zurück
© biancahoegel.de
Datum der letzten Änderung: Jena, den: 12.02. 2023