Skip to content
Loesung einer partiellen Differentialgleichung Schritt fuer Schritt erklaehrt
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
code
pics
README.md

README.md

Partielle Differentialgleichungen

11.2012

Ich habe mir vor kurzem das Buch Partial Differential Equations for Scientists and Engineers von Stanley J. Farlow gekauft, dass ueber partielle Differentialgleichung handelt. Mich hat das Thema schon immer interessiert, weil viele gewoehnliche Differentialgleichungen meistens erst durch bestimmte Vereinfachungen aus partiellen Differentialgleichungen entstehen.

Eine einfache partielle Differentialgleichung (PDE) ist die Waermeleitungsgleichung.

Fuer mich als angehender Ingenieur ist interessant, wie die Gleichungen durch die mathematische Beschreibung der Natur auf dem Papier entstehen. Man findet im Netz einige Herleitungen der Waermeleitungsgleichung oder auch Diffusionsgleichung genannt, so dass ich hier an dieser Stelle darauf verzichten werde. Das wuerde auch zu weit fuehren, ich kann aber jedem nur raten mal einen Blick darauf zu werfen.

Gleichung der Waermeleitung:

d/dt u(x,t) = a^2 * d^2/dx^2 u(x,t)

Die Waermeleitungsgleichung, die aus den 2 Abhaengigen t, der Zeit und x, dem Weg, besteht, wird jeweils einmal nach t und zweimal nach x differenziert.

Damit das physikalische Problem vollstaendig beschrieben ist, braucht man noch Randbedingungen und Anfangswerte. Bei gewoehnlichen Differentialgleichungen hat man an dieser Stelle nur die Anfangsbedingungen.

Ich loese hier auf dieser Seite nun ein ganz bestimmtes Problem Schritt fuer Schritt (Kapitel 7 im Buch: Solving more complicated problems by seperation of variables).

Inhalt

  1. Das Waermeleitungsproblem
    1.1. Allgemeine Loesung der PDE
    1.1.1. Loesung der Randbedingungen
    1.1.2. Numerische Annaeherung von Lambda
    1.1.3. Loesung der Anfangsbedingung
  2. Gesamtloesung
    2.1. Fazit

1. Das Waermeleitungsproblem

Versuchsaufbau PDGL

Es geht hier um einen dimensionslosen Stab, der an einem Ende mit einem Peltier-Element beheizt und an dem anderen Ende durch ein Eisbad mit konstanter Temperatur von 0 Grad C (siehe Eiswuerfel) gekuehlt wird. Die Waermeverluste an der Seite sind in diesem Beispiel zu vernachlaessigen.

Die PDE ist ja schon bekannt, also kann man jetzt die Randbedingungen aufstellen. Ich nehme dabei an, dass der Stab am Peltier-Element immer dieselbe Temperatur hat: t1. Zur Vereinfachung wird t1=0 gewaehlt, wie die Temperatur des Eisbades.

Der untere Teil des Stabes ist mit dem Wasserbecken verbunden. Um die Sache etwas schwieriger zu gestalten, soll der Stab nicht sofort die Temperatur des Wassers annehmen, sondern durch Waermeleitung langsam an die Temperatur angenaehert werden. Hier muss man auf die Gesetze von Newton und Fourier zurueckgreifen.

BC (Boundary Conditions, Randbedingungen):

Das obere Ende:
u(0,t) = t1 = 0

Das untere Ende:
k * d/dx u(L,t) = h * (t2 - u(L,t))

k * d/dx u(1,t) = h * (t2 - u(1,t))

Der Ausdruck h/k kann durch Lambda ersetzt werden. Dieser gilt in der Physik als Waermeleitkoeffizient. Weil es hier vorerst nur um das Aussehen der Loesung geht, waehle ich alle Konstanten zu 1 (auch die Laenge L des Stabes). Die Temperatur das Wassers t2 betraegt 0 Grad.

d/dx u(1,t) + u(1,t) = 0

IC (Initial Conditions, Anfangsbedingungen):

Die Anfangsbedingung besteht aus einer Funktion, die die Temperatur entlang des Stabes beschreibt: f(x). Diese braucht man erst am Ende festlegen.

1.1. Allgemeine Loesung der PDE

Als erstes loest man die PDE. Durch den Ansatz von u(x,t) = T(t) * X(x) kommt man durch die Seperation von Variablen auf folgende Loesung:

u(x,t) = e^(-λ^2 * t) * ( A * sin(λ*x) + B * cos(λ * x) )

Mehr zum Thema gibt es auf Wikipedia unter dem Artikel https://de.wikipedia.org/wiki/Separationsansatz.

