Les Snippets

Connexion

Exponentiation dichotomique

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 08/05/2007 18:34:27 et initié par Shakan972 [Liste]
Date de mise à jour : 01/03/2008 22:43:36
Vue : 2863
Catégorie(s) : Maths
Langages dispo pour ce code :
- Python
- VB6, VBA
- ObjectiveCaml
- Delphi 5
- C, C# 1.x, C++, Java



Langage : Python
Date ajout : 08/05/2007
Posté par Shakan972 [Liste]
n=1    # Nombre sur lequel porte le calcul exponentiel dichotomique
x=1
while v<>1:
    if v%2==0:
        v=v/2
        n=n+n
    else:
        x=x+n
        n=n+n
        v=(v-1)/2
    print "(",x,",",n-1,",",v,")"
print "\na^",x," * a^",n-1," = a^",(x+n)-1,"\n"
Remarque :
Modifier la valeur n pour tester le programme, bien qu'avec la valeur 1 le programme marche aussi ;)
Langage : VB6 , VBA
Date ajout : 17/12/2007
Posté par us_30 [Liste]
Function Puissance(ByVal Nb1 As Double, ByVal Expo As Long) As Double 
' EXPONENTIATION RAPIDE 
' Appliqué au calcul d'une puissance entière d'un nb 
 
'   Paramètres 
    Dim Signe As Integer 
     
'   Traitement pb de signe 
    Signe = Sgn(Expo) 
    Expo = Abs(Expo) 
     
'   Cas triviaux 
    If Expo = 0 Then Puissance = 1: Exit Function 
    If Expo = 1 Then Puissance = Nb1: Exit Function 
 
'   Algo 
    Puissance = 1 
    Do 
        If Expo And 1 Then Puissance = Puissance * Nb1 
        Expo = Expo \ 2 
        Nb1 = Nb1 * Nb1 
    Loop While Expo > 1 
    Puissance = Puissance * Nb1 
 
'   Renvoi 1/puissance si exposant négatif 
    If Signe < 0 Then Puissance = 1 / Puissance 
 
End Function
Remarque :
Exponentiation rapide peut-être appliqué à bien d'autres exemples, comme pour le calcul d'une puissance de matrice...
Langage : ObjectiveCaml
Date ajout : 28/02/2008
Posté par coucou747 [Liste]
let estpair a = if a land 1 =1 then false else true;;
(*version naive*)
let rec exp a b =
    if b=0
    then 1
    else if estpair b
        then exp (a*a) (b lsr 1)
        else a * (exp a (b-1) );;
(* ou en tail rec *)
let exp a b =
    let rec f acc a b =
        if b=0
        then acc
        else if estpair b
            then f acc (a*a) (b lsr 1)
            else f (acc * a) a (b-1)
    in f 1 a b;;
Langage : Delphi 5
Date ajout : 29/02/2008
Posté par coucou747 [Liste]
DateMAJ : 01/03/2008
function puissance(x,n:longint):longint;
var intermediaire:longint;
begin
    if n=1 then
        puissance:=x
    else
        begin
            intermediaire:=puissance(x,n div 2);
            if (n mod 2)=0 then
                puissance:=intermediaire*intermediaire
            else
                puissance:=intermediaire*intermediaire*x;
        end
end;
Remarque :
tests effectues sous freepascal

NB : Delphi propose la fonction power incluse dans l'unité Math :
functionPower(constBase,Exponent:Extended):Extended;
Langage : C# 1.x , C , C++ , Java
Date ajout : 30/03/2008
Posté par coucou747 [Liste]
int puissance(int a, int b){
    if (b==0) return 1;
    if (b==1) return a;
    if ( (b & 0x01 ) == 0){
        int c = puissance(a, b >> 1);
        return c * c;
    }else{
        return a * puissance(a, b - 1);
    }
}

Snippets en rapport avec : Exponentiation, Dichotomie



Codes sources en rapport avec : Exponentiation, Dichotomie

{C / C++ / C++.NET} MEILLEURE MÉTHODE POUR CALCULER UN PUISSANCE
la méthode la plus naive pour calculer par ex: x^15 = x*...*x(14 operations) ---------- mieux: x...

{JAVA / J2EE} TRI TABLEAU D'ENTIER PAR DICHOTOMIE
Cette classe lit des entiers initialisé dans un tableau à 1 dimension, et les place dans un autre ta...

{Delphi} MATCHESMASK ET LES EXPRESSIONS RÉGULIÈRES.
A part MaskEdit, on ne peut pas dire que Delphi nous offre beaucoup d'outils pour s'initier aux expr...

{Delphi} RECHERCHE DICHOTOMIQUE (EXEMPLE AVEC UN TABLEAU)
Utilisation pure et dur de la recherche dichotomique sur un tableau de 40 000 cellules. Principe ...

{Delphi} FONCTION DICHOTOMIE CALCUL NUMÉRIQUE
un simple programme ecrit en pascal définit la méthode dichotomie...

{Visual Basic, VB6, VB.NET, VB 2005} PROGRAMME DE DICHOTOMIE AVEC PRÉCISION DE 10^-30 SOIT 28 CHIFFRES APRÈS LA VIRGULE
Bah en fait c'est un programme qui permet de trouver un encadrement à 10^-n près d'une racine soluti...

{Visual Basic, VB6, VB.NET, VB 2005} EXPONENTIATION RAPIDE
Ce code donne la valeure de l'exposant d'un nombre, l'ordre de grandeur et la rapidité sont de l'ord...

{C / C++ / C++.NET} RECHERCHE DE ZÉRO D'UNE FONCTION PAR DICHOTOMIE
C'est ma première source alors je vous demande d'etre indulgent...;) Voila le titre est assez com...