3  Grundlagen der Quantenmechanik”

Dieses Kapitel führt die drei Grundpfeiler ein, auf denen Hartree-Fock und DFT aufgebaut sind: die Wellenfunktion als Zustandsbeschreibung, den Hamiltonoperator als Energieoperator, und die stationäre Schrödinger-Gleichung als das Eigenwertproblem, das wir (näherungsweise) lösen wollen. Am Ende des Kapitels formulieren wir dieses Problem konkret für unser Leitbeispiel, das Wassermolekül H₂O, und visualisieren es mit PySCF.


3.1 Die Wellenfunktion

3.1.1 Zustand und Wahrscheinlichkeit

In der klassischen Mechanik beschreibt man den Zustand eines Teilchens vollständig durch seinen Ort \(\mathbf{r}\) und seinen Impuls \(\mathbf{p}\). In der Quantenmechanik ist das nicht möglich – Ort und Impuls können nicht gleichzeitig beliebig genau bekannt sein. Stattdessen wird der Zustand eines Teilchens durch eine Wellenfunktion \(\psi(\mathbf{r})\) beschrieben, eine komplexwertige Funktion des Ortes.

Die physikalische Bedeutung der Wellenfunktion ist die Born-Interpretation:

\[|\psi(\mathbf{r})|^2 \, d\mathbf{r}\]

ist die Wahrscheinlichkeit, das Teilchen im Volumenelement \(d\mathbf{r}\) um den Punkt \(\mathbf{r}\) zu finden. Die Funktion \(|\psi(\mathbf{r})|^2\) ist damit eine Wahrscheinlichkeitsdichte – analog zur Dichtefunktion einer Wahrscheinlichkeitsverteilung in der Statistik.

Damit die Gesamtwahrscheinlichkeit, das Teilchen irgendwo zu finden, gleich 1 ist, muss die Wellenfunktion normiert sein:

\[\int_{\mathbb{R}^3} |\psi(\mathbf{r})|^2 \, d\mathbf{r} = 1 \tag{1.1}\]

HinweisWichtige Eigenschaften der Wellenfunktion
  • \(\psi(\mathbf{r})\) ist im Allgemeinen komplex – die physikalische Bedeutung liegt in \(|\psi|^2\), nicht in \(\psi\) selbst.
  • \(\psi\) muss quadratintegrabel sein (d.h. \(\int |\psi|^2 d\mathbf{r} < \infty\)).
  • \(\psi\) muss stetig und stetig differenzierbar sein.
  • \(\psi(\mathbf{r}) \to 0\) für \(|\mathbf{r}| \to \infty\) (gebundene Zustände).

3.1.2 Visualisierung: Was ist eine Wellenfunktion?

Bevor wir zu Molekülen übergehen, betrachten wir das einfachste Beispiel: ein Elektron in einem eindimensionalen “Kasten” der Länge \(L\) (unendlich hohe Wände). Die Lösung ist analytisch bekannt und illustriert alle wesentlichen Eigenschaften.

Code
L = 1.0
x = np.linspace(0, L, 500)

fig, axes = plt.subplots(2, 3, figsize=(10, 5), sharey='row')
colors = ['#2166ac', '#d6604d', '#4dac26']

for n, (ax_top, ax_bot, col) in enumerate(zip(axes[0], axes[1], colors), start=1):
    psi   = np.sqrt(2/L) * np.sin(n * np.pi * x / L)
    prob  = psi**2

    ax_top.plot(x, psi, color=col, lw=2)
    ax_top.axhline(0, color='gray', lw=0.8, ls='--')
    ax_top.set_title(f'$n = {n}$', fontsize=13)
    ax_top.set_ylabel('$\\psi_n(x)$' if n == 1 else '')
    ax_top.set_xticks([])

    ax_bot.fill_between(x, prob, alpha=0.35, color=col)
    ax_bot.plot(x, prob, color=col, lw=2)
    ax_bot.set_xlabel('$x / L$')
    ax_bot.set_ylabel('$|\\psi_n(x)|^2$' if n == 1 else '')

