IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

fonction power avec une puissance non entière


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut fonction power avec une puissance non entière
    Hello,
    je dois trouver un moyen de calculer x à la puissance y avec y en tant que nombre rationnel.
    vu que c'est pour un module du kernel linux je ne peux pas faire un include de math.h ou d'autres bibliothèques.

    donc est-ce que quelqu'un aurait par hasard une idée de comment faire ? ou comment au moins avoir une valeur approchée de x^y ?

    Merci.

  2. #2
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par atshoom
    Hello,
    je dois trouver un moyen de calculer x à la puissance y avec y en tant que nombre rationnel.
    vu que c'est pour un module du kernel linux je ne peux pas faire un include de math.h ou d'autres bibliothèques.

    donc est-ce que quelqu'un aurait par hasard une idée de comment faire ? ou comment au moins avoir une valeur approchée de x^y ?

    Merci.
    x^y = exp(y * log(x))
    mais tu ne veux pas des exp et des log n'est-ce pas ?
    et y est rationnel donc y = p/q
    essaye par Newton

    il te faudra avant une procédure pour calculer x^p, p entier. tu peux évidemment le faire par multiplication successive mais c'est pas idéal (complexité en p). tu peux le faire en temps quasi-constant (complexité log(p)) en décomposant x^p en un produit de la forme produit(x^(2^i)) avec i bits de l'écriture binaire de p.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    fonction puissance (x, p)
    r = 1 ; % le résultat
    pour tous les bits i de p, en partant du bit de poids faible : faire :
        si i == 1, faire :
            r = r*x ;
        fin si
        x = x * x ;
    suivant
    retourner r ;
    fin fonction.
    une fois que tu as cette fonction puissance, tu cherche par la méthode de Newton à calculer a^(p/q)
    pour cela tu résouds l'équation en x : x = a^p/q
    soit : a^p = x^q
    donc tu veux annuler la fonction f suivante :
    f(x) = x^q - a^p
    dont la dérivée en x est la suivante :
    f'(x) = q*x^(q-1)

    ce qui se résoud comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fonction puissance_rationelle(a,p,q)
    x = 1 ; % résultat
    répéter :
       f = puissance(x,q) - puissance(a,p) ;
       fprime = q * puissance(x, q-1) ;
       x = x - f/fprime ;
    tant que f <> 0
    retourner x ;
    fin fonction.
    "c'est "sans garantie du gouvernement" (si ya des bêtises, jdis-moi : j'éditerais pour pas laisser traîner des faux algos ssur le forum)
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

Discussions similaires

  1. Réponses: 8
    Dernier message: 07/04/2008, 12h02
  2. Réponses: 2
    Dernier message: 03/07/2007, 08h38
  3. [debutant] get image avec une variable non static
    Par laguna dans le forum Langage
    Réponses: 2
    Dernier message: 06/03/2006, 15h57
  4. [debutant]fonction "split" avec une chaine comme m
    Par EpOnYmE187 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/11/2005, 22h46
  5. fonctions stockées avec une table en argument
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 08/10/2004, 23h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo