Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1426 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  gestionnaire d'expressions mathématiques

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gestionnaire d'expressions mathématiques

n°1644883
barette1
Peace and Love
Posté le 18-11-2007 à 19:09:07  profilanswer
 

Bonjour,
je dois créer un interpréteur simplifié d’expressions symboliques mathématiques.
Par exemple si l'utilisateur tape Deriv(4*Ln(x)) alors le programme retourne 4/x ou;  Somme(1+ ... + n) Rép. : n*(n+1)/2; Factor(a*b + a*c) Rép. : a*(b+c)
où a, b, c, ..., n, ..., x, y et z sont des variables symboliques autorisées.
 
Je ne vois pas du tout comment faire donc j'aurais besoin d'un peu d'aide au moins pour m'aiguiller au départ car je suis vraiment coincé la!
Merci d'avance

mood
Publicité
Posté le 18-11-2007 à 19:09:07  profilanswer
 

n°1651364
BifaceMcLe​OD
The HighGlandeur
Posté le 30-11-2007 à 15:11:43  profilanswer
 

Les programmes ne sont généralement pas capables de manipuler des expressions mathématiques comme les humains les écrivent.
 
Il faut donc passer par une représentation interne de l'expression.
La structure la plus classique est la structure d'arbre, parce que les expressions mathématiques sont composés d'opérateurs (+, -, *, /, ...), unaires, binaires ou n-aires (cad toujours à 1, 2 ou n arguments ; exemple : l'opérateur somme, c'est le + binaire). La traduction sous forme d'arbre est donc assez naturelle (attention aux parenthèses au moment de "traduire" l'expression en l'arbre équivalent !).
 
Ainsi : ln(x) + 3 * 5 peut se représenter par l'arbre suivant :
      *
     / \
    +   5
   / \
  ln  3
 /
x
 
Gros avantages des arbres :
 - les priorités entre opérateurs s'expriment naturellement (par exemple, le fait que la multiplication s'applique toujours avant l'addition), puisque pour évaluer l'expression, on applique récursivement les opérateurs du haut de l'arbre (racine de l'arbre) jusqu'en bas (feuilles de l'arbre) ; et il n'y a plus de besoin de parenthèses
 - une manipulation de l'expression revient à manipuler un noeud, puis à refaire une manipulation similaire à chaque sous-noeud. Par exemple, pour dériver l'expression ci-dessus, on commence par le noeud racine (opérateur *), et on applique la règle (u*v)' = u' * v + u * v'. Donc on fabrique une nouvelle expression avec les expressions :
    +
   / \
  ln  3
 /
x
et  
5
et leurs dérivées, que l'on calcule grâce à la récursivité.
 
Autre exemple, pour simplifier une expression (inévitable après une dérivation formelle), on applique des règles simples à chaque noeud de l'arbre. Exemple 0 * n'importe quel arbre = 0, 1 * n'importe quel arbre = cet arbre, 0 + n'importe quel arbre = cet arbre, n'importe quel arbre / 1 = cet arbre, etc.

n°1653843
barette1
Peace and Love
Posté le 06-12-2007 à 14:23:16  profilanswer
 

Merci pour ces infos qui m'aident. Mais je rencontre une petite difficultés, j'arrive très bien a rentrer des expressions du type a*(b+c) dans un arbre. Mais je n'arrive pas à introduire les ln, exp, cos, sin...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  gestionnaire d'expressions mathématiques

 

Sujets relatifs
probleme expressions regulieres phpcahier des charges choix CMS/gestionnaire contenu
Recherche Script Editeur WYSIWYG + Gestionnaire Media !besoin d'aide sur expressions régulieres
Faisabilité d'un projet : gestionnaire d'XMLModification dans des tags (expressions régulières)
Mathématiques et programmation.VB:représentation de courbes mathématiques
Tester le format d'une chaine & expressions régulieres[mySQL] Expressions rationnelles
Plus de sujets relatifs à : gestionnaire d'expressions mathématiques


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR