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

C Discussion :

Arbre et dérivés de fonctions


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 117
    Points : 62
    Points
    62
    Par défaut Arbre et dérivés de fonctions
    Bonjour,
    J'ai un problème en cours que je n'arrive pas à résoudre. J'ai une expression arithmétique préfixé (c'est à dire que 3x+9 -> +*3x9) qui doit être représenté sous la forme d'un arbre :
    +
    / \
    * 9
    / \
    3 x
    Le problème est que je dois calculer la dérivé à partir de cette arbre pour obtenir un autre arbre représentant cette dérivé et je n'arrive pas du tout à trouver la marche à suivre. Si quelqu'un pourrai m'aider, ça ne serait pas de refus !!!
    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    En gros, tu dois faire du calcul formel sur ton arbre?

    Pour ça, je pense qu'il faut fragmenter ton expression et reconnaître des motifs.
    En gros, au niveau supérieur, tu as forcément une addition, dont tu dois séparer les termes: De a+b+c+d, tu dois obtenir quatre arbres correspondant à a, b, c et d.

    Ensuite, reconnaître des motifs dans ces arbres: typiquement, a.x, a.x^n, etc.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 35
    Points
    35
    Par défaut
    Si l'expression est sous forme préfixe, on peut facilement construire un arbre en la lisant de gauche à droite.

    Et une fois que vous avez l'arbre, il suffit de le dériver récursivement, chaque type de noeud se dérivant à sa façon :
    • deriver( A + B ) -> deriver( A ) + dériver( B )
    • deriver( A * X ) -> deriver( A ) * B + A * deriver( B )
    • deriver( X ) -> 1
    • deriver( constante ) -> 0
    • etc.


    On peut éventuellement rajouter une passe de simplification :
    • 0 * A -> 0
    • 0 + A -> A
    • etc.

  4. #4
    Membre habitué

    Inscrit en
    Août 2008
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 177
    Points : 125
    Points
    125
    Par défaut
    je pense qu'il faut que tu commences par implémenter un algorithme qui te permettent de lire n'importe quelle de ces expressions.

    Dans la formule données, après ton dernier opérateur tu as directement les deux symboles à lui assembler, puis tu remontes récursivement par niveau (à gauche le nouvel opérateur, à droite le nouveau symbole et ainsi de suite).

    Ensuite construire dérivée ne devrait pas poser trop de problème comme te l'expliques remy72, l'arbre non plus, à toi d'organiser tes données dans un modèle cohérent (tableaux, strucures, liste chainées etc.)

Discussions similaires

  1. Générer un arbre d'appel des fonctions
    Par droledenom dans le forum MATLAB
    Réponses: 1
    Dernier message: 02/07/2011, 17h34
  2. Affichage d'arbre et création de fonctions
    Par debmaths dans le forum Scheme
    Réponses: 5
    Dernier message: 07/04/2011, 18h18
  3. Fonction taille et hauteur arbre binaire de façon itérative
    Par kalthoum dans le forum Autres langages
    Réponses: 1
    Dernier message: 04/12/2006, 19h55
  4. [Fonction](recursive) Problème pour dresser un arbre
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 21/11/2006, 13h35
  5. Fonctions récursives pour parcourir un arbre
    Par mikedavem dans le forum C
    Réponses: 4
    Dernier message: 05/06/2006, 12h00

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