3D-Plot von p-Orbitalen < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Hallo allerseits,
im Rahmen einer Präsentation arbeite ich daran, die p-Orbitale für das Wasserstoffatom für n=2,3,4 zu visualieren.
Ein kurzer Abriss meiner Vorgehensweise:
Zunächst habe ich den radialteil R der Wellenfuntion [mm] \Psi [/mm] definiert:
1: | Rnl[n_, l_, r_] := ((2/n)^3*((n - l - 1)!/(2 n*(n + l)!)))^(1/2)*
| 2: | Exp[-r/n]*((2 r/n)^l)*LaguerreL[n - l - 1, 2 l + 1, 2 r/n] |
Anschließend die Wellenfunktion [mm] \Psi [/mm] als Produkt aus Radialanteil und Kugelflächenfunktion sowie ihr Betragsquadrat [mm] |\Psi|^2 [/mm] als Aufenthaltswahrscheinlichkeit:
1: | \[Psi][n_, l_, m_,
| 2: | r_, \[Theta]_, \[Phi]_] := (Rnl[n, l, r]*
| 3: | SphericalHarmonicY[l, m, \[Theta], \[Phi]])
| 4: |
| 5: | \[Psi]2[n_, l_, m_,
| 6: | r_, \[Theta]_, \[Phi]_] := (Abs[\[Psi][n, l, m,
| 7: | r, \[Theta], \[Phi]]])^2 |
Anschließend habe ich eine Transformation von Kugelkoordinaten in kartesische Koordinaten vorgenommen und auf [mm] \Psi [/mm] und [mm] |\Psi|^2 [/mm] angewandt (angedeutet durch das "c" dahinter):
1: |
| 2: | PolarToCartesian = {r -> Sqrt[x^2 + y^2 + z^2], \[Theta] ->
| 3: | ArcCos[z/r], \[Phi] -> ArcTan[y/x]};
| 4: |
| 5: | \[Psi]c[n_, l_, m_, x_, y_,
| 6: | z_] = \[Psi][n, l, m, r, \[Theta], \[Phi]] //. PolarToCartesian;
| 7: |
| 8: | \[Psi]2c[n_, l_, m_, x_, y_,
| 9: | z_] = \[Psi]2[n, l, m, r, \[Theta], \[Phi]] //. PolarToCartesian; |
Ausgabe von [mm] \Psi [/mm] mit vorgegebenen Quantenzahlen n,m,l liefert genau das, was rauskommen soll. Ein Contour-Plot von [mm] |\Psi|^2 [/mm] in x-z-Ebene sieht auch erwartungsgemäß aus:
ContourPlot[\[Psi]c[2, 1, 0, x, 0, z], {x, -8, 8}, {z, -8, 8}]
[Externes Bild http://s14.directupload.net/images/120127/temp/a25dqjxs.jpg]
Der ContourPlot3D von [mm] |\Psi|^2 [/mm] hingegen sieht in der Umgebung des Ursprung zerstört aus, die sphärische Figur ist nicht geschlossen:
1: | ContourPlot3D[\[Psi]2c[2, 1, 0, x, y, z], {x, -6, 6}, {y, -6,
| 2: | 6}, {z, -6, 6}] |
[Externes Bild http://s14.directupload.net/images/120127/temp/54lnb8px.jpg]
Nach ein wenig herumprobieren mit dem 2D-Contour-Plot in verschiedenen Ebenen meine ich herausgefunden zu haben, dass [mm] |\Psi|^2 [/mm] in/nahe der y-z-Ebene scheinbar unendliche Funktionswerte annimmt und folglich in jenen Intervallen nicht dargestellt werden kann.
Im kartesischen Koordinaten lautet [mm] |\Psi|^2 [/mm] für n=2, l=1, m=0:
[mm]|\Psi|^2=\bruch{e^{-Re[\wurzel{x^2+y^2+z^2}]}|z|^2}{32\pi}[/mm]
Mir ist nicht ersichtlich, wie sich damit für irgendeine Konstellation reeller x,y,z unendliche Funktionswerte ergeben sollen.
Übersehe ich einfache mathematische Gesetzmäßigkeiten, ist der Code falsch, habe ich Gedankenfehler?
Bin um jeden Ratschlag sehr dankbar.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo!
Ich habe keine Ahnung von Mathematica, und habe deine Ausführungen nicht ganz genau studiert, aber:
Das ist eher ein Diskretisierungsproblem. Im Prinzip wird Mathematica das Problem numerisch angehen, indem es z.B. zwei Werte fest hält, und den dritten numerisch so bestimmt, daß der ganze Term =1 ist. Auf diese weise ergibt sich ein Punkt, der zur Konturfläche gehört.
Aus verschiedenen Gründen kann es dann sein, daß manche Punkte dann nicht gefunden werden, und das erzeugt solche Probleme.
Mal ganz einfach: Wenn man die Funktionen [mm] \sqrt{1-x^2} [/mm] und [mm] -\sqrt{1-x^2} [/mm] plottet, sollte sich theoretisch ein Kreis ergeben.
Für gewöhnlich legt das Programm dafür eine xy-Tabelle mit sagen wir 20 Einträgen an. Wenn der Computer jetzt aber x=...-1.5; -1.3; -1.1; 0.9;... wählt, findet er als ersten Punkt, der zum Kreis gehört, (-0.9|0.43). Der Plot zeigt dann keinen geschlossenen Kreis, sondern er ist in der Nähe der x-Achse offen.
Abhilfe schafft in dem Fall, die Schrittweite so weit zu erhöhen, bis man den Effekt nicht mehr sieht. Vielleicht kannst du sowas in Mathematica auch machen? Dein Plot zeigt jedenfalls dadurch, daß da kleine rechteckige Bereiche fehlen, daß die Schrittweite nicht all zu fein ist.
|
|
|
|
|
Hallo und danke für deine Rückmeldung.
Daran habe ich auch schon gedacht, ich habe in Mathematica mal ein wenig mit PlotRange gespielt, dessen Funktion mir nicht ganz geläufig ist. Wählt man einen sehr hohen Wert, rechnet der Computer ewig, bis das Diagramm angezeigt wird, das Problem bleibt jedoch bestehen.
Ich bin weiterhin überzeugt davon, dass die Funktionswerte in einem bestimmten Intervall nach unendlich abhauen. Wähle ich z.B. x=0 und erstelle einen 2D-ContourPlot in der y-z-Ebene:
ContourPlot[\[Psi]c[2, 1, 0, 0, y, z], {y, -8, 8}, {z, -8, 8}]
bekomme ich folgende Fehlermeldung:
Power::infy : Infinite expression 1/0 encountered
|
|
|
|
|
Hallo!
Na, da sehe ich doch was. In den Umrechnungsfunktionen für die Koordinatensysteme tauchen zwei Brüche auf, z.B.
[mm]\phi=\arctan{y/x}[/mm].
Wenn du jetzt x=0 einsetzt, knallt es natürlich. Das passiert auch bei dem 3D-Plot.
Rein logisch ist das eigentlich nicht weiter schlimm, weil der Grenzwert des Bruchs unendlich ist, und der arctan dafür gegen einen festen Wert konvergiert. Ersetz den Term doch mal duch
[mm]\phi= \arcsin\frac{y}{\sqrt{x^2+y^2}}[/mm]
Rechnerisch ein wenig aufwändiger, dafür umgeht es das Problem mit dem Bruch.
|
|
|
|
|
Hallo und danke für das Feedback. Mit deiner Umrechnung klappen die 2D-Plots nun in allen Ebenen :)
Ein weiteres Problem bestand darin, dass Mathematica die Variablen noch als komplexwertig interpretiert hat, der Befehl "ComplexExpand" schafft.
Jetzt klappt's, vielen Dank :)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:01 Sa 28.01.2012 | Autor: | fencheltee |
> Hallo!
>
> Na, da sehe ich doch was. In den Umrechnungsfunktionen für
> die Koordinatensysteme tauchen zwei Brüche auf, z.B.
> [mm]\phi=\arctan{y/x}[/mm].
>
>
hallo,
alternativ sollte mathematica auch sowas wie atan2 besitzen, wo es diese sonderfälle direkt ausmerzt. laut google heisst es dort ArcTan[x,y]
> Wenn du jetzt x=0 einsetzt, knallt es natürlich. Das
> passiert auch bei dem 3D-Plot.
>
> Rein logisch ist das eigentlich nicht weiter schlimm, weil
> der Grenzwert des Bruchs unendlich ist, und der arctan
> dafür gegen einen festen Wert konvergiert. Ersetz den Term
> doch mal duch
>
> [mm]\phi= \arcsin\frac{y}{\sqrt{x^2+y^2}}[/mm]
>
> Rechnerisch ein wenig aufwändiger, dafür umgeht es das
> Problem mit dem Bruch.
>
gruß tee
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:38 So 29.01.2012 | Autor: | Peter_Pein |
Hallo,
nur am Rande: PlotRange ist eine Option, den Bereich auszuwählen. Die Zahl der verwendeten "Stützstellen" kann mit der Option PlotPoints geändert werden. Des Weiteren könnten in diesem Zusammenhang auch die Optionen WorkingPrecision und MaxRecursion positive Auswirkungen haben.
MaxRecursion und PlotPoints sollten aber bei ContourPlot3D (bzw. generell bei dreidimensionalen Plots sparsam verwendet werden, weil Speicherbedarf und Rechenzeit stark steigen).
Gruß,
Peter
|
|
|
|