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.
Begriffserläuterung und Berechnung der Divergenz
Allgemeine Rechenvorschrift für die Divergenz
-----------------------
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
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.
T.
Westermann
Mathematik für Ingenieure mit Maple, Band 2
Springer-Verlag Heidelberg,
1997
Klaus Weltner
Mathematik für
Physiker, Band 2
Vieweg
Verlag