fig.suptitle('Teilchen im Kasten', fontsize=14, y=1.01)
plt.tight_layout()
plt.show()
Abbildung 3.1: Wellenfunktionen (oben) und Wahrscheinlichkeitsdichten (unten) für ein Teilchen im Kasten (n = 1, 2, 3). Die Knotenzahl nimmt mit n zu; höhere n bedeuten höhere Energie.

Drei Beobachtungen aus dieser Abbildung, die für die ganze Quantenchemie zentral sind:

  1. Quantisierung: Nur bestimmte Wellenfunktionen (und damit Energien) sind erlaubt – jene, die an den Wänden verschwinden. Das ist eine direkte Konsequenz der Randbedingungen.
  2. Knotenregel: Die \(n\)-te Wellenfunktion hat \(n-1\) Knoten. Mehr Knoten bedeuten mehr Krümmung, was einer höheren kinetischen Energie entspricht.
  3. Aufenthaltswahrscheinlichkeit: \(|\psi|^2\) zeigt, wo sich das Teilchen bevorzugt aufhält. Für \(n=1\) ist das die Mitte des Kastens, für \(n=2\) gibt es zwei Maxima.

3.2 Observablen und Operatoren

3.2.1 Der Impulsoperator

In der Quantenmechanik wird jeder messbaren Grösse (Observable) ein linearer Operator zugeordnet. Der wichtigste Beispiel: Der Impulsoperator für die \(x\)-Richtung ist

\[\hat{p}_x = \frac{\hbar}{i} \frac{\partial}{\partial x}\]

wobei \(\hbar = h/(2\pi)\) das reduzierte Planck’sche Wirkungsquantum ist (\(\hbar \approx 1.055 \times 10^{-34}\) J·s). In drei Dimensionen:

\[\hat{\mathbf{p}} = \frac{\hbar}{i} \nabla = \frac{\hbar}{i}\left(\frac{\partial}{\partial x},\, \frac{\partial}{\partial y},\,\frac{\partial}{\partial z}\right)\]

3.2.2 Der Hamiltonoperator

Der Hamiltonoperator \(\hat{H}\) ist der Operator, dessen Eigenwerte die möglichen Energien des Systems sind. Er setzt sich zusammen aus dem Operator für die kinetische Energie \(\hat{T}\) und dem Operator für die potentielle Energie \(\hat{V}\):

\[\hat{H} = \hat{T} + \hat{V}\]

Der Operator für die kinetische Energie eines Elektrons der Masse \(m_e\) ist

\[\hat{T} = -\frac{\hbar^2}{2m_e} \nabla^2\]

wobei \(\nabla^2 = \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2} + \frac{\partial^2}{\partial z^2}\) der Laplace-Operator ist.

TippHerkunft von \(\hat{T}\)

In der klassischen Mechanik ist die kinetische Energie \(T = p^2 / (2m)\). Man ersetzt den Impuls durch den Operator \(\hat{p} = (\hbar/i)\nabla\) und erhält

\[\hat{T} = \frac{\hat{p}^2}{2m} = \frac{1}{2m}\left(\frac{\hbar}{i}\nabla\right)^2 = -\frac{\hbar^2}{2m}\nabla^2\]

Diese “Rezept” – klassischen Ausdruck aufschreiben, Impulse durch Operatoren ersetzen – ist die systematische Konstruktionsvorschrift für Quantenoperatoren.

3.2.3 Erwartungswerte

Der Erwartungswert eines Operators \(\hat{A}\) im Zustand \(\psi\) ist der Mittelwert, den man bei sehr vielen Messungen an identisch präparierten Systemen erhält:

\[\langle A \rangle = \int \psi^*(\mathbf{r})\, \hat{A}\, \psi(\mathbf{r})\, d\mathbf{r} \tag{1.2}\]

Für den Hamiltonoperator liefert das den Energieerwartungswert:

\[\langle E \rangle = \int \psi^*\, \hat{H}\, \psi \, d\mathbf{r} \tag{1.3}\]


3.3 Die stationäre Schrödinger-Gleichung

3.3.1 Herleitung als Eigenwertproblem

Zustände mit definierter Energie – sogenannte stationäre Zustände – sind diejenigen Wellenfunktionen, für die der Energieerwartungswert nicht nur ein Mittelwert ist, sondern ein scharf definierter Wert \(E\). Das führt direkt auf das Eigenwertproblem:

\[\hat{H}\,\psi = E\,\psi \tag{1.4}\]

Das ist die stationäre Schrödinger-Gleichung. Sie hat dieselbe Struktur wie das Matrixeigenwertproblem \(A\mathbf{v} = \lambda\mathbf{v}\) aus der linearen Algebra:

  • \(\hat{H}\) spielt die Rolle der Matrix \(A\)
  • \(\psi\) ist der “Eigenvektor” (hier: eine Funktion)
  • \(E\) ist der Eigenwert (hier: eine Energie)

Da \(\hat{H}\) selbstadjungiert ist, sind alle Eigenwerte \(E\) reell – was physikalisch bedeutet, dass Energiemessungen stets reelle Zahlen liefern.

3.3.2 Das Variationsprinzip

Für numerische Berechnungen ist das Variationsprinzip von zentraler Bedeutung:

WichtigVariationsprinzip

Für jede normierte Testfunktion \(\psi_\text{test}\) gilt:

\[\langle E \rangle[\psi_\text{test}] = \int \psi_\text{test}^*\, \hat{H}\, \psi_\text{test}\, d\mathbf{r} \geq E_0\]

wobei \(E_0\) die Grundzustandsenergie (kleinster Eigenwert von \(\hat{H}\)) ist. Gleichheit gilt genau dann, wenn \(\psi_\text{test}\) die wahre Grundzustandswellenfunktion ist.

Das Variationsprinzip erlaubt es, die Schrödinger-Gleichung als Minimierungsproblem zu formulieren: Man sucht die Funktion \(\psi\), die \(\langle E \rangle[\psi]\) minimiert. Genau das tun Hartree-Fock und DFT – mit verschiedenen Einschränkungen an die zugelassenen Testfunktionen.

Code
# Harmonischer Oszillator: H = -ℏ²/(2m) d²/dx² + ½mω²x²
# Testfunktion: Gauss ψ_σ(x) = (2πσ²)^(-1/4) exp(-x²/(4σ²))
# Analytisches Ergebnis: <E>(σ) = ℏ²/(8mσ²) + mω²σ²/2
# In natürl. Einheiten (ℏ=m=ω=1): <E>(σ) = 1/(8σ²) + σ²/2

sigma = np.linspace(0.3, 2.5, 300)
E_test = 1/(8*sigma**2) + sigma**2/2   # in Einheiten von ℏω
E0 = 0.5                                # exakte Grundzustandsenergie = ℏω/2

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(sigma, E_test, '#2166ac', lw=2.5, label=r'$\langle E \rangle[\psi_\sigma]$')
ax.axhline(E0, color='#d6604d', lw=1.8, ls='--', label=r'$E_0 = \hbar\omega/2$ (exakt)')
sigma_opt = (1/4)**0.5
ax.axvline(sigma_opt, color='gray', lw=1.2, ls=':')
ax.annotate(r'$\sigma_\mathrm{opt}$', xy=(sigma_opt, 0.55),
             ha='center', fontsize=11, color='gray')
ax.set_xlabel(r'Breite der Testfunktion $\sigma$', fontsize=12)
ax.set_ylabel(r'$\langle E \rangle$ / $\hbar\omega$', fontsize=12)
ax.set_title('Variationsprinzip am harmonischen Oszillator', fontsize=13)
ax.legend(fontsize=11)
ax.set_ylim(0.3, 2.0)
plt.tight_layout()
plt.show()
Abbildung 3.2: Illustration des Variationsprinzips: Jede Testfunktion liefert eine Energie ≥ E₀. Gaussfunktionen mit verschiedenen Breiten σ als Testfunktionen für den harmonischen Oszillator (E₀ = ℏω/2). Das Minimum liegt bei σ_opt.

