Überblick

Dieses Worksheet visualisiert den Begriff der Divergenz eines Vektorfeldes. Nach einer Begriffserläuterung wird die Berechnung der Divergenz mit Maple beschrieben. Die Darstellung der Divergenz einer Funktion von zwei Variablen erfolgt durch den plot3d-Befehl. Beispiele aus der Physik sollen den Begriff und die Bedeutung der Begriffs hervorheben.

Inhaltsverzeichnis

Begriffserläuterung und Berechnung der Divergenz

Allgemeine Rechenvorschrift für die Divergenz

Beispiele aus der Physik

-----------------------

zurück zur Startseite

Begriffserläuterung und Berechnung der Divergenz

Wird eine geschlossene Oberfläche A eines Volumens V (z.B. eine kugelförmige Fläche) von einem Vektorfeld F(x,y,z) durchsetzt, ist das Oberflächenintegral über das Vektorfeld ein Maß dafür, wie groß die Quellen des Vektorfeldes sind. Befindet sich innerhalb der geschlossenen Fläche keine Quelle, so ist die Anzahl der eintretenden und austretenden Vektorpfeile gleich groß, d.h. das Oberflächenintegral beträgt Null. Befindet sich dagegen eine Quelle innerhalb des Volumens, so ist die Anzahl der austretenden Vektorpfeile größer als die der eintretenden. Das Oberflächenintegral ist größer Null. Dividiert man nun durch das Volumen V, so erhält die mittlere Quellendichte im Volumen V:

wenn das Vektorfeld, die Normale auf der Oberfläche und df das Oberflächenelement darstellt.

Um die Quellendichte in einem bestimmten Punkt P zu erhalten, lässt man dann das Volumen V um den Punkt P gegen Null gehen. Dieser Grenzwert wird als Divergenz bezeichnet. Die Divergenz ordnet einem Vektorfeld ein Skalarfeld, nämlich die lokalen Quellen, zu.

Ein einfaches Beispiel für ein Quellenfeld ist das elekrische Feld einer Punktladung. Außerhalb der Quelle ist die Divergenz des elektrischen Feldes Null. Nur exakt am Ort der Punktladung erhält man für die Divergenz einen Wert. Dieser Wert ist unendlich, da die das elektrische Feld auslösende Ladung sich an einem unendlich kleinen Punkt befindet. Die Divergenz wird also immer benötigt, wenn man die Quellen eines gegebenen Feldes berechnen möchte.

zurück zum Anfang

Allgemeine Rechenvorschrift für die Divergenz

Die Maple-Anweisung diverge berechnet die Divergenz einer vektoriellen Funktion. Das Ergebnis ist eine skalare Funktion. vf soll hierbei eine vektorielle Funktion sein, die aus den Komponenten fx, fy und fz besteht. Die Variablen der Komponenten sind (x, y, z). Vektoren werden in Maple durch "eckige" Klammern definiert, die einzelnen Komponenten sind dabei durch Kommas getrennt:

`>` vf:=[fx(x,y,z), fy(x,y,z), fz(x,y,z)];

Der diverge -Befehl besitzt im Normalfall zwei Parameter: der erste gibt die zu berechnende Vektorfunktion, der zweite die abhängigen Variablen (innerhalb einer "eckigen" Klammer und durch Kommas getrennt) der Funktion an. Die Anzahl der Variablen gibt die Dimension der Vektorfunktion an.

`>` Divergenz:=diverge(vf, [x,y,z]);

In der folgenden Zeile kann eine beliebige Vektorfunktion von zwei Variablen eingegeben werden. Diese wird dann zuerst durch den fieldplot3d -Befehl graphisch dargestellt. Anschließend berechnet man mit dem diverge -Befehl die Divergenz des Vektorfeldes und stellt diese skalare Funktion mit dem plot3d -Befehl graphisch dar.

Definition des Vektorfeldes als Funktion von zwei Variablen:
`>` vf:= 1/(x^2+y^2+1) * [ x^2, y, 0];

Darstellung des Vektorfeldes in der (x,y)-Ebene:
`>` fieldplot([evalm(vf)[1],evalm(vf)[2]],x=-10..10,y=-10..10, axes=boxed, color=red, grid=[8,8], arrows=THICK);