1.1.1. Loesung der Randbedingungen

Setzt man die Randbedingungen in die Loesung ein, kann man diese loesen:

Obere Randbedingung:
u(0,t) = 0 --> B = 0

Fuer die naechste Randbedingung muss die PDE-Loesung noch nach x abgeleitet werden:

d/dx u(x,t) = e^(-λ^2 * t) * ( λ * A * cos(λ*x) - B * λ * sin(λ * x) )
B = 0

d/dx u(x,t) = e^(-λ^2 * t) * ( λ * A * cos(λ*x) )

Setzt man nun die Bedingungen der zweiten Randbedingung ein, erhaelt man folgende Gleichung:

Untere Randbedingung:
d/dx u(1, t) + u(1, t) = 0

Alles einsetzen:
e^(-λ^2 * t) * ( λ * A * cos(λ) ) + e^(-λ^2 * t) * ( A * sin(λ) ) = 0

Kuerzen und umformen:
λ + tan(λ) = 0

Es ergeben sich dadurch fuer Lambda (λ) unendlich viele Loesungen. Hier kann man aber keine einfache Menge von Loesungen bilden, wie bei einfachen trigonometrischen Gleichungen. Also muss man die ersten paar numerisch berechnen, damit man ein Teil der Loesungsfunktion erhaelt. Es reichen schon wenige Loesungen dieser Gleichung, da jede weitere Loesung weniger Einfluss auf die Gesamtloesung nimmt (da diese schneller durch den e-Term gegen 0 geht).

1.1.2. Numerische Annaeherung von Lambda

Die Loesung muss also numerisch irgendwie errechnet werden. Es geht um folgende Gleichung: f(x) = x + tan(x) = 0

Hier gibt es nun mehrere Verfahren, wie man auf die Loesung kommen koennte. Die numerischen Verfahren die ich kenne, brauchen aber einen Startwert. Man muss also irgendwie herausfinden, wo die Nullstellen dieser Funktion ungefaehr liegen. Die Nullstellen nennt man aufgrund der Optik dieser Gleichung Eigenwerte.

Ich habe die Funktion durch viele errechneten Punkte erst einmal geplottet:

lambda Funktion

Um mal eine grobe Nullstelle zu finden, habe ich einfach eine Schleife durch alle Punkte laufen lassen und geschaut, wo ein Vorzeichenwechsel stattfindet. Dadurch erhaelt man zwei Punkte. Durch diese Punkte wird eine Gerade erstellt, deren Schnittpunkt mit der x-Achse errechnet wird. So kommt man der wahren Nullstelle noch etwas naeher.

Es finden sich aber auch Nullstellen, die gar keine sind. Die Tangens-Funktion hat naemlich Polstellen, die aber dann eine Nullstelle suggerieren.

Um die Falschen von den Richtigen zu unterscheiden, setze ich alle gefundenen Nullstellen in die urspruengliche Funktion ein. Wenn dann der Absolutwert des Funktionswertes groesser als eine Konstante ist, dann handelt es sich um eine wahre Nullstelle. Alle anderen werden entfernt.

Der letze Schritt besteht darin, die Nullstellen nun besser anzunaehern. Ich habe mich fuer das Sekantenverfahren entschieden, weil der Algorithmus einfacher zu programmieren ist. Fuer den Newton-Algorithmus haette ich noch eine numerische Ableitung an dieser Stelle gebraucht (was jetzt eigentlich auch nicht wirklich schwierig ist...). Im Vergleich zum Newton-Verfahren braucht das Sekantenverfahren mehr Iterationen um diesselbe Genauigkeit zu erreichen.

Am Ende bekomme ich also bei einem vorgegebenen Intervall (hier mal von 0 bis 15) die entsprechenden Nullstellen. Ein Plot soll das Resultat verdeutlichen:

Lambda Nullstellen

Nullstellen:

k Wert
1 00.0000
2 02.0288
3 04.9132
4 07.9787
5 11.0855
6 14.2074

Benoetigte Scripte: lamdas.m und sign.m. lambda.m als erstes aufrufen.

Man ist jetzt der Gesamtloesung durch n Lambda-Nullstellen ein wenig naeher gekommen. Die erste Nullstelle mit "0" wird nicht beruecksichtigt, da diese zu einer trivialen Loesung fuehrt (beim Einsetzen = 0).

u(x,t) = sum( A[k] * sin (λ[k] * x) * e^(-λ[k]^2 * t), k, 1, n)

Die λ's sind jetzt also berechnet, bzw. die ersten 5 Stueck. Das reicht aber fuer die Loesung aus, da die Loesung mit weiteren λ immer weniger Einfluss auf die Loesung nimmt.

