Approche de la fonction d'erreur par une somme fini {avec une erreur <= 10^(-12)}

Contenu du snippet

La fonction d'erreur peut-être formulé par la somme infini suivante de n = 0 jusqu'à n-> infini:

Erfc(x)=1-(1/sqrt(Pi))*SUM( [ ((-1)^n) * x^(2*n + 1)] / [ (2*n + 1) * n! ] )

mais lorsque x->infini on pourrait avoir une approximation de erfc(x) par :

(1/sqrt(PI))*[e^(-x^2)]*((1/x)-(1/(2*x^3))+(3/(4*x^5))-(15/(8*x^7)))

Source / Exemple :


/**
 *


 *

  • /
public class Approximation_Erfc { public double factorielle(long n){ double fact=1; if(n<0){ fact = 0; }else{ if(n==0){ fact = 1; }else{ fact= factorielle(n-1)*n; } } return fact; } public int signeN(long n){ int signe; if(n%2==0){ signe=1; }else{ signe=-1; } return signe; } public double p(double x,long n){ double pp; pp=Math.pow(x,n); return pp; } public double termeN(double x, long n){ double terme; terme=signeN(n)*p(x,2*n+1)/((2*n + 1)*factorielle(n)); return terme; } public double approximation(double x , long n){ double approx,termen; if(Math.abs(x)<=5){ if(n<0){ approx=0; }else{ if(n==0){ approx = x; }else{ approx = approximation(x,n-1) + termeN(x,n); } } }else{ approx = (1/Math.sqrt(Math.PI))*p(Math.E,-(long)p(x,2))*((1/x)-(1/(2*p(x,3)))+(3/(4*p(x,5)))-(15/(8*p(x,7)))); } return approx; } public double Erfc(double x , long n){ double fact, erfc; fact = approximation(x, n); erfc =(1-(2/(Math.sqrt(Math.PI)))*fact); return erfc; } public long maxExpErfc(double x){ long k; if(Math.abs(x)>=1){ if(Math.abs(x)<=5){ k=(long)(((307/Math.log10(x))-1)/Math.E); }else{ k=30; } } else{ k=14; } return k; } public static void main(String[] args){ long maxExp; double x = 5.1; double fact; Approximation_Erfc obj = new Approximation_Erfc(); maxExp=obj.maxExpErfc(Math.abs(x)); fact = obj.Erfc(x,maxExp); System.out.println("Erfc("+x+") = "+fact); } }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.