Berechnung der Divergenz:
`>` Divergenz:=simplify(diverge(evalm(vf), [x,y,z]));

Graphische Darstellung der Divergenz:
`>` plot3d(Divergenz, x=-10..10, y=-10..10, style=patchnogrid, orientation=[45,-120], axes=framed,
shading=zgreyscale, title=`Divergenz eines Vektorfeldes`);

3D-Darstellung !

zurück zum Anfang

Beispiele aus der Physik

Feld und Raumladungsdichte an einer Glühkathode

`>` restart: with(linalg): with(plots):

Gegeben sei eine Glühkathode, die aus einem Glühdraht besteht. Dieser Glühdraht erzeugt durch Emission Ladungsträger, die aufgrund des angelegten elektrischen Potentials nach außen beschleunigt werden. Der Glühdraht sei geerdet, die Ummantelung auf dem Potential .

Die Potentialverteilung, die sich aufgrund der Raumladung einstellt, ist:

bzw. wenn man den Abstand r (für den 2-dimensionalen Fall) durch ersetzt:

Die Konstanten und d werden für die weitere Berechnung der Einfachheithalber auf den Wert 1 gesetzt:
`>` phi:=phi0*(sqrt(x^2+y^2)/d)^(4/3);
`>` phi0:=1: d:=1:

Das elektrische Feld Ef ist der negative Gradient des Potentials:

Mit der Mapleanweisung grad lässt sich der Gradient der Funktion berechnen. Der grad - Befehl besitzt zwei Parameter: der erste gibt die zu berechnende Skalarfunktion, der zweite die Liste der abhängigen Variablen der Funktion an. Das Ergebnis wird durch die Verwendung des Befehls evalm noch vereinfacht, da der nachfolgende diverge - Befehl nur Vektoren erlaubt, die keine Vorzeichen oder Faktoren außerhalb der Vektorklammern haben.

`>` Ef:=-grad(phi,[x,y,z]):
`>` Ef:=evalm(Ef);

Mit dem Befehl gradplot lässt sich der Gradient einer Funktion graphisch mit Pfeilen darstellen. Die Option arrows =<SLIM,THIN, THICK, LINE> ermöglicht es, die Form der Pfeile zu verändern. grid =[..,..] gibt die Anzahl der zu berechnenden Datenpunkte einer zweidimensionalen Datenmenge in x- und y-Richtung an. D ie Darstellung der Koordinatenachsen kann mit axes =<BOXED, NORMAL, FRAME, NONE> verändert werden.

`>` gradplot(phi, x=-1..1, y=-1..1, arrows=SLIM, grid=[10,10], axes=framed, title=`E-Feld einer Glühkathode`);

Damit haben wir das zum Potential gehörende elektrische Feld. Um aus dem elektrischen Feld nun die Quellen, also die Raumladungsdichte zu berechnen, verwenden wir die Anweisung diverge:
`>` rho:=epsilon0*diverge(Ef,[x,y,z]):
`>` rho:=simplify(rho);

Die Raumladungsdichte ist ein skalares Feld und wird mit Hilfe des plot3d -Befehls dargestellt. Dieser Befehl ermöglicht einen dreidimensionalen Plot. Der erste Parameter ist die zu zeichnende Funktion, die beiden folgenden Parameter geben den Definitionsbereich der Variabeln (hier x und y) an. Mit der Option style wird die Darstellungsform der Daten angegeben (z.B. Linienraster, Schattierungen usw.). Mit orientation lässt sich der Blickwinkel verändern, shading wählt einen der Standardalgorithmen zur Einfärbung der Graphik aus und view gibt den sichtbaren Wertebereich der Graphik an.
`>` epsilon0:=8.854e-12:
`>` plot3d(rho,x=-0.0001..0.0001,y=-0.0001..0.0001, style=patchnogrid, orientation=[45,-120], axes=framed,
view=(-0.00000004..0.000000001), shading=zgreyscale, title=`Raumladungsdichte der Glühkathode`);

3D-Darstellung !

Aus der Graphik erkennt man: Die Raumladungsdichte ist nur nahe der Glühkathode groß und nimmt nach außen hin sehr schnell ab.

zurück zum Anfang

Feld und Raumladungsdichte einer Punktladung

`>` restart:with(linalg):with(plots):

