Voici ce que j'avais fait sur ma TI92.
Il est toujours indispensable d'avoir un calcul formel pour certaines fonctions (notamment celle qui fait le calcul final pour déterminer l'ensemble de définition).
Tout le travail effectué est surtout de décomposer l'expression en sous-expressions...
J'ai joint un fichier "Lisez-moi.txt" expliquant grossièrement ce que fait chaque fonction... mais je n'ai pas documenté le format "RPN" que j'ai utilisé, et qui est un peu curieux. En particulier, j'ai remplacé les noms de fonctions usuelles par des simples caractères peu utilisés (numérotés de 1 à 17), ce qui fait apparaître des choses "bizarres" dans les résultats.
Certaines fonctions ne sont là que pour faire des tests sur d'autres (notamment la fonction "convert").
Je copie ci-dessous le "Lisez-moi" pour qui serait intéressé :
Show/Hide spoilerAfficher/Masquer le spoiler
Ceci est un groupe de fonctions destiné à étudier les fonctions d'après leur expression... sans utiliser de fonction de "découpage" de l'expression qui serait déjà présente dans le langage.
Voici un descriptif sommaire des différentes fonctions et des 2 listes.
Fonctions :
-----------
cond(rpn,vr) :
- arguments : une liste "rpn" représentant la mise sous forme RPN de l'expression (issue de la fonction "in2post") ainsi que "vr" qui peut soit être le nom d'une variable, soit être une liste de 2 éléments, le premier étant le nom d'une variable et le 2ème étant une condition vérifiée par cette variable (sous la forme d'un test)
- résultat : ensemble de définition de l'expression (donnée sous forme RPN) pour la variable donnée
- dépendances : utilise les fonctions "nparts", "parts" et "post2in"
convert(ll) :
- arguments : une liste "ll" de symboles
- résultat : une liste convertie en fonctions représentées par ces symboles
- dépendances :utilise la liste "fnc"
def(ff,vr) :
- arguments : une expression "ff" et une variable "vr"
- résultat : ensemble de définition de l'expression (donnée sous forme RPN) pour la variable donnée
- dépendances : utilise les fonctions "cond" et "in2post"
in2post(ex) :
- arguments : une expression "ex"
- résultat : une liste représentant la mise sous forme RPN de l'expression
- dépendances : utilise les fonctions "makestr" et "prior" et la liste "fnc"
ispart(ex,vr) :
- arguments : une expression "ex" et une variable "vr"
- résultat : True ou False suivant que la variable est présente ou non dans l'expression
- dépendances : utilise la fonction "makestr"
Remarque : le résultat "True" n'est pas fiable à 100% mais est suffisant pour les fonctions qui l'utilisent
makestr(ex) :
- arguments : une expression "ex"
- résultat : la même, convertie en chaîne de cacartères si elle ne l'était pas déjà
- dépendances : aucune
nbpart(ex,vr) :
- arguments : une expression "ex" et une variable "vr"
- résultat : le nombre de fois que la variable "vr" apparaît dans l'expression "ex"
- dépendances : utilise la fonction "makestr"
nparts(rpn) :
- arguments : une liste "rpn" représentant la mise sous forme RPN de l'expression (issue de la fonction "in2post")
- résultat : un entier représentant le nombre d'arguments de la dernière fonction apparaissant sur la pile de la RPN
- dépendances : utilise la fonction "ispart" et la liste "fnc"
parts(rpn,nb) :
- arguments : une liste "rpn" représentant la mise sous forme RPN de l'expression (issue de la fonction "in2post") et un entier "nb"
- résultat : une sous-liste de la précédente, représentant la "nb"-ème partie de l'expression
- dépendances : utilise la fonction "nparts"
post2in(ex) :
- arguments : une liste "ex" représentant la mise sous forme RPN de l'expression (issue de la fonction "in2post")
- résultat : l'expression représentée par cette liste
- dépendances : utilise la fonction "prior" et la liste "fnc"
prior(ch) :
- arguments : un caractère "ch"
- résultat : un entier représentant le degré de priorité associé à ce caractère
- dépendances : la liste "fnc"
Listes :
--------
fnc : liste des fonctions mathématiques reconnues par les fonctions ci-dessus
cfn : liste de chaînes de caractères représentant des conditions utiles pour déterminer les ensembles de définition