Algorithmen¶
Diese Seite skizziert die wichtigsten numerischen Algorithmen, die PDIndexer intern verwendet. Sie ist eine migrierte und neu strukturierte Fassung des erläuternden PDF (PDIndexerAlgorithm.pdf), das früher der Distribution beigelegt war. Ziel ist es, zu vermitteln, was minimiert wird und wie es gelöst wird, anstatt vollständige mathematische Strenge zu bieten.
Drei Themen werden behandelt:
- Verfeinerung der Gitterkonstanten — lineare Methode der kleinsten Quadrate
- Peak-Anpassung — nichtlineare Methode der kleinsten Quadrate nach dem Marquardt-Verfahren sowie die Profilfunktionen
- Herleitung des kubischen Splines — Untergrundkurve
Zur Theorie der Zustandsgleichungen (EOS) siehe Zustandsgleichungen.
Verfeinerung der Gitterkonstanten¶
Verallgemeinerte lineare Methode der kleinsten Quadrate¶
Gegeben \( n \) Sätze von Beobachtungen \( (X^1_1, X^2_1, \dots, X^m_1, Z_1),\ (X^1_2, X^2_2, \dots, X^m_2, Z_2),\ \dots,\ (X^1_n, X^2_n, \dots, X^m_n, Z_n) \), wird die Anpassung der linearen Beobachtungsgleichung
über die \( m \) Parameter \( (a^1, a^2, \dots, a^m) \) durch Minimierung der Summe der quadrierten Residuen erreicht. In Matrixform,
wobei \( W \) eine Diagonalmatrix der Gewichte ist. Die Minimierung der gewichteten Quadratsumme
durch Nullsetzen ihrer Ableitung nach \( \mathbf{a} \),
ergibt die Lösung
Anpassung des reziproken metrischen Tensors¶
Bei der Verfeinerung der Gitterkonstanten hängt die Beobachtungsgleichung vom Kristallsystem ab, doch im allgemeinsten (triklinen) Fall wird die Beziehung zwischen dem Netzebenenabstand \( d \) und den Indizes \( (h,k,l) \),
als lineares Modell behandelt:
wobei \( a^*, b^*, \dots \) die reziproken Gitterkonstanten sind. Löst man dies mit der obigen linearen Methode der kleinsten Quadrate, erhält man die Komponenten des reziproken metrischen Tensors, aus denen die Gitterkonstanten folgen.
Wahl der Gewichte¶
Das Gewicht hängt vom Fehler ab. Unter der Annahme, dass der Fehler nur im Beugungswinkel \( 2\theta \) liegt, ist die Antwort von \( G = (1/d)^2 = 4\sin^2\theta/\lambda^2 \) auf \( \theta \)
sodass eine Änderung \( \delta\theta \) den Wert \( (1/d)^2 \) um \( \dfrac{4\sin(2\theta)}{\lambda^2}\delta\theta \) verschiebt. Daher ist \( 1/\sin^2(2\theta) \) (der Kehrwert des quadrierten Fehlers) ein geeignetes Gewicht für \( (1/d)^2 \):
Hier stellt \( 1/\sin^2(2\theta) \) nur das Verhältnis der inversen Varianzen der Punkte dar, nicht deren absoluten Wert, dennoch wird das Optimum weiterhin gefunden: In \( (X^{\mathsf{T}}W X)^{-1} X^{\mathsf{T}}W Y \) tritt der Faktor \( W \) zweimal auf, sodass sich die absolute Skala herauskürzt.
Parameterfehler¶
Die Fehler (Varianzen) von \( \mathbf{a} \) ergeben sich aus der Diagonale von \( (X^{\mathsf{T}}W X)^{-1} \), doch da \( W \) nur bis auf ein Verhältnis festgelegt wurde, muss die absolute Skala separat bestimmt werden. Unter Verwendung der Definition der Varianz,
(\( N \): Anzahl der Daten, \( P \): Anzahl der Parameter, \( \delta_i \): Residuum des \( i \)-ten Datenpunkts, \( s_i \): Varianz des \( i \)-ten Datenpunkts), wird die Varianzskala aus den erhaltenen Parametern festgelegt als
und ihre Quadratwurzel ist der Fehler. Dies ist der Fehler der reziproken Gitterkonstanten; um ihn in den Fehler der Gitterkonstanten umzurechnen, ist eine weitere Fehlerfortpflanzung erforderlich, die im Prinzip unkompliziert ist.
Peak-Anpassung¶
Marquardt-Verfahren¶
PDIndexer passt Peaks mit dem Marquardt-Verfahren (Levenberg–Marquardt) an, einem nichtlinearen iterativen Schema ähnlich dem Newton-Verfahren. Es verbindet schnelle Konvergenz mit Stabilität und findet das Optimum mit ausreichender Genauigkeit.
Sei die Anpassungsfunktion \( F = F(a_1, a_2, \dots, a_m, X) \) und das Residuum bei den Anfangsparametern \( \mathbf{a}^0 \)
Bilde die \( m\times m \)-Matrix \( \alpha \) und den \( m \)-Vektor \( \beta \) wie folgt. Nur die Diagonale mit \( (1+\lambda) \) zu multiplizieren ist die Kernidee des Marquardt-Verfahrens, wobei \( \lambda \) Stabilität und Konvergenzgeschwindigkeit steuert:
Die Parameter werden aktualisiert durch
Berechne das neue Residuum \( R' \) und:
- wenn \( R' < R \), übernimm die Aktualisierung und verkleinere \( \lambda \) (um einen Faktor von 0,1–0,5);
- wenn \( R' > R \), verwirf die Aktualisierung und vergrößere \( \lambda \) (um einen Faktor von 2–10).
Wiederhole, bis die Änderung von \( R \) hinreichend klein ist. Für \( \lambda \to 0 \) nähert sich das Verfahren dem quadratisch konvergenten Gauss–Newton-Verfahren an; für großes \( \lambda \) nähert es sich dem steilsten Abstieg entlang des Residuengradienten \( \nabla R \) an. Der kontinuierliche Wechsel zwischen beiden über \( \lambda \) ergibt eine stabile, schnelle Konvergenz.
Profilfunktionen¶
PDIndexer bietet die Pseudo-Voigt-Funktion (eine Mischung aus Gauss- und Lorentz-Funktion), die Pearson-VII-Funktion (eine Wahrscheinlichkeitsdichtefunktion) sowie deren asymmetrische Erweiterungen Split Pseudo Voigt / Split Pearson VII. Im Hinblick auf Geschwindigkeit und Konvergenzstabilität ist Symmetric Pseudo Voigt die Voreinstellung. Alle Funktionen sind auf die Fläche eins normiert.
Symmetric Pseudo Voigt
Split Pseudo Voigt (Toraya 1990, modifiziert)
Symmetric Pearson VII
Split Pearson VII (Toraya 1990, modifiziert)
Die ersten beiden sind symmetrisch um \( x=0 \), während die Split-Formen ihre Gestalt je nach Vorzeichen von \( x \) ändern, um Asymmetrie (etwa einen niederwinkligen Ausläufer) auszudrücken. Im Allgemeinen liefert Pearson VII tendenziell die bessere Anpassung (kleineres Residuum), während Pseudo Voigt tendenziell stabiler konvergiert.
Symbole¶
| Symbol | Bedeutung |
|---|---|
| \( H_k \) | Halbwertsbreite (FWHM) |
| \( \pi \) | die Kreiszahl |
| \( \eta \) (\( \eta_l, \eta_h \)) | Lorentz-/Gauss-Mischungsverhältnis (niederwinklige / hochwinklige Seite bei Split-Formen) |
| \( \Gamma \) | Gammafunktion |
| \( R \) (\( R_l, R_h \)) | Pearson-Exponent |
| \( A \) | Asymmetrieparameter |
| \( Z \) | Normierungskonstante (\( \sqrt{\pi\ln 2} \)) |
Anpassungsfunktion mit Untergrund¶
In der Praxis wird die Profilfunktion \( f \) um einen linearen Untergrund erweitert:
(\( I \): integrierte Intensität, \( B_1, B_2 \): linearer Untergrund, \( \Theta \): Peak-Zentrum, \( \theta \): beobachtete Position). Innerhalb eines gegebenen Bereichs werden die Parameter mit dem Marquardt-Verfahren so variiert, dass \( R = \sum (Y - F)^2 \) minimiert wird.
Die partiellen Ableitungen jeder Funktion sind komplex; das Marquardt-Verfahren verwendet diese analytischen Gradienten. Repräsentative Ausdrücke sind im Folgenden zur Referenz angegeben.
Partielle Ableitungen von Symmetric Pseudo Voigt
Mit \( u = \dfrac{\theta-\Theta}{H_k} \),
Partielle Ableitungen von Pearson VII
Die einfachen Ableitungen nach Intensität und Untergrund (\( \partial F/\partial I,\ \partial F/\partial B_1,\ \partial F/\partial B_2 \)) werden weggelassen. Das Originaldokument bezeichnet den Pearson-Exponenten sowohl mit \( R \) als auch mit \( m \) (dieselbe Größe). Mit \( u = \dfrac{\theta-\Theta}{H_k} \),
Herleitung des kubischen Splines¶
PDIndexer verwendet eine kubische Spline-Kurve, um den Untergrund zu zeichnen. Die wahre Form des Untergrunds lässt sich nicht exakt lösen, doch die Software erkennt automatisch die peakfreien Bereiche und verbindet die erkannten Punkte mit einem Spline zur Untergrundkurve. Ein Spline approximiert die Daten gleichmäßig, einschließlich ihrer Ableitungen, und die Approximation verbessert sich, je dichter die Datenpunkte gewählt werden.
Gegeben \( n \) Punkte \( (X_1,Y_1), (X_2,Y_2), \dots, (X_{n-1},Y_{n-1}), (X_n,Y_n) \), suchen wir eine Kurve, die auf jedem Intervall kubisch ist und so glatt anschließt, dass Wert, Steigung und Krümmung an jedem Punkt übereinstimmen (die beiden Endintervalle \( \{-\infty, X_1\} \) und \( \{X_n, \infty\} \) werden als linear angenommen).
Sei die Funktion auf dem Intervall \( \{X_{m-1}, X_m\} \)
Innere Punkte (\( 2 \le m \le n-1 \)). Die Stetigkeit von Wert, erster Ableitung und zweiter Ableitung ergibt
— das heißt, \( 4n-8 \) Bedingungen.
Anfang (\( m=1 \), linkes Endintervall ist linear):
— 4 Bedingungen. Das Ende (\( m=n \)) ergibt ebenso
— weitere 4 Bedingungen.
Insgesamt bestimmen \( 4n \) Bedingungen \( 4n \) Unbekannte, wodurch sich das Problem auf ein System simultaner Gleichungen reduziert. Schreibt man es als Matrix aus und invertiert sie, lässt es sich leicht lösen.
Verwandte Seiten¶
- 6. Beugungspeak-Anpassung — wie man es in der Praxis verwendet
- Zustandsgleichungen — EOS-Theorie wie die Birch–Murnaghan- und Mie–Grüneisen-Gleichungen