Bei einer Punktladung ist die Ladung q auf einen unendlich kleinen Punkt beschränkt. Somit ist die Raumladungsdichte an diesem Punkt unendlich und außerhalb des Punktes Null. Das Potential einer Punktladung wird durch folgende Formel beschrieben:

Den Abstand r (für den 3-dimensionalen Fall) ersetzt man durch und setzt der Einfachheithalber die Konstante auf 1:

`>` phi:=1/sqrt((x^2+y^2+z^2)):

Im folgenden Plot soll die Potentialverteilung der Punktladung durch Höhenlinien dargestellt werden. Dazu verwenden wir den Befehl plot3d . Über die Option style =contour wird die Funktion in Form von Höhenlinien dreidimensional dargestellt. Durch die Option orientation wird der Blickwinkel auf die Graphik verändert und somit behelfsweise eine zweidimensionale Darstellung erreicht. Mit contours wird die Anzahl der Höhenlinien vorgegeben. Da die Potentialverteilung der Punktladung eine singuläre (am Ort der Punktladung gegen unendlich gehende) Funktion ist, wird der darzustellende Bereich in z-Richtung durch die Option view begrenzt.

Zur Darstellung mit dem plot3d -Befehl wird eine Funktion mit zwei abhängigen Variablen benötigt. Daher wird hier die z-Komponente der Funktion Null gesetzt. Da wir zur späteren Berechnung des E-Feldes diese Komponente wieder verwenden möchten, soll diese nur für den folgenden Plot-Befehl gleich Null sein. Dazu verwenden wir den subs -Befehl. Der erste Parameter gibt die Zuweisung der zu ersetzenden Variablen bzw. Werte an, der zweite Parameter die Funktion, in die eingesetzt wird.
`>` phi_plot:=subs(z=0,phi):
`>` plot3d(phi_plot,x=-10..10,y=-10..10,grid=[20,20], color=black, style=contour, contours=10, orientation=[90,0], view=(0..0.5), title=`Potentialverteilung der Punktladung`);

Das elektrische Feld Ef ist der negative Gradient des Potentials:

Mit der Mapleanweisung grad lässt sich der Gradient der Funktion berechnen. Der grad - Befehl besitzt zwei Parameter: der erste gibt die zu berechnende Skalarfunktion, der zweite die Liste der abhängigen Variablen der Funktion an.
`>` Ef:=-grad(phi,[x,y,z]):
`>` Ef:=evalm(Ef);

Zur Darstellung des elektrischen Feldes in einem Plot wird die Potentialfunktion für den zweidimensionalen Fall neu definiert und anschließend mit dem gradplot -Befehl dargestellt.
`>` phi_plot:=1/sqrt(x^2+y^2):
`>` gradplot(-phi_plot, x=-1..1,y=-1..1, arrows=THICK, grid=[6,6], color=red, title=`Gradient der Funktion phi`);

Damit haben wir das zum Potential gehörende elektrische Feld. Um aus dem elektrischen Feld nun die Quellen, also die Raumladungsdichte zu berechnen, verwenden wir den Befehl diverge:
`>` rho:=epsilon0*diverge(Ef,[x,y,z]):
`>` rho:=simplify(rho);

Bei der Punktladung sitzt die Ladung an einem unendlich kleinen Punkt. Man würde nun erwarten, daß am Ort der Punktladung eine unendlich große Raumladung vorhanden ist, und dass außerhalb die Ladungsdichte überall Null ist (Delta-Funktion). Diese Art von Funktionen können mit dem diverge -Befehl nicht behandelt werden, als Ergebnis erhält man daher den Wert Null.

zurück zum Anfang

Raumladungsdichte einer Kugel mit homogender Ladungsverteilung

`>` restart:with(linalg):with(plots):

Gegeben sei in diesem Beispiel eine Kugel mit dem Radius R, die in ihrem Volumen eine homogene Ladungsverteilung aufweist.

Das elektrische Feld E_in innerhalb der Kugel ist durch folgende Formel gegeben:
`>` E_in:=Q/(4*Pi*epsilon0*R^3)*vector([x,y,z]):
`>` E_in:=evalm(E_in);

Für die spätere Ausgabe innerhalb eines Maple-Plots muss zunächst noch der Betrag der Funktion E_in gebildet werden. Beträge von Matrizen und Vektoren können mit Hilfe des norm -Befehls berechnet werden. Der zweite Parameter gibt dabei die Berechnungsmethode für den Betrag an. Wenn eine ganze Zahl n angegeben wird, werden die Beträge der Elemente zur n-ten Potenz erhoben und summiert, anschließend wird daraus die n-te Wurzel gezogen. Zum Beispiel wird durch den Befehl norm( [a, b, c], 2) der Betrag mit folgender Formel berechnet:

`>` Betr_E_in:=norm(E_in,2);

Um das Ergebnis zu vereinfachen, wird der Maple-Befehl simplify verwendet. Wird dabei die Option symbolic angegeben, so berücksichtigt Maple die Betragsklammern zur Vereinfachung nicht.
`>` Betr_E_in:=simplify(Betr_E_in,symbolic);

Danach wird das elektrische Feld E_au außerhalb der Kugel definiert:
`>` E_au:=Q/(4*Pi*epsilon0*sqrt(x^2+y^2)^3)*vector([x,y,z]):
`>` E_au:=evalm(E_au);

Wie schon für E_in wird auch für das elektrische Feld außerhalb der Kugel der Betrag berechnet:
`>` Betr_E_au:=norm(E_au,2):
`>` Betr_E_au:=simplify(Betr_E_au,symbolic);

In der folgenden Animation soll das elektrische Feld der Kugel als Betragsfunktion dargestellt werden. In den vorhergehenden Programmteilen wurde dazu der Betrag des E-Feldes innerhalb und außerhalb der Kugel berechnet. Zunächst müssen den festen Variablen Werte zugewiesen werden. Danach werden in einer do -Schleife die einzelnen Bilder in p.i gespeichert, wobei i die Laufvariable und damit die Nummer der einzelnen Bilder angibt. Mit der for -Anweisung wird schrittweise der Außenradius der Kugel verringert und somit für jedes einzelne Bild die Berechnungsgrundlage verändert. Mit dem Parameter by wird die Schrittweite angegeben. Die einzelnen Bilder werden mit der plot3d -Funktion erzeugt. Dabei wurden folgende Optionen verwendet:
numpoints gibt die Anzahl der Datenpunkte an, die zum Zeichnen einer Funktion berechnet werden soll.
shading wählt einen von mehreren Algorithmen zur Einfärbung der Graphik aus. shading=zgreyscale bedeutet, dass hohe Funktionswerte hellgrau und niedrige Funktionswerte dunkelgrau dargestellt werden.
style gibt die Darstellungsform der Daten an (z.B. von Linien, Schattierungen usw.). style=patchcontour bedeutet, dass Höhenlinien gezeichnet werden.
orientation gibt die Blickrichtung an, aus der die Graphik betrachtet wird.
view gibt den sichtbaren Wertebereich der Graphik an.
lightmodel wählt die Beleuchtungsart aus. lightmodel=light4 verwendet grau eingefärbte Beleuchtungsstufen.

Um nun die jeweilige Betragsfunktion für das elektrische Feld innerhalb bzw. außerhalb der Kugel zu aktivieren, wird die Heaviside -Funktion verwendet. Die Heaviside -Funktion liefert 0 für x<0 und 1 für x>=0 und entspricht somit dem Einheitssprung. Durch Multiplikation einer Funktion mit dem Einheitssprung kann diese Funktion ein- bzw. ausgeschaltet werden. Ist bzw. ist so wird die Funktion Betr_E_in aktiviert. Wird nun r im zweidimensionalen Fall durch ersetzt, so erhält man die in unserem Beispiel in Heaviside eingesetzte Formel. Ist bzw. ist so wird die Funktion Betr_E_au aktiviert.
`>` epsilon0:=8.854e-12: Q:=10^(-10):
`>` z:=0:
`>` i:=0:
for R from 1 by -0.1 to 0.5
do
i:=i+1:
p.i:=plot3d(Betr_E_in*Heaviside(R-sqrt(x^2+y^2)) + Betr_E_au*Heaviside(sqrt(x^2+y^2)-R), x=-2..2,y=-2..2,
numpoints=1500,shading=zgreyscale,style=patchcontour,
lightmodel=light4,view=-0.5..5,orientation=[45,20],
title=`E-Feld innerh. und außerh. der Kugel`):
od:

