Comprendre le mécanisme pour du calcul formel ? - Algo - Programmation
Marsh Posté le 13-09-2007 à 14:06:19
en deux mots : en gros dans un logiciel de calcul formel, il y a deux phases :
1- l'analyse syntaxique (parsing en anglais). C'est ce qui te permet de transformer ta chaine de caractères en un ensemble d'objets (variables, opérateurs, ...) qui ont un sens. C'est la phase que tu décris dans ton post, et qui est commune à peu près à tous les langages interprétables par une machine (donc on mettra grosso modo les memes techniques en jeu pour du calcul formel que pour de la compilation de langage C ou autres)
2- les techniques de calcul symbolique elles-même (genre factorisation, développement, dérivation, intégration, évaluation, ...). C'est là que se situe le coeur du logiciel de calcul formel, et c'est là qu'on utilise des techniques très spécifiques (qu'on ne retrouvera pas dans un compilateur C par exemple).
Si tu dois faire un dossier sur le calcul formel, je pense qu'il ne faut surtout pas que tu oublies de parler de la deuxième partie. Le parsing n'ayant qu'un rapport lointain avec le sujet (puisqu'il est uniquement nécessaire à cause de l'interface homme-machine sous forme de chaines de caractères).
Marsh Posté le 14-09-2007 à 09:47:40
Bonjour francesco et merci pour ces premiers éléments de réponse.
En effet, le parsing, est la solution pour interprêté une chaine en expression mathématique qui a un sens.
Et bien entendu, je n'échape pas à la règle que je dois connaitre les techniques du calcul formel. Où est-ce que je peux trouver pour voir ces exemples ?
Cela m'aidera bien
Merci et bonne journée
David
Marsh Posté le 21-11-2007 à 23:26:12
Je te conseillerais d'aller voir du côté de la théorie des langages, et en pratique de faire mumuse avec lex (analyseur syntaxique) et yacc(analyseur grammatical) (flex/bison pour les version libres).
Marsh Posté le 22-11-2007 à 08:31:45
mupad (version OS de maple) a pas son moteur de CF vaguement lisible ?
Marsh Posté le 13-09-2007 à 13:07:25
Bonjour @ tous !!!
Pour préparer un dossier sur les logiciels de calcul formel, je dois en expliquer le mécanisme.
Le point de départ est le suivant : un utilisateur saisie une expression mathématique contenant des symboles (opérateurs, fonctions mathématiques, lettres latines ou grecques, ...). Cette expression est de type chaine de caractères et non numérique bien entendu.
L'utilisateur valide sa formule et le logiciel lui retourne un résultat fomel (sous forme réduite ou développée ; conservations des symboles mathématiques tel les fractions, les racines carrés, les exposants, etc. ; les fonctions ...). Ce résultat apparait sous forme de chaine également.
Alors comment à partir d'une chaine de caractère on peut obtenir un résultat.
D'après mes recherches, j'ai trouvé un seul site traitant le fonctionnement d'un logiciel de calcul formel (http://www.studyvox.ups-tlse.fr/mathweb/mathweb_3.html). Certes il explique les grandes lignes mais c'est très flou.
Je comprends que la chaine est sauvegardé dans une variable. Cette variable est analysée caractère par caractère (de gauche à droite). L’étape suivante consiste à trouver dans la formule : les constantes, les fonctions, les nombres et les opérateurs. La recherche est effectuée en utilisant un pointeur sur la chaîne, puis en analysant successivement les symboles rencontrés, en incrémentant le pointeur.
On place dans une liste les symboles mathématiques comme les opérateurs (+-÷⁄×*( )[ ]{ }) qui permet de séparer la formule mathématique. Quand on rencontre un symbole mathématique qui ne joue pas le rôle de séparateur, on passe aux caractères suivant jusqu’au prochain séparateur (un opérateur mathématique).
L’expression mathématique est séparée en 3 types :
Par cette convention, il est possible de traiter les formules mathématiques. Par exemple, l’écriture d’une fraction fait intervenir 2 nombres, séparés par l’opérateur slash « / ». Pour effectuer des calculs relationnels, il faut bien reconnaitre les fractions avec leur numérateur et leur dénominateur.
Pour les puissances, il faut choisir une convention pour écrire la puissance d’une expression. On peut convenir un seul symbole de puissante tel que "^" suivi d’un entier.
Une fois que les conventions d’écriture des symboles mathématiques, il faut mettre en place des subroutines qui permettront d’effectuer les calculs numériques et les calculs formels.
Les calculs nécessitent de retrouver les parenthèses imbriquées, les fonctions et les opérateurs qui opèrent sur ces parenthèses, trouver les résultats partiels et les imbriquer pour trouver le résultat final. Ces opérations sont délicates car elles nécessitent de simplifier les résultats partiels et de les normaliser, pour que l’écriture de la formule mathématique soit toujours conforme aux conventions adoptées. Cette simplification nécessite le plus gros des travails en termes de programmation des calculs numériques et formels.
Voilà mais là je ne comprends plus trôt où va ce mécanisme.
Si l'un d'entre vous peux m'expliquer en terme claire et aussi avec des termes informatiques (c'est pour ma culture ) ou me communiquer des liens WEB qui traite du mécanisme. Je serai ravi.
Pour info, le mécanisme n'est pas uniquement bordé aux logiciels de calcul formel mais ils peuvent concernés des logiciels développés en C/C++/ Pascal objet etc...
En attendant des réponses, je vous souhaite de passer une très bonne journée.
David
Message édité par mfworld le 16-09-2007 à 18:22:29