3.4 Der Hamiltonoperator für Moleküle

3.4.1 Alle Beiträge zur Energie

Ein Molekül mit \(N_n\) Kernen und \(N_e\) Elektronen hat einen Hamiltonoperator, der fünf Beiträge enthält:

\[\hat{H} = \underbrace{-\sum_i \frac{\hbar^2}{2m_e}\nabla_i^2}_{\hat{T}_e} + \underbrace{-\sum_I \frac{\hbar^2}{2M_I}\nabla_I^2}_{\hat{T}_N} + \underbrace{-\sum_i\sum_I \frac{Z_I e^2}{4\pi\varepsilon_0\, r_{iI}}}_{\hat{V}_{eN}} + \underbrace{\frac{1}{2}\sum_{i\neq j} \frac{e^2}{4\pi\varepsilon_0\, r_{ij}}}_{\hat{V}_{ee}} + \underbrace{\frac{1}{2}\sum_{I\neq J} \frac{Z_I Z_J e^2}{4\pi\varepsilon_0\, R_{IJ}}}_{\hat{V}_{NN}} \tag{1.5}\]

Term Bedeutung
\(\hat{T}_e\) Kinetische Energie der Elektronen
\(\hat{T}_N\) Kinetische Energie der Kerne
\(\hat{V}_{eN}\) Coulomb-Anziehung Elektronen–Kerne
\(\hat{V}_{ee}\) Coulomb-Abstossung Elektronen–Elektronen ← das Problem
\(\hat{V}_{NN}\) Coulomb-Abstossung Kerne–Kerne

Der Term \(\hat{V}_{ee}\) koppelt alle Elektronenkoordinaten miteinander und macht eine exakte analytische Lösung für mehr als zwei Teilchen unmöglich.

3.4.2 Die Born-Oppenheimer-Näherung

Der entscheidende Vereinfachungsschritt: Kerne sind 1000–10’000-mal schwerer als Elektronen und bewegen sich daher viel langsamer. Man kann annehmen, dass die Elektronen sich bei jeder Kernkonfiguration sofort im Gleichgewicht befinden. Formal bedeutet das: Man friert die Kernpositionen \(\{\mathbf{R}_I\}\) ein und löst nur die elektronische Schrödinger-Gleichung:

\[\hat{H}_\text{el}\,\psi(\mathbf{r};\mathbf{R}) = E(\mathbf{R})\,\psi(\mathbf{r};\mathbf{R}) \tag{1.6}\]

mit dem elektronischen Hamiltonoperator

\[\hat{H}_\text{el} = \underbrace{-\sum_i \frac{\hbar^2}{2m_e}\nabla_i^2}_{\hat{T}_e} - \underbrace{\sum_i\sum_I \frac{Z_I e^2}{4\pi\varepsilon_0\, r_{iI}}}_{\hat{V}_{eN}} + \underbrace{\frac{1}{2}\sum_{i\neq j} \frac{e^2}{4\pi\varepsilon_0\, r_{ij}}}_{\hat{V}_{ee}} \tag{1.7}\]

Die Kernkoordinaten \(\mathbf{R}\) erscheinen dabei als feste Parameter, nicht als dynamische Variablen. Die Lösung \(E(\mathbf{R})\) als Funktion der Kernpositionen ist die Potentialenergieoberfläche – ihre Minima entsprechen stabilen Molekülgeometrien.

HinweisWas die Born-Oppenheimer-Näherung bedeutet

Man löst ein kleineres Problem: statt \(3(N_e + N_n)\) gekoppelter Koordinaten behandelt man nur \(3N_e\) elektronische Koordinaten, mit den Kernpositionen als bekannte externe Parameter. Das ist eine sehr gute Näherung für Grundzustände.

Ab jetzt meinen wir mit \(\hat{H}\) stets den elektronischen Hamiltonoperator \(\hat{H}_\text{el}\), und die Kernabstossungsenergie \(V_{NN}\) addieren wir am Ende als klassischen Konstantterm.