Um die berechneten Bilder innerhalb einer Animation auszugeben, wird der display -Befehl benutzt. Dabei muss die Option insequence =true verwendet werden, damit display die Bilder nicht überlagert, sondern als Sequenz (als Film) darstellt.
`>` display([seq(p.i,i=1..5)], insequence=true);

animierte 3D-Darstellung !

Bei dieser Animation erkennt man, dass das elektrische Feld innerhalb der Kugel proportional mit r anwächst und außerhalb mit 1/r abnimmt. Verkleinert man den Radius R der Kugel, so wächst das elektrische Feld an der Außenkante der Kugel an, da sich die gleiche Ladungsmenge nun in einem kleineren Volumen befindet. Geht der Radius R der Kugel gegen Null, so geht die Stärke des elektrischen Feldes an der Außenkante gegen unendlich. Dies würde einer Punktladung entsprechen.

Nachdem wir das elektrische Feld innerhalb und außerhalb der Kugel definiert haben, können wir nun die Quellen des elektrischen Feldes, d.h. die Raumldungsdichte innerhalb und die Raumladungsdichte außerhalb der Kugel, mit Hilfe des diverge -Befehls bestimmen. Zuvor setzen wir aus Gründen der Übersichtlichkeit die für die vorhergehende Animation benötigten Konstanten zurück.
`>` R:='R':
`>` epsilon0:='epsilon0':
`>` Q:='Q':
`>` z:='z':
`>` rho_in:=simplify(diverge(E_in,[x,y,z]));
`>` rho_au:=simplify(diverge(E_au,[x,y,z]));

Wie erwartet ist die Raumladungsdichte innerhalb der Kugel konstant, da die Ladung homogen verteilt ist. Außerhalb der Kugel ist die Raumladungsdichte Null, da sich hier keine Ladungen befinden.

Unsere zweite Animation stellt die mit dem diverge -Befehl berechnete Raumladungsdichte innerhalb und außerhalb der Kugel dar.
`>` epsilon0:=8.854e-12: Q:=10^(-10):

`>` z:=0:
`>` i:=0:
for R from 1 by -0.1 to 0.5
do
i:=i+1:
p.i:=plot3d(rho_in*Heaviside(R-sqrt(x^2+y^2))
+rho_au*Heaviside(sqrt(x^2+y^2)-R),x=-2..2,y=-2..2,
numpoints=1000,color=grey, title=`Raumladungsdichte über den Radius`);
od:

`>` display([seq(p.i,i=1..5)],insequence=true);

Bei dieser Animation erkennt man, dass die Raumladungsdichte mit kleiner werdendem Kugelradius größer wird. Dies muss auch so sein, da die Ladung erhalten bleibt, der Radius jedoch geringer wird. Wieder wird für den Grenzfall R gegen 0 die Bedingung für die Punktladung erreicht (unendlich hohe Raumladungsdichte auf einem unendlich kleinen Punkt und außerhalb des Punktes 0).

animierte 3D-Darstellung !

Wie erwartet ist die Raumladungsdichte innerhalb der Kugel konstant und außerhalb der Kugel 0.

zurück zum Anfang

Quelle: Die ursprüngliche Ausarbeitung wurde von Volker Ceh und Armin Jerger im Rahmen der Maple-Working Group an der Fachhochschule Karlsruhe im Studiengang Sensorsystentechnik erstellt und von Prof. Dr. Westermann für die CD-ROM "Visualisierung elementarer mathematischer Begriffe mit Maple" überarbeitet. Diese Arbeit wurde teilweise gefördert durch ein Projekt aus dem Förderprogramm "Leistungsanreize in der Lehre (LARS)" des Ministeriums für Wissenschaft und Forschung, Baden-Württemberg, 1997/98. Weitere Maple-Projekte der Maple Working-Group der Fachhochschule Karlsruhe stehen unter der Internet-Adresse

http://www.fh-karlsruhe.de/fbmn/st/projekte/maple

zur Verfügung.

Literatur

T. Westermann
Mathematik für Ingenieure mit Maple, Band 2
Springer-Verlag Heidelberg, 1997

Klaus Weltner
Mathematik für Physiker, Band 2
Vieweg Verlag