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

Mathématiques Discussion :

[debutant]interprétation d'une équation [php]


Sujet :

Mathématiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut [debutant]interprétation d'une équation [php]
    Bonjour, je suis débutant en algo (mais moins en php ) et je cherche a faire un programme qui permettrait au gens de tracer une courbe (ou une droite)d'après son équation.

    Je sais faire du php, et donc, tracer la courbe en elle même pourra sefaire sans trop de problème (via imagesetpixel).

    Mon problème viens du fait que je dois analyser l'équation.

    Pour une équation simple, de type x+2, je peux m'en sortir avec une sorte de eval dans une fonction (en remplacant tous les x par des $x, php l'interprète tout seul).

    Mais cette "solution" est vraiment... écoeurante coté sécurité (je peux faire plein sde verif, je sais que eval est un gouffre de sécurité ), et en plus elle ne fonctionne plus dèq que l'on commence a rentrer dans des équations complexe (déjà pour le symbole ², ça ne marche plus).

    Ce que je cherche a faire pourrai ressembler a ce qu'il y a sur les calculatrices graphiques.
    Est-ce que vous connaissez un algorithme pour pouvoir traiter une chaine de ce type (je subodore du récursif en veux tu en voila).

    Si non, connaitriez vous une bibliothèque ou une fonction qui réalise directement ceci (du type $y = equation($equation, $x); avec $equation qui contient l'équation et $x la valeur de x).

    Merci beaucoup pour votre aide

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Pas moyen de faire propre sans passer par une description des expressions à l'aide d'une grammaire type BNF par exemple.
    Ensuite écrire un parser (analyseur syntaxique).
    L'évaluateur travaille à partir de la structure retournée par le parser.
    On ne peut guère faire l'économie de cette méthodologie désormais classique.
    On doit pouvoir trouver des exemples simples traités (voir les cours de Lisp). Il suffit ensuite de complexifier en ajoutant de nouvelles règles
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    pour des equaions ce n'est pas forcement la peine de sortir la grosse artillerie, mais en gros l'idee est d'ecrire une fonction recursive qui "separe" les differentes parties de ton equation par rapport aux symboles, en respectant priorités et parentheses. cette fonction te permettra de stocker ton equation sous forme d'arbre qui rend facile l'evaluation.

    par exemple, l'equation 3*x+2 pourrait etre representée par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                         +
                        /   \
                      *      2
                    /  \
                  3     x

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    Merci beaucoup jobherzt

    Je vais pouvoir progresser avec ça (je comprend ce que tu dis, et l'idée me plait).

    je ne comprennais rien du tout sinon ^^

    bon, je laisse le topic sans mettre résolu, car je subbodore que j'aurai plein de problème ^^.

    P.S: hors sujet mais bon: j'ai vu comment on fait de la compressions sans perte, et je suis abasourdi: c'est tellement inteligent est simple en même temps que ça force le respect

  5. #5
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    pour des equaions ce n'est pas forcement la peine de sortir la grosse artillerie, mais en gros l'idee est d'ecrire une fonction recursive qui "separe" les differentes parties de ton equation par rapport aux symboles, en respectant priorités et parentheses. cette fonction te permettra de stocker ton equation sous forme d'arbre qui rend facile l'evaluation.
    La grosse artillerie n'est peut-être pas une si mauvaise idée que cela en utilisant les outils adaptés (flex et/ou bison), on résoud le problème sans trop de difficulté et de façon relativement rapide. Pour ce qui est de l'écriture de la fonction récursive, elle n'est pas forcément si triviale que ça.

  6. #6
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    oui oui bien sur, je voulais dire "si on part de 0". et puis ca peut etre un exercice interressant.

    j'en profite pour dire aussi que j'ignore si (f)lex/(bison)yacc sont dispo pour PHP, et puis ils ne sont peut etre pas installé sur son hebergeur (si tant est que ca soit necessaire)... enfin bref, c'etait juste pour apporter un peu d'eau au moulin

Discussions similaires

  1. Interprétation d'une équation
    Par Alfred15 dans le forum Mathématiques
    Réponses: 9
    Dernier message: 08/09/2009, 11h01
  2. Obtenir de xslt qu'il affiche une variable php sans l'interpréter
    Par Dendrite dans le forum XSL/XSLT/XPATH
    Réponses: 16
    Dernier message: 15/07/2008, 11h51
  3. Interpréter une équation
    Par Maheu dans le forum Langage
    Réponses: 2
    Dernier message: 25/06/2008, 18h53
  4. Réponses: 2
    Dernier message: 04/08/2006, 14h23
  5. Réponses: 2
    Dernier message: 12/07/2006, 11h13

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