3.5 Anwendung: Das Wassermolekül H₂O

Wasser besteht aus einem Sauerstoffatom (\(Z_O = 8\)) und zwei Wasserstoffatomen (\(Z_H = 1\)), also insgesamt \(N_e = 10\) Elektronen und \(N_n = 3\) Kernen.

Der elektronische Hamiltonoperator lautet explizit:

\[\hat{H}_\text{el} = -\sum_{i=1}^{10} \frac{\hbar^2}{2m_e}\nabla_i^2 - \sum_{i=1}^{10}\left(\frac{8e^2}{4\pi\varepsilon_0\, r_{iO}} + \frac{e^2}{4\pi\varepsilon_0\, r_{iH_1}} + \frac{e^2}{4\pi\varepsilon_0\, r_{iH_2}}\right) + \frac{1}{2}\sum_{i\neq j}^{10} \frac{e^2}{4\pi\varepsilon_0\, r_{ij}} \tag{1.8}\]

Das ist ein Operator auf einem Raum von Funktionen, der von \(10 \times 3 = 30\) kontinuierlichen Koordinaten abhängt. Eine exakte Lösung ist ausgeschlossen – wir brauchen Näherungsverfahren.

3.5.1 Geometrie und erste PySCF-Schritte

Code
from pyscf import gto, scf

# Gleichgewichtsgeometrie von H2O (experimentell, in Angström)
# O-H Bindungslänge: 0.9572 Å, H-O-H Winkel: 104.52°
mol = gto.Mole()
mol.atom = '''
    O   0.000000   0.000000   0.117176
    H   0.000000   0.756950  -0.468703
    H   0.000000  -0.756950  -0.468703
'''
mol.basis = 'sto-3g'   # minimaler Basissatz – Details in Kapitel 04
mol.charge = 0
mol.spin = 0           # alle Elektronen gepaart (Singulett)
mol.verbose = 0        # keine Ausgabe während setup
mol.build()

print(f"Molekül:         {mol.atom_symbol(0)}-{mol.atom_symbol(1)}-{mol.atom_symbol(2)}")
print(f"Anzahl Elektronen: {mol.nelectron}")
print(f"Anzahl Basisfkt.:  {mol.nao_nr()}")
print(f"Kernladungszahlen: O={mol.atom_charge(0)}, H={mol.atom_charge(1)}, H={mol.atom_charge(2)}")
Molekül:         O-H-H
Anzahl Elektronen: 10
Anzahl Basisfkt.:  7
Kernladungszahlen: O=8, H=1, H=1
Code
fig, ax = plt.subplots(figsize=(5, 4))

coords = np.array([
    [0.000,  0.000,  0.117],   # O
    [0.000,  0.757, -0.469],   # H1
    [0.000, -0.757, -0.469],   # H2
])

# Atome zeichnen
colors_atoms = {'O': '#d6604d', 'H': '#4393c3'}
radii        = {'O': 300,       'H': 150}
labels       = ['O', 'H', 'H']

for coord, label in zip(coords, labels):
    ax.scatter(coord[1], coord[2],
               s=radii[label], c=colors_atoms[label],
               zorder=3, edgecolors='white', linewidths=1.5)
    ax.text(coord[1]+0.04, coord[2]+0.04, label, fontsize=13, fontweight='bold',
            color=colors_atoms[label])

# Bindungen
for h_idx in [1, 2]:
    ax.plot([coords[0,1], coords[h_idx,1]],
            [coords[0,2], coords[h_idx,2]],
            'k-', lw=2.5, zorder=2)

# Winkelmarkierung
from matplotlib.patches import Arc
arc = Arc((coords[0,1], coords[0,2]), 0.5, 0.5,
          angle=0, theta1=220, theta2=320,
          color='gray', lw=1.2, ls='--')
ax.add_patch(arc)
ax.text(0.0, -0.35, '104.5°', ha='center', fontsize=10, color='gray')

# Bindungslängenbeschriftung
mid = (coords[0] + coords[1]) / 2
ax.text(mid[1]+0.05, mid[2], '0.957 Å', fontsize=9, color='gray')

