This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)

 Documentation /  Mathematica /  Das Mathematica Buch /  Höhere Mathematik in Mathematica /  Differential- und Integralrechnung /

Die Manipulation von Integralen in symbolischer FormIntegraltransformationen und verwandte Operationen

3.5.10 Differentialgleichungen

Mit der Mathematica-Funktion DSolve kann man symbolische Lösungen gewöhnlicher Differentialgleichungen finden (siehe Abschnitt 1.5.8).

Das Lösen einer Differentialgleichung besteht im wesentlichen darin, die Form einer unbekannten Funktion zu finden. In Mathematica werden unbekannte Funktionen durch Ausdrücke wie y[x] dargestellt. Die Ableitungen solcher Funktionen werden durch y'[x], y''[x] usw. repräsentiert.

Die Mathematica-Funktion DSolve gibt als ihr Ergebnis eine Regelliste für Funktionen zurück. Es stellt sich die Frage, wie diese Funktionen dargestellt werden. Wenn Sie DSolve auffordern, die Gleichung für y[x] zu lösen, dann wird DSolve eine Regel für y[x] zurückgeben. Manchmal wird diese Regel alles sein, was Sie benötigen. Aber diese Regel selbst liefert keine Werte für y'[x], oder auch nur für y[0]. In vielen Fällen ist es deshalb besser, DSolve aufzufordern, die Gleichung nicht für y[x], sondern stattdessen für y selbst zu lösen. In diesem Fall gibt DSolve eine Regel zurück, die y als reine Funktion (im Sinne von Abschnitt 2.2.5) liefert.

Wenn Sie DSolve auffordern, die Gleichung für y[x] zu lösen, wird es eine Regel speziell für y[x] liefern.

