Accueil

Fonction gamma

Programmation de fonctions spéciales

1 Fonction erreur

1 Fonction erreur

2 Fonction gamma

3 Fonction de Bessel  J


  La fonction erreur, erf(x), permet d'exprimer la marge d'erreur des évaluations statistiques

  Son complément, erfc(x) = 1 - erf(x), intervient dans la diffusion :
- diffusion de la chaleur dans un milieux semi-infini à température de surface constante
- diffusion des espèces chimiques dans des milieux quasi infini à concentration superficielle constante.

N.B.  Dans ces pages, destinées à la programmation, les formules classiques sont supposées connues et ne seront ni démontrées ni commentées.


1.1 Définition

1.2 Programmation

1.2.1 Développement en série

  Partant du développement de la fonction exponentielle  :

( 1 . 1 )

  Etant donné le rapport entre deux termes successifs, le termes Tn+1 sera calculé à partir du terme Tn selon :

d'où ce court sous programme

Public Function Erf_Dev(X)
T = X
S = T
For J = 0 To 200
      T = -T * X ^ 2 * (2 * J + 1) / (J + 1) / (2 * J + 3)
      S = S + T
      If Abs(T) < 1E-17 Then Exit For
Next J
Erf_Dev = S / Sqr(Atn(1))
End Function

1.2.2 Développement asymptotique 

( 1 . 2 )

  Ici aussi, le recours au rapport de deux termes successifs évite de calculer les factorielles.

Public Function Erf_Ass(X)
Pi = 4*Atn(1)
Lim = Int(X ^ 2 - 0.5)
S = 1
T = 1
Deno = 1 / (2 * X ^ 2)
For I = 2 To Lim
      T = -T * (2 * I - 1) * Deno
      S = S + T
Next I
Erf_Ass = 1 - S / (Exp(X ^ 2) * X *  Sqr(Pi))
End Function

1.2.3 Intégration numérique

 La fonction erreur est une intégrale définie, cette troisième méthode intègre numériquement avec les coefficients de pondération calculés dans les pages consacrées à l'intégration numérique.

Public Function Erf_Int(X)
N = 300
Pas = X / N
S = (1 + Exp(-(N * Pas) ^ 2)) * 5257 / 17280
S = S + (Exp(-(Pas) ^ 2) + Exp(-((N - 1) * Pas) ^ 2)) * 22081 / 15120
S = S + (Exp(-(2 * Pas) ^ 2) + Exp(-((N - 2) * Pas) ^ 2)) * 54851 / 120960
S = S + (Exp(-(3 * Pas) ^ 2) + Exp(-((N - 3) * Pas) ^ 2)) * 103 / 70
S = S + (Exp(-(4 * Pas) ^ 2) + Exp(-((N - 4) * Pas) ^ 2)) * 89437 / 120960
S = S + (Exp(-(5 * Pas) ^ 2) + Exp(-((N - 5) * Pas) ^ 2)) * 16367 / 15120
S = S + (Exp(-(6 * Pas) ^ 2) + Exp(-((N - 6) * Pas) ^ 2)) * 23917 / 24192
For J = 7 To N - 7
      S = S + Exp(-(J * Pas) ^ 2)
Next J
Erf_Int = S * Pas / Sqr(Atn(1#))
End Function

1.2.4  Comparaison

  Ce programme VB5 affiche erf(x) en appliquant chacune des 3 méthodes.

  La concordance entre l'intégration numérique et le développement en série  est parfait jusque x = 3.5. Ce dernier exigerait le recours au calculs en multiprécision pour les valeurs supérieures.

  A partir de x = 4.5 intégration numérique et développement asymptotique s'accordent à 10-12 près.

  La fiabilité de l'intégration numérique étant confirmée pour les petites et les grandes valeurs de x , elle sera préférée aux deux autres.

  Une telle précision est superflue pour les applications courantes.

  Elle sera indispensable pour calculer la probabilité qu'un évènement se produise au delà de 4 ou 5 sigma ou pour calculer une concentration en grande profondeur après diffusion à concentration de surface constante.
 

1.3 Table erf(x) de  0  3.5

 

1.4 Téléchargement

Télécharger ERF_exe

  Ce fichier est compressé mais auto- extractible.

  Après avoir cliqué, l'acceptation du chargement ouvrira cette fenêtre.

  En cliquant  "Décompresser"  vous l'installerez dans votre dossier "Program Files" (ou dans celui que vous indiquerez).

  Le dossier ERF.exe contiendra :
- l'exécutable
- un raccourci (orientant vers C:\Program Files )
- 2 fichiers indispensables si Visual Basic 5 n'est pas installé sur votre disque dur.

  Si ce télé-chargement vous posait quelques problèmes, consultez d'abord le mode opératoire détaillé.


Extraire la page pour l'enregistrer ou l'imprimer