ax.set_xlim(-1.2, 1.2)
ax.set_ylim(-0.9, 0.5)
ax.set_xlabel('y / Å', fontsize=11)
ax.set_ylabel('z / Å', fontsize=11)
ax.set_title('Gleichgewichtsgeometrie H₂O', fontsize=13)
ax.set_aspect('equal')
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
Abbildung 3.3: Gleichgewichtsgeometrie von H₂O. Die Koordinaten entsprechen der experimentellen Struktur (O-H: 0.957 Å, H-O-H: 104.5°).

3.5.2 Was PySCF intern mit dieser Geometrie macht

Code
import numpy as np

# Überlappmatrix S (wird in Kapitel 03 zentral)
# S_{μν} = ∫ φ_μ(r) φ_ν(r) dr
S = mol.intor('int1e_ovlp')

print("Überlappmatrix S (10×10, STO-3G Basissatz):")
print("  Zeilen/Spalten = Basisfunktionen (1 pro AO)")
print(f"  Dimension: {S.shape}")
print(f"  Diagonale (immer 1, normierte Basisfkt.): {np.diag(S).round(3)}")
print(f"\n  Grösster Nicht-Diagonal-Eintrag: {np.max(np.abs(S - np.eye(S.shape[0]))):.4f}")
print("  → Basisfunktionen sind nicht orthogonal (Details in Kap. 03 + 04)")
Überlappmatrix S (10×10, STO-3G Basissatz):
  Zeilen/Spalten = Basisfunktionen (1 pro AO)
  Dimension: (7, 7)
  Diagonale (immer 1, normierte Basisfkt.): [1. 1. 1. 1. 1. 1. 1.]

  Grösster Nicht-Diagonal-Eintrag: 0.4748
  → Basisfunktionen sind nicht orthogonal (Details in Kap. 03 + 04)
HinweisWas ist die Überlappmatrix?

Die Einträge der Überlappmatrix messen, wie stark sich zwei Basisfunktionen \(\phi_\mu\) und \(\phi_\nu\) räumlich überlappen: \(S_{\mu\nu} = \int \phi_\mu(\mathbf{r})\,\phi_\nu(\mathbf{r})\,d\mathbf{r}\). Auf der Diagonale steht immer 1 (normierte Funktionen). Ausserdiagonale Einträge \(\neq 0\) bedeuten, dass die Basis nicht orthogonal ist – ein wichtiger Unterschied zur Standardsituation in der linearen Algebra, den die Roothaan-Gleichungen (Kapitel 03) berücksichtigen müssen.


3.6 Zusammenfassung

Das elektronische Problem für H₂O ist damit vollständig formuliert:

\[\hat{H}_\text{el}\,\psi(\mathbf{r}_1, \ldots, \mathbf{r}_{10}) = E\,\psi(\mathbf{r}_1, \ldots, \mathbf{r}_{10})\]

Ingredienz Bedeutung Bekannt?
\(\hat{H}_\text{el}\) Elektronischer Hamiltonoperator ✓ (Gl. 1.7)
\(\psi\) Wellenfunktion (10 Elektronen, 30 Koordinaten) ✗ gesucht
\(E\) Elektronische Energie ✗ gesucht

Das Problem: \(\psi\) hängt von 30 kontinuierlichen Variablen ab. Selbst auf einem groben Gitter mit 10 Punkten pro Koordinate wären das \(10^{30}\) Gitterpunkte – eine hoffnungslose Zahl.

Die Lösung: Näherungsverfahren, die die Suche auf einen handhabbareren Unterraum einschränken. Das ist das Thema der nächsten Kapitel. Als erstes müssen wir aber verstehen, warum mehrere Elektronen eine spezielle mathematische Behandlung erfordern.

TippVorschau

Kapitel 02 führt das Konzept der Antisymmetrie und die Slater-Determinante ein – die fundamentale Antwort auf die Frage, wie eine Wellenfunktion für mehrere ununterscheidbare Elektronen aussehen muss.