In[1]:= DSolve[y'[x] + y[x] == 1, y[x], x]

Out[1]=

Die Regel gilt nur für y[x] selbst und nicht für Objekte wie z. B. y[0] oder y'[x].

In[2]:= y[x] + 2y'[x] + y[0] /. %

Out[2]=

Wenn Sie DSolve auffordern, die Gleichung für y zu lösen, liefert es eine Regel für das Objekt y selbst in Form einer reinen Funktion.

In[3]:= DSolve[y'[x] + y[x] == 1, y, x]

Out[3]=

Jetzt gilt die Regel für alle Vorkommen von y.

In[4]:= y[x] + 2y'[x] + y[0] /. %

Out[4]=

Nach Einsetzen der Lösung in die ursprüngliche Gleichung ergibt sich True.

In[5]:= y'[x] + y[x] == 1 /. %%

Out[5]=

Lösungen für Differentialgleichungen in unterschiedlichen Formen erhalten

In der mathematischen Standardschreibweise stellt man in der Regel Lösungen für Differentialgleichungen durch explizite Einführung von „Scheinvariablen" dar, die die Argumente der Funktionen repräsentieren. Wenn Sie nur eine symbolische Form der Lösung benötigen, dann mag die Einführung derartiger Scheinvariablen zweckmäßig sein. Wenn Sie jedoch wirklich beabsichtigen, die Lösung in einer großen Anzahl weiterer Berechnungen zu nutzen, dann werden Sie es gewöhnlich besser finden, die Lösung ohne Scheinvariablen in Form einer reinen Funktion zu bekommen. Beachten Sie, daß diese Form keine direkte Entsprechung in der mathematischen Standardschreibweise hat, obwohl sie in Mathematica einfach dargestellt werden kann.

Die Lösung simultaner Differentialgleichungen

Dies löst zwei simultane Differentialgleichungen.

In[6]:= DSolve[{y[x] == -z'[x], z[x] == -y'[x]}, {y, z}, x]

Out[6]=

Mathematica liefert in diesem Fall zwei verschiedene Lösungen für y.

In[7]:= DSolve[y[x] y'[x] == 1, y, x]

Out[7]=

Neben- und Randbedingungen für Differentialgleichungen können Sie durch die explizite Angabe zusätzlicher Gleichungen wie y[0] == 0 hinzufügen.

Dies fragt nach einer Lösung, die die Bedingung y[0] == 1 erfüllt.

In[8]:= DSolve[{y'[x] == a y[x], y[0] == 1}, y[x], x]

Out[8]=

Ohne ausreichende Neben- oder Randbedingungen wird Mathematica zur Lösung eines Satzes von Differentialgleichungen versuchen, eine allgemeine Lösung für Ihre Gleichungen zu finden. Diese allgemeine Lösung wird diverse unbestimmte Konstanten enthalten. Für jede Ableitungsordnung der Differentialgleichung in jeder Gleichung, die Sie angeben, wird eine neue Konstante eingeführt.

In der Voreinstellung werden diese Konstanten mit C[n] bezeichnet, wobei der Index n bei jedem Aufruf von DSolve mit 1 startet. Sie können sich über diese Auswahl hinwegsetzen, indem Sie explizit eine Einstellung für die Option DSolveConstants festlegen. Jede Funktion, die Sie angeben, wird nacheinander auf jeden Indexwert n angewendet und ergibt so die Konstanten, die bei jedem Aufruf von DSolve verwendet werden.

Die allgemeine Lösung dieser Differentialgleichung vierter Ordnung enthält vier Konstanten.

In[9]:= DSolve[y''''[x] == y[x], y[x], x]

Out[9]=

Jede angegebene Anfangswert- oder Randbedingung reduziert die Anzahl unbestimmter Konstanten um eins.

In[10]:= DSolve[{y''''[x] == y[x], y[0] == y'[0] == 0}, y[x], x]

Out[10]=

Sie sollten beachten: Die Ermittlung exakter Formeln für die Lösungen von Differentialgleichungen ist ein schwieriges Unterfangen. Es gibt eigentlich nur sehr wenige Arten von Gleichungen, für die derartige Formeln gefunden werden können, wenn man nur die üblichen mathematischen Funktionen verwendet.

Am stärksten erforscht sind die linearen Differentialgleichungen, in denen die Funktionen, nach denen Sie auflösen, sowie ihre Ableitungen nur linear auftreten.

Dies ist eine homogene lineare Differentialgleichung erster Ordnung, und ihre Lösung ist recht einfach.

In[11]:= DSolve[y'[x] - x y[x] == 0, y[x], x]

Out[11]=

Macht man die Gleichung inhomogen, so erhält man eine wesentlich kompliziertere Lösung.

In[12]:= DSolve[y'[x] - x y[x] == 1, y[x], x]

Out[12]=

Wenn Sie nur eine einzige lineare Differentialgleichung haben und wenn diese nur eine Ableitung erster Ordnung enthält, dann kann die Lösung immer einfach durch Integration gefunden werden.

Sobald Sie aber mehr als eine Differentialgleichung oder höhere Ableitungen haben, so gilt dies nicht mehr. Einige einfache lineare Differentialgleichungen zweiter Ordnung lassen sich trotzdem mit speziellen Funktionen aus Abschnitt 3.2.10 lösen. Historisch gesehen, wurden sogar viele dieser speziellen Funktionen zuerst dazu eingeführt, die Lösungen derartiger Gleichungen darzustellen.

Dies ist die Airy-Gleichung, die mit Airy-Funktionen gelöst wird.

In[13]:= DSolve[y''[x] - x y[x] == 0, y[x], x]

Out[13]=

Diese Gleichung wird mit Bessel-Funktionen gelöst.

In[14]:= DSolve[y''[x] - Exp[x] y[x] == 0, y[x], x]

Out[14]=

Gelegentlich können lineare Gleichungen zweiter Ordnung alleine nur mit elementaren Funktionen gelöst werden.

In[15]:= DSolve[x^2 y''[x] + y[x] == 0, y[x], x]

Out[15]=

Bei linearen Differentialgleichungen höher als zweiter Ordnung werden die Funktionsarten extrem kompliziert. Für Differentialgleichungen dritter Ordnung kann mitunter die verallgemeinerte Meijer G-Funktion MeijerG eingesetzt werden, ab der vierten Ordnung gibt es in der Regel keine passenden Standardfunktionen der Mathematik, außer vielleicht in sehr speziellen Fällen.

Hier ist eine lineare Differentialgleichung dritter Ordnung, die mit verallgemeinerten hypergeometrischen Funktionen gelöst wird.

In[16]:= DSolve[y'''[x] + x y[x] == 0, y[x], x]

Out[16]=

Dies erfordert verallgemeinerte Meijer G-Funktionen.

In[17]:= DSolve[y'''[x] + Exp[x] y[x] == 0, y[x], x]

Out[17]=

Bei nichtlinearen Differentialgleichungen können in der Regel nur sehr spezielle Fälle mit üblichen mathematischen Funktionen gelöst werden. DSolve enthält dennoch sehr allgemeine Prozeduren, die es erlauben, fast alle nichtlinearen Differentialgleichungen, deren Lösungen in den Standardnachschlagewerken gefunden wurden, zu bearbeiten.

Nichtlineare Differentialgleichungen erster Ordnung, in denen nicht explizit erscheint, sind sehr leicht zu lösen.

In[18]:= DSolve[y'[x] - y[x]^2 == 0, y[x], x]

Out[18]=

Diese Riccati-Gleichung liefert bereits eine wesentlich kompliziertere Lösung.

In[19]:= DSolve[y'[x] - y[x]^2 == x, y[x], x]

Out[19]=

Diese Bernoulli-Gleichung hat jedoch eine recht einfache Lösung.

In[20]:= DSolve[y'[x] - x y[x]^2 - y[x] == 0, y[x], x]

Out[20]=

Diese Abelsche Gleichung kann nur implizit gelöst werden.

In[21]:= DSolve[y'[x] + x y[x]^3 + y[x]^2 == 0, y[x], x]

Out[21]=

Lösung partieller Differentialgleichungen

DSolve ist so konstruiert, daß es nicht nur gewöhnliche Differentialgleichungen, in denen nur eine unabhängige Variable auftaucht, sondern auch partielle Differentialgleichungen (PDGL), in denen zwei oder mehr unabhängige Variablen auftauchen, bearbeiten kann.

Dies ermittelt die allgemeine Lösung für eine einfache partielle Differentialgleichung mit zwei unabhängigen Variablen.

In[22]:= DSolve[D[y[x1, x2], x1] + D[y[x1, x2], x2] == 1/(x1 x2),
y[x1, x2], {x1, x2}]

Out[22]=

Hier wird das Ergebnis als eine reine Funktion dargestellt.

In[23]:= DSolve[D[y[x1, x2], x1] + D[y[x1, x2], x2] == 1/(x1 x2),
y, {x1, x2}]

Out[23]=

Die Mathematik partieller Differentialgleichungen ist ungleich komplizierter als die gewöhnlicher Differentialgleichungen. Während so zum Beispiel die allgemeine Lösung einer gewöhnlichen Differentialgleichung nur beliebige Konstanten enthält, gibt es in der allgemeinen Lösung einer partiellen Differentialgleichung, wenn sie gefunden werden kann, beliebige Funktionen. Bei unabhängigen Variablen müssen so beliebige Funktionen von Variablen auftauchen. In der Voreinstellung gibt DSolve diesen Funktionen die Namen C[n].

Hier ist eine einfache PDGL mit drei unabhängigen Variablen.

In[24]:= (D[#, x1] + D[#, x2] + D[#, x3])& [y[x1, x2, x3]] == 0

Out[24]=

Die Lösung enthält eine beliebige Funktion zweier Variablen.

In[25]:= DSolve[%, y[x1, x2, x3], {x1, x2, x3}]

Out[25]=

Hier ist die eindimensionale Wellengleichung.

In[26]:= (c^2 D[#, x, x] - D[#, t, t])& [y[x, t]] == 0

Out[26]=

Die Lösung dieser Gleichung zweiter Ordnung enthält zwei beliebige Funktionen.

In[27]:= DSolve[%, y[x, t], {x, t}]

Out[27]=

Für eine gewöhnliche Differentialgleichung muß eine allgemeine Lösung existieren; durch Hinzufügen von Anfangs- oder Randbedingungen wird dann eine bestimmte Auswahl der beliebigen Konstanten in der Lösung erzwungen. Bei partiellen Differentialgleichungen gilt dies jedoch nicht mehr. Vielmehr gibt es nur für lineare partielle Differentialgleichungen und für einige andere spezielle Typen allgemeine Lösungen.

Andere partielle Differentialgleichungen können nur bei Vorliegen besonderer Anfangs- oder Randbedingungen gelöst werden. In der großen Mehrheit der Fälle können keine Lösungen als exakte Formeln mit Standardfunktionen der Mathematik gefunden werden.

Da die Variable y und ihre Ableitungen hier nur linear auftreten, existiert hier eine allgemeine Lösung.

In[28]:= DSolve[x1 D[y[x1, x2], x1] + x2 D[y[x1, x2], x2]
== Exp[x1 x2], y[x1, x2], {x1, x2}]

Out[28]=

Es stellt sich heraus, daß diese schwach nichtlineare PDGL eine allgemeine Lösung hat.

In[29]:= DSolve[D[y[x1, x2], x1] + D[y[x1, x2], x2]
== Exp[y[x1, x2]], y[x1, x2], {x1, x2}]

Out[29]=

Hier ist eine nichtlineare PDGL, die keine allgemeine Lösung hat.

In[30]:= DSolve[D[y[x1, x2], x1] D[y[x1, x2], x2] == a,
y[x1, x2], {x1, x2}]

Out[30]=

Die Manipulation von Integralen in symbolischer FormIntegraltransformationen und verwandte Operationen