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 :
- En nombres entiers ou décimaux
- En nom de constantes
- En symbole mathématique ou le nom de la fonction suivie par une parenthèse ouvrante.
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