1.1.4. Loesung der Anfangsbedingung

Die obere Formel ergibt bei t=0:

u(x,0) = f(x) = sum( A[k] * sin(λ[k] * x), k, 1, n)

Das erinnert an die Entwicklung einer Fourier-Reihe. Nach diesem Mathematiker ist auch ein Verfahren benannt, dass solche Probleme loesen kann. Das Rezept der Fourier-Entwicklung kann hier aber leider nicht so einfach angewendet werden, weil folgendes gelten muss:

1
∫ sin( m * π * x ) * sin ( n * π * x )
0

0 fuer m ≠ n
1 fuer m = n

In den Funktionen befinden sich aber λ's und keine Form wie m * π. Aber wenn die λ's ungleich sind, ergeben die Terme bei Integration trotzdem 0. Das hat etwas mit dem Sturm-Liouville-Problem zu tun.

Die Aufstellungen der Gleichungen zur Loesung des Anfangwertproblemes:

Koeffizientenbestimmung

und so weiter. Das Beispiel gilt fuer 3 verschiedene λ's. Wenn man die obigen Integrale loest mit f(x) = x als Anfangsbedingung dann gibt das fuer die Koeffizienten A_n folgende Formel:

Formel Lambda
Formel Lambda
Formel Lambda
Formel Lambda

Die Nullstellen "0" wird wie oben schon erwaehnt nicht beruecksichtigt.

1 +0.7292
2 -0.1562
3 +0.0614
4 -0.0322
5 +0.0197
...

Loesung bei t=0 also f(x):

u(x,0) = 0.73 * sin(2.0x) - 0.16 * sin(4.91x) + 0.06 * sin(7.98*x) + ...

Vergleich Startfunktion

blau = angenaeherte Funktion
rot = gewuenschte Funktion

Zum Errechnen der Koeffizienten und plotten der Funktion lambda.m und dann koeffizienten.m ausfuehren.

2. Gesamtloesung

u(x,t) = 0.73 * sin(2.0x) * e^(-4.0t) - 0.16 * sin(4.91x) * e^(24.14t) + ...

Die Loesung habe ich in 2D und 3D geplottet. Nacheinander die Scripte lamdas.m, koeffizienten.m und loesung.m aufrufen. Es entstehen dann zwei Bilder:

Loesung PDGL 2D
Loesung PDGL 3D

2.1. Fazit

Der Loesungweg mag im Vergleich zu gewoenlichen Differentialgleichungen aufwendig erscheinen. Das liegt aber auch einfach in der Natur von diesen partiellen Differentialgleichungen. Zudem wurde nur der eindimensionalen Zustand betrachtet. Die ICs und die Anfangsfunktion wurden so festgelegt, dass die Loesung noch relativ ohne grosse Reibung zu finden ist.

Man sieht auch sehr schoen, dass die analytische Loesung zu Problemen fuehrt, die man nur numerisch loesen kann (Eigenwertproblem mit Lambda, Annaeherung der Startfunktion). Kompliziertere Probleme, die die Wirklichkeit besser beschreiben, sind noch viel komplizierter oder auch oft gar nicht analytisch zu loesen. Hier helfen numerische Verfahren.

Die Dinge, die ich mir dadurch angeeignet habe werde ich deshalb vermutlich spaeter niemals brauchen. Es ist aber trotzdem immer wieder schoen zu sehen, dass eigentlich nur durch die Mathematik einem klar wird, wie die Natur funktioniert. Allein schon der Loesungsansatz mit X(x)*T(t) sagt vieles ueber das Verhalten der Loesung aus. Verwundert war ich auch ueber die Methode von Fourier, deren Nutzen ich davor nur in der Elektrotechnik sah.

Ich habe eben das Glueck, dass mich solche Dinge unheimlich interessieren und mir Spass machen. Ich habe gerade mal knapp 60 von 388 Seiten Theorie durch. Der Zeitaufwand fuer das Verstaendnis ist groß (bei mir jedenfalls, aber ich will auch alles genau wissen). Das Tolle daran ist, dass dieses Hobby kaum Geld kostet. Das Buch kostet nicht mal 14 Euro.

Meine Bachelor-Arbeit handelt ebenfalls von partiellen Differentailgleichungen. Hier gehe ich auf numerische Methoden ein, mit Theorie und vielen geschriebenen Scripten. Ebenfalls hier auf meiner Seite zu finden ;).

Bei Fragen und Anregungen darf man mir gerne schreiben :).

You can’t perform that action at this time.