« Fonction de Faddeeva » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
m typographie
m typographie ; wikification
Ligne 9 : Ligne 9 :
Cette fonction apparaît dans divers problèmes physiques, généralement liés aux réponses électromagnétiques dans des milieux complexes :
Cette fonction apparaît dans divers problèmes physiques, généralement liés aux réponses électromagnétiques dans des milieux complexes :


* des problèmes impliquant des ondes de petite amplitude se propageant à travers des [[État plasma|plasmas]] [[Loi de distribution des vitesses de Maxwell|maxwelliens]], et apparaissant en particulier dans la [[permittivité]] du plasma dont sont dérivées les [[Relation de dispersion|relations de dispersion]], c'est pourquoi on l'appelle parfois '''fonction de dispersion du plasma <ref name="lehtinen">{{Lien web |auteur=Lehtinen |prénom=Nikolai G. |titre=Error functions |url=http://nlpc.stanford.edu/nleht/Science/reference/errorfun.pdf |série=Lehtinen webpage - Stanford University |date=April 23, 2010 |consulté le=October 8, 2019 |archive-url= |archive-date=}}</ref>''' <ref name="Zaghloul11">M. R. Zaghloul and A. N. Ali, ACM Transactions on Mathematical Software 38(2)15 (2011)</ref> (bien que ce nom soit parfois utilisé à la place pour la fonction redimensionnée {{math|1=''Z''(''z'') = i{{racine|{{mathPi}}}} ''w''(''z'')}} définie par ''Fried et Conte'', 1961 <ref name="lehtinen" /> <ref>[http://farside.ph.utexas.edu/ Richard Fitzpatrick], [http://farside.ph.utexas.edu/teaching/plasma/lectures/node87.html Plasma Dispersion Function], ''[http://farside.ph.utexas.edu/teaching/plasma/plasma.html Plasma Physics]'' lecture notes, University of Texas at Austin (2011/3/31).</ref> ).
* des problèmes impliquant des ondes de petite amplitude se propageant à travers des [[État plasma|plasmas]] [[Loi de distribution des vitesses de Maxwell|maxwelliens]], et apparaissant en particulier dans la [[permittivité]] du plasma dont sont dérivées les [[Relation de dispersion|relations de dispersion]], c'est pourquoi on l'appelle parfois '''fonction de dispersion du plasma'''<ref name="lehtinen">{{Lien web |auteur=Lehtinen |prénom=Nikolai G. |titre=Error functions |url=http://nlpc.stanford.edu/nleht/Science/reference/errorfun.pdf |série=Lehtinen webpage - Stanford University |date=April 23, 2010 |consulté le=October 8, 2019 |archive-url= |archive-date=}}</ref>{{,}}<ref name="Zaghloul11">M. R. Zaghloul and A. N. Ali, ACM Transactions on Mathematical Software 38(2)15 (2011)</ref> (bien que ce nom soit parfois utilisé à la place pour la fonction redimensionnée {{math|1=''Z''(''z'') = i{{racine|{{mathPi}}}} ''w''(''z'')}} définie par ''Fried et Conte'', 1961 <ref name="lehtinen" />{{,}}<ref>[http://farside.ph.utexas.edu/ Richard Fitzpatrick], [http://farside.ph.utexas.edu/teaching/plasma/lectures/node87.html Plasma Dispersion Function], ''[http://farside.ph.utexas.edu/teaching/plasma/plasma.html Plasma Physics]'' lecture notes, University of Texas at Austin (2011/3/31).</ref> ).
* les fonctions de [[permittivité]] infrarouge des oxydes amorphes ont des résonances (dues aux [[Phonon|phonons]] ) parfois trop compliquées à adapter à l'aide de simples oscillateurs harmoniques. Le [[Modèle d'oscillateur Brendel-Bormann|modèle d'oscillateur de Brendel-Bormann]] utilise une superposition infinie d'oscillateurs ayant des fréquences légèrement différentes, avec une distribution gaussienne. <ref name="BrendelBormann1992">{{Article|auteur1=Brendel|prénom1=R.|auteur2=Bormann|prénom2=D.|titre=An infrared dielectric function model for amorphous solids|périodique=Journal of Applied Physics|volume=71|numéro=1|pages=1|année=1992|issn=0021-8979|doi=10.1063/1.350737|bibcode=1992JAP....71....1B}}</ref> La réponse intégrée peut être écrite en termes de fonctions de Faddeeva.
* les fonctions de [[permittivité]] infrarouge des oxydes amorphes ont des résonances (dues aux [[Phonon|phonons]] ) parfois trop compliquées à adapter à l'aide de simples oscillateurs harmoniques. Le [[Modèle d'oscillateur Brendel-Bormann|modèle d'oscillateur de Brendel-Bormann]] utilise une superposition infinie d'oscillateurs ayant des fréquences légèrement différentes, avec une distribution gaussienne<ref name="BrendelBormann1992">{{Article|auteur1=Brendel|prénom1=R.|auteur2=Bormann|prénom2=D.|titre=An infrared dielectric function model for amorphous solids|périodique=Journal of Applied Physics|volume=71|numéro=1|pages=1|année=1992|issn=0021-8979|doi=10.1063/1.350737|bibcode=1992JAP....71....1B}}</ref>. La réponse intégrée peut être écrite en termes de fonctions de Faddeeva.
* la fonction de Faddeeva est également utilisée dans l'analyse des ondes électromagnétiques du type utilisé dans la radio AM.
* la fonction de Faddeeva est également utilisée dans l'analyse des ondes électromagnétiques du type utilisé dans la radio AM.
* Les ondes de sol sont des ondes polarisées verticalement se propageant sur un sol avec perte avec une résistivité et une permittivité finies.
* Les ondes de sol sont des ondes polarisées verticalement se propageant sur un sol avec perte avec une résistivité et une permittivité finies.
* la fonction de Faddeeva décrit également les changements dans les [[Section efficace|sections efficaces des neutrons]] des matériaux lorsque la température varie. <ref>{{Lien web |titre=OpenMC Windowed Multipole |url=https://docs.openmc.org/en/v0.12.0/methods/cross_sections.html?highlight=faddeeva#windowed-multipole-representation |date=2020-06-01 |consulté le=2020-12-20}}</ref>
* la fonction de Faddeeva décrit également les changements dans les [[Section efficace|sections efficaces des neutrons]] des matériaux lorsque la température varie<ref>{{Lien web |titre=OpenMC Windowed Multipole |url=https://docs.openmc.org/en/v0.12.0/methods/cross_sections.html?highlight=faddeeva#windowed-multipole-representation |date=2020-06-01 |consulté le=2020-12-20}}</ref>


== Propriétés ==
== Propriétés ==
Ligne 19 : Ligne 19 :
=== Parties réelles et imaginaires ===
=== Parties réelles et imaginaires ===
La décomposition en parties réelles et imaginaires s'écrit généralement
La décomposition en parties réelles et imaginaires s'écrit généralement

: <math>w(x+\mathrm{i}y)=V(x,y)+\mathrm{i}L(x,y)</math> ,
: <math>w(x+\mathrm{i}y)=V(x,y)+\mathrm{i}L(x,y)</math> ,


où ''V'' et ''L'' sont appelés les ''fonctions de Voigt'' réelles et imaginaires, puisque ''V''(''x',''y'') est le [[Loi de Voigt|profil de Voigt]] (à un préfacteur près).
où ''V'' et ''L'' sont appelés les ''fonctions de Voigt'' réelles et imaginaires, puisque ''V''(''x'',''y'') est le [[Loi de Voigt|profil de Voigt]] (à un préfacteur près).


=== Inversion de signe ===
=== Inversion de signe ===
Pour les arguments à signe inversé, on a les deux égalités suivantes :
Pour les arguments à signe inversé, on a les deux égalités suivantes :

: <math>w(-z)=2\mathrm{e}^{-z^2} - w(z)</math>
: <math>w(-z)=2\mathrm{e}^{-z^2} - w(z)</math>


et
et

: <math>w(-z)=w\left(z^*\right)^*</math>
: <math>w(-z)=w\left(z^*\right)^*</math>


Ligne 36 : Ligne 33 :


=== Relation avec la fonction d'erreur complémentaire ===
=== Relation avec la fonction d'erreur complémentaire ===
La fonction de Faddeeva évaluée sur des arguments imaginaires est égale à la fonction d'erreur complémentaire mise à l'échelle ( <math>\mathrm{erfcx}</math> ) :
La fonction de Faddeeva évaluée sur des arguments imaginaires est égale à la fonction d'erreur complémentaire mise à l'échelle ({{math|erfcx}}) :

: <math>w(\mathrm{i}z)=\mathrm{erfcx}(z)=\mathrm{e}^{z^2}\mathrm{erfc}(z)</math> ,
: <math>w(\mathrm{i}z)=\mathrm{erfcx}(z)=\mathrm{e}^{z^2}\mathrm{erfc}(z)</math> ,


où erfc désigne la [[Fonction d'erreur|fonction d'erreur complémentaire]] . Pour les grands réels ''x'' :
{{math|erfc}} désigne la [[Fonction d'erreur|fonction d'erreur complémentaire]]. Pour de grandes valeurs réelles ''x'' :

: <math>\mathrm{erfcx}(x)\approx \frac{1}{\sqrt{\pi} x}</math>
: <math>\mathrm{erfcx}(x)\approx \frac{1}{\sqrt{\pi} x}</math>


=== Dérivée ===
=== Dérivée ===
Dans certaines applications, il est nécessaire de connaître non seulement les valeurs originales de la fonction de Faddeeva, mais également celles de sa dérivée (par exemple dans un modèle de [[Moindres carrés non linéaires|régression des moindres carrés non linéaires]] en [[spectroscopie]] ). Sa dérivée est donnée par l'équation différentielle <ref>{{Cite report |first=Slava |last=Avetisov |title=A Least-Squares Fitting Technique for Spectral Analysis of Direct and Frequency-Modulation Lineshapes |url=https://lup.lub.lu.se/search/ws/files/5695063/2297010.pdf |publisher=Department of Physics, Lund University}}</ref> <ref>{{Lien web |titre=Faddeeva (or Faddeyeva) function - 7.10 Derivatives |url=https://dlmf.nist.gov/7.10 |série=Digital Library of Mathematical Functions |éditeur=National Institute of Standards and Technology |date=2010 |consulté le=June 23, 2022}}</ref>:
Dans certaines applications, il est nécessaire de connaître non seulement les valeurs originales de la fonction de Faddeeva, mais également celles de sa dérivée (par exemple dans un modèle de [[Moindres carrés non linéaires|régression des moindres carrés non linéaires]] en [[spectroscopie]] ). Sa dérivée est donnée par l'équation différentielle <ref>{{Cite report |first=Slava |last=Avetisov |title=A Least-Squares Fitting Technique for Spectral Analysis of Direct and Frequency-Modulation Lineshapes |url=https://lup.lub.lu.se/search/ws/files/5695063/2297010.pdf |publisher=Department of Physics, Lund University}}</ref>{{,}}<ref>{{Lien web |titre=Faddeeva (or Faddeyeva) function - 7.10 Derivatives |url=https://dlmf.nist.gov/7.10 |série=Digital Library of Mathematical Functions |éditeur=National Institute of Standards and Technology |date=2010 |consulté le=June 23, 2022}}</ref>:


: <math>\frac{\mathrm{d}w(z)}{\mathrm{d}z} = \frac{2\mathrm{i}}{\sqrt{\pi}} - 2\cdot z\cdot w(z)</math>
: <math>\frac{\mathrm{d}w(z)}{\mathrm{d}z} = \frac{2\mathrm{i}}{\sqrt{\pi}} - 2\cdot z\cdot w(z)</math>


Cette expression peut également être décomposée davantage en termes de changements dans la partie réelle et imaginaire de la fonction de Faddeeva, avec <math>\Re\left(w\left(z\right)\right) = \Re_{w}</math> et <math>\Im\left(w\left(z\right)\right) = \Im_{w}</math> . Fondamentalement, cela nécessite une connaissance de la partie réelle et imaginaire du produit <math>z\cdot w\left(z\right)</math> . En utilisant la définition ci-dessus <math>z = x + \mathrm{i}y</math>, la dérivée peut donc être décomposée en [[Dérivée partielle|dérivées partielles]] par rapport à <math>x</math> et <math>y</math> comme suit:
Cette expression peut également être décomposée davantage en termes de changements dans la partie réelle et imaginaire de la fonction de Faddeeva, avec <math>\Re\left(w\left(z\right)\right) = \Re_{w}</math> et <math>\Im\left(w\left(z\right)\right) = \Im_{w}</math> . Fondamentalement, cela nécessite une connaissance de la partie réelle et imaginaire du produit {{math|''z'' ''w''(''z'')}}. En utilisant la définition ci-dessus <math>z = x + \mathrm{i}y</math>, la dérivée peut donc être décomposée en [[Dérivée partielle|dérivées partielles]] par rapport à <math>x</math> et <math>y</math> comme suit :


: <math>\frac{\mathrm{d}\Re_{w}}{\mathrm{d}x} = 2\cdot\left(y\cdot\Im_{w} - x\cdot\Re_{w}\right) = \frac{\mathrm{d}\Im_{w}}{\mathrm{d}y}</math>{{Spaces|6|type}}et{{Spaces|6|type}}<math>\frac{\mathrm{d}\Re_{w}}{\mathrm{d}y} = -2\cdot\left(\frac{1}{\sqrt{\pi}} - x\cdot\Im_{w} - y\cdot\Re_{w}\right) = -\frac{\mathrm{d}\Im_{w}}{\mathrm{d}x}</math>
: <math>\frac{\mathrm{d}\Re_{w}}{\mathrm{d}x} = 2\cdot\left(y\cdot\Im_{w} - x\cdot\Re_{w}\right) = \frac{\mathrm{d}\Im_{w}}{\mathrm{d}y}</math>{{Spaces|6|type}}et{{Spaces|6|type}}<math>\frac{\mathrm{d}\Re_{w}}{\mathrm{d}y} = -2\cdot\left(\frac{1}{\sqrt{\pi}} - x\cdot\Im_{w} - y\cdot\Re_{w}\right) = -\frac{\mathrm{d}\Im_{w}}{\mathrm{d}x}</math>
Ligne 66 : Ligne 61 :
La fonction a été compilée par [[Vera Faddeeva]] et N.N. Terentyev en 1954. <ref>[[Vera Faddeeva|V. N. Faddeeva]] and N. N. Terent'ev: Tables of values of the function <math>w(z)=\exp(-z^2)(1+2i/\sqrt{\pi}\textstyle\int_0^z\exp(t^2)\text{d}t)</math> for complex argument. ''Gosud. Izdat. Teh.-Teor. Lit.'', Moscow, 1954; English transl., Pergamon Press, New York, 1961. Unverified citation, copied from ''Poppe and Wijers'' (1990).</ref> Elle apparaît comme une fonction sans nom ''w(z)'' dans ''[[Handbook of Mathematical Functions|Abramowitz et Stegun]]'' (1964), formule 7.1.3. Le nom de '''fonction de Faddeeva''' a apparemment été introduit par GPM Poppe et CMJ Wijers en 1990 ; auparavant, elle était connue sous le nom de fonction de Kramp (probablement d'après [[Christian Kramp]] ). <ref>For instance in Al'pert, Space Science Reviews 6, 781 (1967), formula (3.13), with reference to Faddeeva and Terent'ev.</ref>
La fonction a été compilée par [[Vera Faddeeva]] et N.N. Terentyev en 1954. <ref>[[Vera Faddeeva|V. N. Faddeeva]] and N. N. Terent'ev: Tables of values of the function <math>w(z)=\exp(-z^2)(1+2i/\sqrt{\pi}\textstyle\int_0^z\exp(t^2)\text{d}t)</math> for complex argument. ''Gosud. Izdat. Teh.-Teor. Lit.'', Moscow, 1954; English transl., Pergamon Press, New York, 1961. Unverified citation, copied from ''Poppe and Wijers'' (1990).</ref> Elle apparaît comme une fonction sans nom ''w(z)'' dans ''[[Handbook of Mathematical Functions|Abramowitz et Stegun]]'' (1964), formule 7.1.3. Le nom de '''fonction de Faddeeva''' a apparemment été introduit par GPM Poppe et CMJ Wijers en 1990 ; auparavant, elle était connue sous le nom de fonction de Kramp (probablement d'après [[Christian Kramp]] ). <ref>For instance in Al'pert, Space Science Reviews 6, 781 (1967), formula (3.13), with reference to Faddeeva and Terent'ev.</ref>


Les premières implémentations utilisaient les méthodes de Walter Gautschi (1969-1970 ; [[ACM Transactions on Mathematical Software|ACM Algorithm]] 363) <ref>See references 3 and 4 in ''Poppe and Wijers'' (1990).</ref> ou de J. Humlicek (1982). <ref>J. Humlicek, J. Quant. Spectrosc. Radiat. Transfer 27, 437-444 (1982).</ref> Un algorithme plus efficace a été proposé par Poppe et Wijers (1990 ; ACM Algorithm 680). <ref>G. P. M. Poppe and C. M. J. Wijers, [[ACM Transactions on Mathematical Software]] 16, 38-46 (1990).</ref> JAC Weideman (1994) a proposé un algorithme particulièrement court qui ne prend pas plus de huit lignes de code [[MATLAB]] . <ref>J. A. C. Weideman, SIAM J. Numer. Anal. 31, 1497-1518 (1994).</ref> Zaghloul et Ali ont mis en lumière les lacunes des algorithmes précédents et en ont proposé un nouveau (2011 ; ACM Algorithm 916). <ref name="Zaghloul11">M. R. Zaghloul and A. N. Ali, ACM Transactions on Mathematical Software 38(2)15 (2011)</ref> Un autre algorithme a été proposé par M. Abrarov et BM Quine (2011/2012). <ref>S. M. Abrarov and B. M. Quine, Appl. Math. Comp. 218, 1894-1902 (2011) and arXiv:1205.1768v1 (2012).</ref>
Les premières implémentations utilisaient les méthodes de Walter Gautschi (1969-1970 ; [[ACM Transactions on Mathematical Software|ACM Algorithm]] 363) <ref>See references 3 and 4 in ''Poppe and Wijers'' (1990).</ref> ou de J. Humlicek (1982). <ref>J. Humlicek, J. Quant. Spectrosc. Radiat. Transfer 27, 437-444 (1982).</ref> Un algorithme plus efficace a été proposé par Poppe et Wijers (1990 ; ACM Algorithm 680). <ref>G. P. M. Poppe and C. M. J. Wijers, [[ACM Transactions on Mathematical Software]] 16, 38-46 (1990).</ref> JAC Weideman (1994) a proposé un algorithme particulièrement court qui ne prend pas plus de huit lignes de code [[MATLAB]]<ref>J. A. C. Weideman, SIAM J. Numer. Anal. 31, 1497-1518 (1994).</ref>. Zaghloul et Ali ont mis en lumière les lacunes des algorithmes précédents et en ont proposé un nouveau (2011 ; ACM Algorithm 916)<ref name="Zaghloul11">M. R. Zaghloul and A. N. Ali, ACM Transactions on Mathematical Software 38(2)15 (2011)</ref>. Un autre algorithme a été proposé par M. Abrarov et BM Quine (2011/2012)<ref>S. M. Abrarov and B. M. Quine, Appl. Math. Comp. 218, 1894-1902 (2011) and arXiv:1205.1768v1 (2012).</ref>.


== Implémentations ==
== Implémentations ==
Deux implémentations logicielles, gratuites pour un usage non commercial uniquement, <ref>{{Lien web |titre=Software Copyright Notice |url=http://www.acm.org/publications/policies/softwarecrnotice}}; hence they are not ''free'' in the sense of [[Free/Libre Open Source Software|free and open-source software]]</ref> ont été publiées dans [[ACM Transactions on Mathematical Software]] (TOMS) sous le nom d'algorithme 680 (en [[Fortran]], <ref>http://www.cs.kent.ac.uk/people/staff/trh/CALGO/680.gz {{Lien brisé |date=February 2022}}</ref> traduit plus tard en [[C (langage)|C]] ) <ref>{{Lien web |titre=Collision formulas |url=http://spec.jpl.nasa.gov/ftp/pub/calpgm/collisions/ZWOFZ.C |série=NASA |consulté le=10 April 2023}}</ref> et d'algorithme 916 par Zaghloul et Ali (dans [[MATLAB]] ). <ref>Mofreh R. Zaghloul and Ahmed N. Ali, "[https://dx.doi.org/10.1145/2049673.2049679 Algorithm 916: Computing the Faddeyeva and Voigt Functions]," ''ACM Trans. Math. Soft.'' '''38''' (2), 15 (2011). Preprint available at [[arxiv:1106.0151|arXiv:1106.0151]].</ref>
Deux implémentations logicielles, gratuites pour un usage non commercial uniquement<ref>{{Lien web |titre=Software Copyright Notice |url=http://www.acm.org/publications/policies/softwarecrnotice}}; hence they are not ''free'' in the sense of [[Free/Libre Open Source Software|free and open-source software]]</ref>, ont été publiées dans [[ACM Transactions on Mathematical Software]] (TOMS) sous le nom d'algorithme 680 (en [[Fortran]], <ref>http://www.cs.kent.ac.uk/people/staff/trh/CALGO/680.gz {{Lien brisé |date=February 2022}}</ref> traduit plus tard en [[C (langage)|C]] ) <ref>{{Lien web |titre=Collision formulas |url=http://spec.jpl.nasa.gov/ftp/pub/calpgm/collisions/ZWOFZ.C |série=NASA |consulté le=10 April 2023}}</ref> et d'algorithme 916 par Zaghloul et Ali (dans [[MATLAB]])<ref>Mofreh R. Zaghloul and Ahmed N. Ali, "[https://dx.doi.org/10.1145/2049673.2049679 Algorithm 916: Computing the Faddeyeva and Voigt Functions]," ''ACM Trans. Math. Soft.'' '''38''' (2), 15 (2011). Preprint available at [[arxiv:1106.0151|arXiv:1106.0151]].</ref>.


Une implémentation C ou C++ [[Free/Libre Open Source Software|gratuite et open source]] dérivée d'une combinaison de l'algorithme 680 et de l'algorithme 916 (utilisant différents algorithmes pour différents ''z'' ) est également disponible sous la [[licence MIT]], <ref name="Faddeeva_w">[http://ab-initio.mit.edu/Faddeeva Faddeeva Package], free/open-source C++ implementation, accessed 13 October 2012.</ref> et est maintenue en tant que package de bibliothèque ''libcerf'' . <ref>{{Lien web |titre=Libcerf &#91;MLZ Scientific Computing Group&#93; |url=https://jugit.fz-juelich.de/mlz/libcerf}}</ref> Cette implémentation est également disponible sous forme de [[Plugin|plug-in]] pour Matlab, <ref name="Faddeeva_w" /> [[GNU Octave]], <ref name="Faddeeva_w" /> et en [[Python (langage)|Python]] via [[SciPy|Scipy]] sous le nom <code>scipy.special.wofz</code> (qui était à l'origine le code TOMS 680, mais a été remplacé en raison de problèmes de droits d'auteur <ref>{{Lien web |titre=SciPy's complex erf code is not free/open-source? (Trac #1741) · Issue #2260 · scipy/scipy |url=https://github.com/scipy/scipy/issues/2260 |série=[[GitHub]]}}</ref> ).
Une implémentation C ou C++ [[Free/Libre Open Source Software|gratuite et open source]] dérivée d'une combinaison de l'algorithme 680 et de l'algorithme 916 (utilisant différents algorithmes pour différents ''z'') est également disponible sous la [[licence MIT]]<ref name="Faddeeva_w">[http://ab-initio.mit.edu/Faddeeva Faddeeva Package], free/open-source C++ implementation, accessed 13 October 2012.</ref>, et est maintenue en tant que package de bibliothèque ''libcerf''<ref>{{Lien web |titre=Libcerf &#91;MLZ Scientific Computing Group&#93; |url=https://jugit.fz-juelich.de/mlz/libcerf}}</ref>. Cette implémentation est également disponible sous forme de [[Plugin|plug-in]] pour Matlab<ref name="Faddeeva_w" />, [[GNU Octave]]<ref name="Faddeeva_w" />, et en [[Python (langage)|Python]] via [[SciPy|Scipy]] sous le nom <code>scipy.special.wofz</code> (qui était à l'origine le code TOMS 680, mais a été remplacé en raison de problèmes de droits d'auteur <ref>{{Lien web |titre=SciPy's complex erf code is not free/open-source? (Trac #1741) · Issue #2260 · scipy/scipy |url=https://github.com/scipy/scipy/issues/2260 |série=[[GitHub]]}}</ref>).


Pour un calcul rapide mais toujours précis de la fonction de dispersion du plasma <math>Z(z)</math>, l'approximation de Padé au pôle J s'avère utile, <ref>{{Article|auteur1=Xie|prénom1=Hua-sheng|titre=BO: A unified tool for plasma waves and instabilities analysis|périodique=Computer Physics Communications|volume=244|pages=343–371|date=November 2019|issn=0010-4655|doi=10.1016/j.cpc.2019.06.014|arxiv=1901.06902|lire en ligne=http://dx.doi.org/10.1016/j.cpc.2019.06.014}}</ref> soit,
Pour un calcul rapide mais toujours précis de la fonction de dispersion du plasma <math>Z(z)</math>, l'approximation de Padé au pôle J s'avère utile<ref>{{Article|auteur1=Xie|prénom1=Hua-sheng|titre=BO: A unified tool for plasma waves and instabilities analysis|périodique=Computer Physics Communications|volume=244|pages=343–371|date=November 2019|issn=0010-4655|doi=10.1016/j.cpc.2019.06.014|arxiv=1901.06902|lire en ligne=http://dx.doi.org/10.1016/j.cpc.2019.06.014}}</ref>, soit :
: <math>Z(z)=\sum_{j=1}^{J}\frac{b_j}{z-c_j}.</math>
: <math>Z(z)=\sum_{j=1}^{J}\frac{b_j}{z-c_j}.</math>



Version du 30 avril 2024 à 12:03

Fonction de Faddeeva sur le plan complexe

La fonction de Faddeeva ou fonction de Kramp est une fonction d'erreur complémentaire complexe échelonnée ,

Elle est liée à l'intégrale de Fresnel, à l'intégrale de Dawson et à la fonction de Voigt.

Cette fonction apparaît dans divers problèmes physiques, généralement liés aux réponses électromagnétiques dans des milieux complexes :

  • des problèmes impliquant des ondes de petite amplitude se propageant à travers des plasmas maxwelliens, et apparaissant en particulier dans la permittivité du plasma dont sont dérivées les relations de dispersion, c'est pourquoi on l'appelle parfois fonction de dispersion du plasma[1],[2] (bien que ce nom soit parfois utilisé à la place pour la fonction redimensionnée Z(z) = iπ w(z) définie par Fried et Conte, 1961 [1],[3] ).
  • les fonctions de permittivité infrarouge des oxydes amorphes ont des résonances (dues aux phonons ) parfois trop compliquées à adapter à l'aide de simples oscillateurs harmoniques. Le modèle d'oscillateur de Brendel-Bormann utilise une superposition infinie d'oscillateurs ayant des fréquences légèrement différentes, avec une distribution gaussienne[4]. La réponse intégrée peut être écrite en termes de fonctions de Faddeeva.
  • la fonction de Faddeeva est également utilisée dans l'analyse des ondes électromagnétiques du type utilisé dans la radio AM.
  • Les ondes de sol sont des ondes polarisées verticalement se propageant sur un sol avec perte avec une résistivité et une permittivité finies.
  • la fonction de Faddeeva décrit également les changements dans les sections efficaces des neutrons des matériaux lorsque la température varie[5]

Propriétés

Parties réelles et imaginaires

La décomposition en parties réelles et imaginaires s'écrit généralement

,

V et L sont appelés les fonctions de Voigt réelles et imaginaires, puisque V(x,y) est le profil de Voigt (à un préfacteur près).

Inversion de signe

Pour les arguments à signe inversé, on a les deux égalités suivantes :

et

où * désigne la conjugaison complexe.

Relation avec la fonction d'erreur complémentaire

La fonction de Faddeeva évaluée sur des arguments imaginaires est égale à la fonction d'erreur complémentaire mise à l'échelle (erfcx) :

,

erfc désigne la fonction d'erreur complémentaire. Pour de grandes valeurs réelles x :

Dérivée

Dans certaines applications, il est nécessaire de connaître non seulement les valeurs originales de la fonction de Faddeeva, mais également celles de sa dérivée (par exemple dans un modèle de régression des moindres carrés non linéaires en spectroscopie ). Sa dérivée est donnée par l'équation différentielle [6],[7]:

Cette expression peut également être décomposée davantage en termes de changements dans la partie réelle et imaginaire de la fonction de Faddeeva, avec et . Fondamentalement, cela nécessite une connaissance de la partie réelle et imaginaire du produit z w(z). En utilisant la définition ci-dessus , la dérivée peut donc être décomposée en dérivées partielles par rapport à et comme suit :

      et      
      et      

Un exemple pratique d'utilisation de ces dérivées partielles peut être trouvé ici .

Représentation intégrale

La fonction de Faddeeva peut s'écrire sous la forme d'une intégrale :

ce qui signifie qu'il s'agit de la convolution d'une gaussienne avec un pôle simple.

Histoire

La fonction a été compilée par Vera Faddeeva et N.N. Terentyev en 1954. [8] Elle apparaît comme une fonction sans nom w(z) dans Abramowitz et Stegun (1964), formule 7.1.3. Le nom de fonction de Faddeeva a apparemment été introduit par GPM Poppe et CMJ Wijers en 1990 ; auparavant, elle était connue sous le nom de fonction de Kramp (probablement d'après Christian Kramp ). [9]

Les premières implémentations utilisaient les méthodes de Walter Gautschi (1969-1970 ; ACM Algorithm 363) [10] ou de J. Humlicek (1982). [11] Un algorithme plus efficace a été proposé par Poppe et Wijers (1990 ; ACM Algorithm 680). [12] JAC Weideman (1994) a proposé un algorithme particulièrement court qui ne prend pas plus de huit lignes de code MATLAB[13]. Zaghloul et Ali ont mis en lumière les lacunes des algorithmes précédents et en ont proposé un nouveau (2011 ; ACM Algorithm 916)[2]. Un autre algorithme a été proposé par M. Abrarov et BM Quine (2011/2012)[14].

Implémentations

Deux implémentations logicielles, gratuites pour un usage non commercial uniquement[15], ont été publiées dans ACM Transactions on Mathematical Software (TOMS) sous le nom d'algorithme 680 (en Fortran, [16] traduit plus tard en C ) [17] et d'algorithme 916 par Zaghloul et Ali (dans MATLAB)[18].

Une implémentation C ou C++ gratuite et open source dérivée d'une combinaison de l'algorithme 680 et de l'algorithme 916 (utilisant différents algorithmes pour différents z) est également disponible sous la licence MIT[19], et est maintenue en tant que package de bibliothèque libcerf[20]. Cette implémentation est également disponible sous forme de plug-in pour Matlab[19], GNU Octave[19], et en Python via Scipy sous le nom scipy.special.wofz (qui était à l'origine le code TOMS 680, mais a été remplacé en raison de problèmes de droits d'auteur [21]).

Pour un calcul rapide mais toujours précis de la fonction de dispersion du plasma , l'approximation de Padé au pôle J s'avère utile[22], soit :

L'approximation ci-dessus est valable pour le plan supérieur. Pour faiblement proche de l'axe réel, c'est-à-dire non loin de l'axe réel du plan inférieur, l'approximation ci-dessus est également valable. Pour un calcul précis de , on peut utiliser

Un codage de l’approche du pôle J ci-dessus et une comparaison avec une fonction de dispersion de plasma précise peuvent être trouvés.

Voir également

Références

  1. a et b Lehtinen, « Error functions », Lehtinen webpage - Stanford University, (consulté le )
  2. a et b M. R. Zaghloul and A. N. Ali, ACM Transactions on Mathematical Software 38(2)15 (2011)
  3. Richard Fitzpatrick, Plasma Dispersion Function, Plasma Physics lecture notes, University of Texas at Austin (2011/3/31).
  4. Brendel et Bormann, « An infrared dielectric function model for amorphous solids », Journal of Applied Physics, vol. 71, no 1,‎ , p. 1 (ISSN 0021-8979, DOI 10.1063/1.350737, Bibcode 1992JAP....71....1B)
  5. « OpenMC Windowed Multipole », (consulté le )
  6. (en) Slava Avetisov A Least-Squares Fitting Technique for Spectral Analysis of Direct and Frequency-Modulation Lineshapes (rapport), Department of Physics, Lund University (lire en ligne)
  7. « Faddeeva (or Faddeyeva) function - 7.10 Derivatives », Digital Library of Mathematical Functions, National Institute of Standards and Technology, (consulté le )
  8. V. N. Faddeeva and N. N. Terent'ev: Tables of values of the function for complex argument. Gosud. Izdat. Teh.-Teor. Lit., Moscow, 1954; English transl., Pergamon Press, New York, 1961. Unverified citation, copied from Poppe and Wijers (1990).
  9. For instance in Al'pert, Space Science Reviews 6, 781 (1967), formula (3.13), with reference to Faddeeva and Terent'ev.
  10. See references 3 and 4 in Poppe and Wijers (1990).
  11. J. Humlicek, J. Quant. Spectrosc. Radiat. Transfer 27, 437-444 (1982).
  12. G. P. M. Poppe and C. M. J. Wijers, ACM Transactions on Mathematical Software 16, 38-46 (1990).
  13. J. A. C. Weideman, SIAM J. Numer. Anal. 31, 1497-1518 (1994).
  14. S. M. Abrarov and B. M. Quine, Appl. Math. Comp. 218, 1894-1902 (2011) and arXiv:1205.1768v1 (2012).
  15. « Software Copyright Notice »; hence they are not free in the sense of free and open-source software
  16. http://www.cs.kent.ac.uk/people/staff/trh/CALGO/680.gz Modèle {{Lien brisé}} : paramètres « url » et « titre » manquants. ,
  17. « Collision formulas », NASA (consulté le )
  18. Mofreh R. Zaghloul and Ahmed N. Ali, "Algorithm 916: Computing the Faddeyeva and Voigt Functions," ACM Trans. Math. Soft. 38 (2), 15 (2011). Preprint available at arXiv:1106.0151.
  19. a b et c Faddeeva Package, free/open-source C++ implementation, accessed 13 October 2012.
  20. « Libcerf [MLZ Scientific Computing Group] »
  21. « SciPy's complex erf code is not free/open-source? (Trac #1741) · Issue #2260 · scipy/scipy », GitHub
  22. Xie, « BO: A unified tool for plasma waves and instabilities analysis », Computer Physics Communications, vol. 244,‎ , p. 343–371 (ISSN 0010-4655, DOI 10.1016/j.cpc.2019.06.014, arXiv 1901.06902, lire en ligne)