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 :

Comparer deux expressions mathématiques


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 123
    Par défaut Comparer deux expressions mathématiques
    Salut à tous,

    Pour un projet perso, j'ai besoin d'un algo (éventuellement code Python) pour comparer des expressions pour savoir si se sont les mêmes à l'ordre près des opérations par exemple :

    "2x^2-x+1" = "1-x+2x^2" = "-x+x^2*2+1" mais différent de "x^2+x^2-x+1"

    J'ai tenté de passer par un arbre (AST en Python) en tentant d'inverser les fils gauches et droit lorsque c'est un opérateur commutatif, mais il me manque des cas bien sûr

    Si vous avez des idées je suis preneur !

    Merci d'avance,

    Vincent

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bonjour

    "2x^2-x+1" et "2*x^2-x+1" sont-ils identiques ?

  3. #3
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 581
    Par défaut
    Bonjour,

    Je présume que le but n'est pas d'aller jusqu'à vérifier que (x+1)*(y-1) = x*y -x + y - 1 et que cela se limite aux polynômes après expansion.

    Il y a certes la démarche analytique (arbres, classements, consommation des degrés identiques…), mais il y a aussi la possibilité de l'évaluer si on dispose d'une fonction evalf (évaluation de formule).
    Avec autant d'évaluations sur des valeurs différentes que le degré max plus 1, si les résultats sont identiques c'est bon. A la première différence c'est mauvais. Dans le cas des polynômes multivariés le nombre de tests pourrait cependant aller jusqu'au produit des degrés max.

    Comme l'a remarqué Flodelarab, la syntaxe est un autre problème. Accepter 2*x, 2.x, x +x et 2x mais pas x2 est déjà délicat, mais il y a aussi x^5 et x**5 et les = -x + y comme = y - x. Et je suis sûr d'en oublier.
    Il me semble donc qu'il faut d'abord définir les formes acceptables.

    Salutations

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 123
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    @Flodelarab : Oui "2x^2-x+1" et "2*x^2-x+1" sont identiques pour ce que je voulais faire.
    @Guesset : L'idée d'évaluer ne fonctionne pas car je voulais vérifier que la réponse était donnée sous forme réduite donc par exemple a+b+b != a+2b

    Bref, j'ai trouvé une solution (mais sans l'algo) avec Python est Sympy : sympy.sympify('x^2+x+x-1', evaluate = False).as_ordered_terms()

    Merci,
    Vincent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/01/2005, 19h54
  2. comment comparer deux dates?
    Par billoum dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/08/2004, 21h08
  3. [STRUTS] Tag Equal, comparer deux variables
    Par logica dans le forum Struts 1
    Réponses: 2
    Dernier message: 04/06/2004, 12h01
  4. comparer deux string
    Par jul54 dans le forum MFC
    Réponses: 3
    Dernier message: 22/04/2004, 15h50
  5. [date] Comparer deux formats différents
    Par terziann dans le forum Requêtes
    Réponses: 17
    Dernier message: 21/07/2003, 15h21

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