Algorithmes¶
Cette page présente les principaux algorithmes numériques utilisés en interne par PDIndexer. Il s'agit d'une version migrée et réorganisée du PDF explicatif (PDIndexerAlgorithm.pdf) qui était autrefois fourni avec la distribution. L'objectif est de transmettre ce qui est minimisé et comment cela est résolu plutôt qu'une rigueur mathématique complète.
Trois sujets sont abordés :
- Affinement des paramètres de maille — moindres carrés linéaires
- Ajustement des pics — moindres carrés non linéaires par la méthode de Marquardt, et les fonctions de profil
- Dérivation de la spline cubique — courbe de fond continu
Pour la théorie des équations d'état (EOS), voir Équations d'état.
Affinement des paramètres de maille¶
Moindres carrés linéaires généralisés¶
Étant donné \( n \) jeux d'observations \( (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) \), l'ajustement de l'équation d'observation linéaire
sur les \( m \) paramètres \( (a^1, a^2, \dots, a^m) \) s'obtient en minimisant la somme des carrés des résidus. Sous forme matricielle,
où \( W \) est une matrice diagonale de poids. La minimisation de la somme pondérée des carrés
en annulant sa dérivée par rapport à \( \mathbf{a} \),
donne la solution
Ajustement du tenseur métrique réciproque¶
Pour l'affinement des paramètres de maille, l'équation d'observation dépend du système cristallin, mais dans le cas le plus général (triclinique), la relation entre la distance interréticulaire \( d \) et les indices \( (h,k,l) \),
est traitée comme un modèle linéaire :
où \( a^*, b^*, \dots \) sont les paramètres de maille réciproques. La résolution par les moindres carrés linéaires ci-dessus fournit les composantes du tenseur métrique réciproque, d'où découlent les paramètres de maille.
Choix des poids¶
Le poids dépend de l'erreur. En supposant que l'erreur ne porte que sur l'angle de diffraction \( 2\theta \), la réponse de \( G = (1/d)^2 = 4\sin^2\theta/\lambda^2 \) à \( \theta \) est
de sorte qu'une variation \( \delta\theta \) déplace \( (1/d)^2 \) de \( \dfrac{4\sin(2\theta)}{\lambda^2}\delta\theta \). Par conséquent, \( 1/\sin^2(2\theta) \) (l'inverse de l'erreur au carré) est un poids approprié pour \( (1/d)^2 \) :
Ici, \( 1/\sin^2(2\theta) \) ne représente que le rapport des inverses des variances des points, et non leur valeur absolue, mais l'optimum est tout de même retrouvé : dans \( (X^{\mathsf{T}}W X)^{-1} X^{\mathsf{T}}W Y \), le facteur \( W \) apparaît deux fois, de sorte que l'échelle absolue s'annule.
Erreurs des paramètres¶
Les erreurs (variances) de \( \mathbf{a} \) proviennent de la diagonale de \( (X^{\mathsf{T}}W X)^{-1} \), mais comme \( W \) n'a été fixé qu'à un rapport près, l'échelle absolue doit être déterminée séparément. À l'aide de la définition de la variance,
(\( N \) : nombre de données, \( P \) : nombre de paramètres, \( \delta_i \) : résidu de la \( i \)-ème donnée, \( s_i \) : variance de la \( i \)-ème donnée), l'échelle de la variance est fixée à partir des paramètres obtenus par
et sa racine carrée donne l'erreur. Il s'agit de l'erreur des paramètres de maille réciproques ; la convertir en erreur des paramètres de maille nécessite de propager l'erreur plus loin, ce qui est simple en principe.
Ajustement des pics¶
Méthode de Marquardt¶
PDIndexer ajuste les pics avec la méthode de Marquardt (Levenberg–Marquardt), un schéma itératif non linéaire semblable à la méthode de Newton. Elle allie convergence rapide et stabilité et trouve l'optimum avec une précision suffisante.
Soit la fonction d'ajustement \( F = F(a_1, a_2, \dots, a_m, X) \) et le résidu aux paramètres initiaux \( \mathbf{a}^0 \)
On construit la matrice \( m\times m \) \( \alpha \) et le vecteur de dimension \( m \) \( \beta \) comme suit. Multiplier uniquement la diagonale par \( (1+\lambda) \) est l'idée clé de la méthode de Marquardt, \( \lambda \) contrôlant la stabilité et la vitesse de convergence :
Les paramètres sont mis à jour par
On calcule le nouveau résidu \( R' \) et :
- si \( R' < R \), on accepte la mise à jour et on réduit \( \lambda \) (d'un facteur 0,1 à 0,5) ;
- si \( R' > R \), on rejette la mise à jour et on augmente \( \lambda \) (d'un facteur 2 à 10).
On répète jusqu'à ce que la variation de \( R \) soit suffisamment faible. Lorsque \( \lambda \to 0 \), la méthode se rapproche de la méthode de Gauss–Newton à convergence quadratique ; pour de grandes valeurs de \( \lambda \), elle se rapproche de la descente la plus raide le long du gradient des résidus \( \nabla R \). En basculant continûment entre les deux via \( \lambda \), on obtient une convergence stable et rapide.
Fonctions de profil¶
PDIndexer propose la fonction Pseudo Voigt (un mélange de gaussienne et de lorentzienne), la fonction Pearson VII (une fonction de densité de probabilité), et leurs extensions asymétriques Split Pseudo Voigt / Split Pearson VII. Pour la rapidité et la stabilité de convergence, Symmetric Pseudo Voigt est la fonction par défaut. Toutes les fonctions sont normalisées à une aire unité.
Symmetric Pseudo Voigt
Split Pseudo Voigt (Toraya 1990, modifié)
Symmetric Pearson VII
Split Pearson VII (Toraya 1990, modifié)
Les deux premières sont symétriques par rapport à \( x=0 \), tandis que les formes split changent de forme selon le signe de \( x \) pour exprimer l'asymétrie (telle qu'une traîne du côté des bas angles). En général, Pearson VII tend à donner le meilleur ajustement (résidu plus faible), tandis que Pseudo Voigt tend à converger plus stablement.
Symboles¶
| Symbole | Signification |
|---|---|
| \( H_k \) | largeur à mi-hauteur (FWHM) |
| \( \pi \) | la constante du cercle |
| \( \eta \) (\( \eta_l, \eta_h \)) | rapport de mélange lorentzien/gaussien (côté bas angle / haut angle pour les formes split) |
| \( \Gamma \) | fonction gamma |
| \( R \) (\( R_l, R_h \)) | exposant de Pearson |
| \( A \) | paramètre d'asymétrie |
| \( Z \) | constante de normalisation (\( \sqrt{\pi\ln 2} \)) |
Fonction d'ajustement avec fond continu¶
En pratique, la fonction de profil \( f \) est étendue avec un fond continu linéaire :
(\( I \) : intensité intégrée, \( B_1, B_2 \) : fond continu linéaire, \( \Theta \) : centre du pic, \( \theta \) : position observée). Dans une plage donnée, les paramètres sont variés par la méthode de Marquardt de manière à minimiser \( R = \sum (Y - F)^2 \).
Les dérivées partielles de chaque fonction sont complexes ; la méthode de Marquardt utilise ces gradients analytiques. Des expressions représentatives sont données ci-dessous à titre de référence.
Dérivées partielles de Symmetric Pseudo Voigt
En posant \( u = \dfrac{\theta-\Theta}{H_k} \),
Dérivées partielles de Pearson VII
Les dérivées simples par rapport à l'intensité et au fond continu (\( \partial F/\partial I,\ \partial F/\partial B_1,\ \partial F/\partial B_2 \)) sont omises. Le document original désigne l'exposant de Pearson à la fois par \( R \) et par \( m \) (la même quantité). En posant \( u = \dfrac{\theta-\Theta}{H_k} \),
Dérivation de la spline cubique¶
PDIndexer utilise une courbe spline cubique pour tracer le fond continu. La forme réelle du fond continu ne peut pas être résolue exactement, mais le logiciel détecte automatiquement les régions sans pic et relie les points détectés par une spline pour former la courbe de fond continu. Une spline approche les données de manière uniforme, y compris leurs dérivées, et l'approximation s'améliore à mesure que les points de données sont rendus plus denses.
Étant donné \( n \) points \( (X_1,Y_1), (X_2,Y_2), \dots, (X_{n-1},Y_{n-1}), (X_n,Y_n) \), on cherche une courbe qui est cubique sur chaque intervalle et se raccorde de façon lisse, de sorte que valeur, pente et courbure coïncident en chaque point (les deux intervalles d'extrémité \( \{-\infty, X_1\} \) et \( \{X_n, \infty\} \) étant pris linéaires).
Soit la fonction sur l'intervalle \( \{X_{m-1}, X_m\} \)
Points intérieurs (\( 2 \le m \le n-1 \)). La continuité de la valeur, de la dérivée première et de la dérivée seconde donne
— soit \( 4n-8 \) conditions.
Début (\( m=1 \), l'intervalle d'extrémité gauche est linéaire) :
— 4 conditions. La fin (\( m=n \)) donne de même
— 4 conditions supplémentaires.
Au total, \( 4n \) conditions déterminent \( 4n \) inconnues, ce qui ramène le problème à un système d'équations simultanées. En l'écrivant sous forme matricielle et en l'inversant, on le résout aisément.
Pages associées¶
- 6. Ajustement des pics de diffraction — utilisation pratique
- Équations d'état — théorie EOS telle que les équations de Birch–Murnaghan et de Mie–Grüneisen