Calcul d'exponentiel ( précision modifiable)

Contenu du snippet

En utilisant la décomposition d'exponentiel en série de Taylor et en faisant varier le N on peut avoir plus de précision de calcul.
Ceci dit, les fonctions utilisée seront basée sur la formule :

Exp := x -> limit(
sum(x^k/factorial(k), k = 0 .. N),
N = infinity);

Source / Exemple :


package ma.scupper.mathematics.analysis.functions;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.MathContext;

public class Math {

    public static BigInteger fact(BigInteger N){
        BigInteger X = N;
        if(N.compareTo(BigInteger.ONE)<=0){
            return BigInteger.ONE;
        }else{
            while(N.compareTo(BigInteger.ONE)==1){
                X = X .multiply((N = N.subtract(BigInteger.ONE)));
            }
        }
        return X ;
    }

    public static BigDecimal exp(BigDecimal X,int n){
        BigDecimal sol = BigDecimal.ZERO;
        int i = 0;
        while(i<n){
            BigDecimal fact = new BigDecimal(fact(new BigInteger(""+i)).toString());
            sol = sol.add(X.pow(i).divide(fact, MathContext.DECIMAL128));
            i++;
        }
        return sol;
    }

    public static void main(String[] args){
       System.out.println("Une approximation de 'e' est :");
       System.out.println(Math.exp(BigDecimal.ONE, 512));
    }

}

Conclusion :


Comme résultat, on a :

run:
Une approximation de 'e' est :
2.718281828459045235360287471352662534187335061208892853797762322506268877836352226461490684087799214387760549345830852702867058062785782957018763886394568657179490796938102931705261316129775668659823552016284515197243973868460846206948356045980848897563310344908264292399588399295233782618669955532376863811203071047510306047893241154736852670330508229646343933082939191901665025418745931647745317117553068339401201877931931564835607810594725317832138035157187323496320016332318340413725117468584336650776557863433196763851847464173221278061568451929721417360785571864907034934295504810659777221655424296144571964727552411633419257185848343130941813917004816420077843639286273263356207403725506310654613254894033897860798205759960928158621702155133124751959083681594942639707461684216935324687722721715886534712200610332997937318017919245233899121605709862124470652266522379712441322008390760554080077900029034931666355189037453836270849228918823551060457852826134976940205714464151761253407635948388436847456243294223307476360294482436827651631274254453936594262594360058581428362875871509526747346205363302517928924609301239721223457284016018537457015613499304986225103604272721693695298433976175
BUILD SUCCESSFUL (total time: 2 seconds)

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.